미리 준비되어 있어야 한다.
학기 중에 진행하고 있는 휴머노이드
방과 후 수업이다.
휴머노이드란 이족 직립 보행이
가능한 인간형 로봇이다.
학생들이 코딩을 해서 로봇을
구동시킨다.
코딩을 하기 전에 먼저 사진과 같이
현재 로봇에 세팅되어 있는
서보모터(Servo motor)의
영점을 잡아야 한다.
어렵지는 않으나 잘못 잡으면 로봇이
통제되지 않고 자기 맘대로 움직인다.
영점을 종종 잡아야 되는 이유는
로봇이 움직이다 넘어지면 충격을 받게 되어
서보 모터가 조금씩 재조정을 해야 될
필요가 생긴다.
그래야 원하는 대로 원하는 만큼
서보모터의 회전을 조종할 수 있다.
그럼 서보모터(Servo motor)란
무엇인지 알아보자.
학생들에게 서보모터가 뭐냐고 물으면
대개 Serve를 잘못 쓴 줄 알다.
아니면 Server로 알거나.
직류전원 모터(DC Motor)의 경우는
On/Off만 컨트롤 할 수 있다면
서보모터는 전류값의 변화를 통하여
미세하게 모터 회전을 조정할 수 있다.
EV3는 두 개의 라지 모터와
한 개의 미디엄 모터로 되어 있다.
아두이노는 두 개의 서보모터를 사용한다.
물론 제조사마다 서보모터의 개수가
다르겠지만 옆의 사진 속의 휴머노이드는
17개의 서보모터를 사용한다.
컨트롤 해야 될 모터의 개수가 17개란 뜻이다.
다행히 그룹으로 지정해서 사용하고
PTP(Point to Point) 방식으로 운용하기
때문에 생각보다 불편하지 않다.
서보모터의 회전을 제대로 이해해야 나중에
아날로그를 디지털로 변조(PWM)할 때
손쉽게 접근할 수 있다.
즉, 서보모터가 몇 개 없는 EV3나 아두이노는
운용이 쉽지만 인간의 관절을 대신하는 서보모터를
다수로 사용하는 휴머노이드는 움직임이 쉽지 않다.
이족 직립 보행하는 동물이 많지 않다는 것이
이족 직립 보행 자체가 어렵다는 것을 시사하며
이것이 바로 휴머노이드의 가장 어려운 점이다.
두 다리를 번갈아 가며 움직일 때 단순히
각 서보모터 값의 변화만 생각할 것이 아니라
무게 중심의 변화도 생각해야 인간처럼
자연스럽게 걸을 수 있는 것이다.
다행히 학생들이 고등학교 2학년 때 물리 1에서
동역학과 정역학 모두를 배우게 된다.
결국 속도, 가속도, 힘 등의 동역학과 함께
토크, 무게중심의 정역학을 학습하는 것이
로봇의 이족 직립보행을 코딩할 때 도움이 된다.
이런 점이 바로 코딩 교육과의 진정한 융합이다.
물리 수업 시간에 배운 지식을 로봇 구동에
적용시켜 볼 수 있는 것이다.
또한 로봇 구동을 통해 다시 물리 지식을
제대로 이해하고 체계를 잡을 수 있다.
물리 수업 시간에 배운 역학을
직접 사용해 볼 수 있는 세상.
그 세상이 얼마 안 있어서 온다.
하지만 현재 세상은 준비되어 있지 않다.
그리고 막상 그 세상이 도래했을 때
학교 현장에서 겪을 혼란이 눈에 선하다.
실제로 9년 전쯤 교사나 학생 모두에게 컴퓨터를
활용하여 센서로 측정하는 실험이 낯선 시절에
왼쪽 사진처럼 센서를 활용해서 물리 실험을 하였다.
MBL(Micro Based Laboratory)
즉, 컴퓨터를 기반으로 하는 실험을 한 것이다.
이렇게 이미 오래전 물리 수업 시간에 배운 역학을
직접 센서를 활용하여 실험해 보는 수업을
진행하였지만 데이터 분석이 어려워 실질적으로는 상위권 학생들만 참여하게 되었다.
실험을 하고 나면 자동으로 그래프를 그려 주지만
그 그래프가 의미하는 것을 분석하여 실험보고서를
작성해야 하는데 문제는 그 데이터나 그래프를
물리학적으로 기술하는 것이 쉽지 않다는 것이다.
그러니 실험 자체는 재미있어도 보고서 쓸 시간이
다가오면 학생들의 표정이 어두워진다.
즉, 기기만 발전한다고 다 되는 것이 아니다.
학생들이 미리 준비가 되어 있어야 하는 것이다.
새로운 수업 형태나 새로운 실험 형태를
받아들일 준비가 되어 있어야 효과적인 수업을
하게 되고 학생들이 물리 과목을 더욱 좋아하고
재미있게 받아들여 열심히 할 수 있다.
다만 여기서 착각하면 안 되는 중요한 점이 있다.
받아들일 준비가 되어 있어야 한다는 것은
물리 지식이 준비되어 있어야 한다는 것이 아니다.
지식이야 실험 직전에 알려 주면 된다.
요새 유행하는 '거꾸로 교실'처럼 실험 전에
관련 부분을 공부해서 오라고 하거나
수업 시간에 배운 것 중 실험과 관련된 부분을
복습해서 오라고 하면 된다.
그런데 이것도 잘 안 된다.
왜냐면 스스로 체계적으로 사고하는
훈련이 잘 되어 있지 않기 때문이다.
실험에 필요한 능력은 선행 지식이 아니다.
실험을 체계적으로 설계해서 실험한 후
결과를 논리적으로 분석하면 되는 것이다.
한 마디로 컴퓨팅 사고가 필요한 것이다.
그래서 코딩 교육이 필요하다.
그렇다면 물리만 코딩 교육과 상관이 있는가?
그것은 내가 물리 교사이기 때문에 물리를
예로 드는 것이지 코딩 교육은 다른 과목에도
충분히 활용될 수 있다.
왜냐면 컴퓨팅 사고는 물리에만 필요한 것이
아니기 때문이다.
다른 과목들에도 역시 논리적인 사고와
창의적인 사고가 필요하기 때문에
꼭 물리나 수학처럼 이과적인 과목만
상관이 있는 것이 아니라 다른 과목들에도
영향을 미칠 수 있다.
그러므로 코딩 교육의 학습효과를 적용하여
미리 준비한다면 MBL 실험처럼 센서를
활용하여 실험하고 그 결과를 분석할 때
학생들이 거부감을 갖지 않을 것이다.
정리하면, 컴퓨터를 기반으로 하는 실험처럼
발전된 기기를 가지고 실험할 때 거부감 없이
받아들이려면 실험 자체에 대한 거부감이
없어야 한다. 실험 자체도 어려워하는데
기기마저 발전해 있어 사용이 복잡하다면
학생들은 아예 포기해 버리기 때문이다.
가끔 물리 실험을 할 때 쉬운 개념을 가지고
쉬운 실험을 하게 되면 학생들이
매우 즐거워하는 것을 볼 수 있다.
이것은 학생들이 물리를 재미있어 하지만
막상 어렵다고 생각하기 때문에 접근 자체를
안 하려고 한다고 생각해 볼 수 있다.
그런데 이런 쉬운 개념도 복잡한 기기를 사용해서
실험하게 되면 학생들은 부차적인 기기 자체에
초점을 맞추게 되어 몰입을 하지 못하게 된다.
코딩 학습을 통하여 학생들이 논리적인 사고력을
키워 물리를 어려워하지 않고 쉽게 받아들인다면
기기가 발전해서 어려움을 겪더라도
얼마든지 실험을 진행할 수 있을 것이다.
게다가 물리의 경우에는 그 기기의 발전이
컴퓨터와 센서를 활용하는 방향이기 때문에
코딩 교육과도 잘 맞는다.
코딩 교육을 하다 보면 자연스럽게 컴퓨터와 친해져 물리나 다른 과목을 공부하는 데 도움이 될 것이다.