1편에서 설명한 P제어는 움직임의 효율을 크게 개선한다. P제어만 하더라도 초등학교 소프트웨어 교육에 적용한다면 학습자들이 로봇의 움직임을 구현하는데 만족도가 클 것이다. 그러나 엄밀하게 말하면 실제 목표값에 도달하지는 못한다. 실제 구현하게 되면 로봇은 일종의 진동운동을 하게 된다. 이 진동은 더 줄어들지 못하고 주행하는동안 계속 유지되는 일종의 "안정"된 상태를 유지한다. 그러나 만약 이안에 사람이 타승했다 가정하고 직진해야 하는 로봇이 계속 좌우 진동을 한다면 멀미가 날 것이다. "안정된 진동"현상을 개선하기 위해서는 특별한 방법이 필요하다. P제어에 I제어를 첨가한다. 로봇의 움직임을 상상하기 위해 탱탱볼로 비유해보고자 한다. 이 탱탱볼을 탄성계수가 매우 이상적인 형태로 원래 입사한 방향에 반사된다고 가정한다. 일단 ON/OFF제어를 이용한 탱탱볼은 다음 그림과 같이 움직일 것이다. 점선은 탱탱볼의 우리가 원하는 진행방향이고 아래 벽은 우리가 설정한 경계값, 그리고 위쪽 벽은 탱탱볼이 센서를 읽은 궤적이라 치자. 그리고 파란색 선은 탱탱볼이 실제로 움직인 모양을 표현했다. 이 비유는 약간의 오개념은 있지만 필자가 보기엔 그럭저럭 비슷하다. 만약 ON/OFF 제어를 P제어로 바꾼다면 이런 그림의 탱탱볼운동으로 바뀔것이다. 보라색 선은 오차를 계산해서 진행방향에 직진성을 더해가는 P제어의 지점들이다. 실제 경계선은 없지만 점선과의 거리에 의해 수정된 가상의 벽면이다. 이 벽면은 점점 그 거리가 오므라 드는가 싶더니만 마침내 평행하고 만다. 이렇게 평행한 상태의 오차를 "잔류편차" 또는 "잔차"라고 한다. (용어를 정확히 알아두는 것은 중요하다고 생각한다. 왜냐하면 더 발전된 내용을 검색하거나 남에게 설명할때 시행착오의 여지를 없애기 때문이다.) 잔차의 원인은 필자의 생각에는 이렇다. 1. 샘플링 주기- 센서의 샘플링 주기가 잔차의...