Skip to main content
Summary

목표와 현실 사이의 거리를 줄이는 기술

로봇팔이 컵을 집으려 한다고 상상해 보자. 로봇팔의 말단 장치, 즉 그리퍼는 컵 손잡이 앞까지 정확히 가야 한다. 그런데 실제 세계는 교과서 그림처럼 얌전하지 않다. 관절에는 마찰이 있고, 모터에는 미세한 지연이 있으며, 컵의 위치도 센서가 조금 틀리게 볼 수 있다. 로봇팔은 "여기로 가라"는 명령을 받았지만, 한 번에 정확히 그 위치에 도착하지 못할 수 있다.

이때 필요한 것이 제어다. 제어는 로봇이 원하는 상태와 실제 상태의 차이를 계속 줄이도록 명령을 조절하는 기술이다. 쉽게 말해, 제어는 로봇에게 "지금 조금 왼쪽으로 빗나갔으니 오른쪽으로 보정해", "속도가 너무 빠르니 힘을 줄여", "아직 목표에 못 갔으니 조금 더 밀어"라고 끊임없이 알려 주는 과정이다.

앞 장에서 우리는 바퀴 로봇과 로봇팔이 어떻게 움직이는지 살펴보았다. 그러나 움직임의 원리를 아는 것과 원하는 대로 움직이게 만드는 것은 다른 문제다. 바퀴가 굴러간다고 해서 로봇이 반드시 직선으로 가는 것은 아니고, 관절이 회전한다고 해서 로봇팔 끝이 반드시 목표 지점에 멈추는 것도 아니다. 로봇공학에서 제어가 중요한 이유가 여기에 있다. 제어는 계산된 움직임을 실제 세계에서 실현하게 해 주는 다리다.

제어란 무엇인가

목표값, 현재값, 오차, 제어 입력

제어를 이해하려면 네 가지 단어를 먼저 잡아야 한다. 목표값, 현재값, 오차, 제어 입력이다.

목표값은 로봇이 도달하고 싶은 상태다. 바퀴 로봇이라면 "초속 0.5미터로 달려라"가 목표값이 될 수 있고, 로봇팔이라면 "첫 번째 관절을 30도로 움직여라"가 목표값이 될 수 있다. 실내 온도 조절기라면 "방 온도를 24도로 맞춰라"가 목표값이다.

현재값은 로봇이 실제로 지금 가지고 있는 상태다. 엔코더가 측정한 모터 속도, IMU가 측정한 기울기, 온도 센서가 읽은 현재 온도 같은 값이다. 로봇은 목표만 가지고 움직일 수 없다. 자신이 지금 어디에 있는지, 얼마나 빠른지, 얼마나 기울었는지를 알아야 한다.

오차는 목표값과 현재값의 차이다. 아주 단순하게 쓰면 다음과 같다.

오차 = 목표값 - 현재값

목표 속도가 초속 1미터인데 현재 속도가 초속 0.7미터라면 오차는 0.3미터/초다. 목표 각도가 90도인데 현재 각도가 100도라면 오차는 -10도다. 여기서 부호도 중요하다. 오차가 양수인지 음수인지에 따라 더 밀어야 할지, 반대로 줄여야 할지가 달라진다.

제어 입력은 오차를 줄이기 위해 로봇에 넣는 명령이다. 모터에 더 큰 전압을 줄 수도 있고, 바퀴 속도를 낮출 수도 있으며, 로봇팔 관절에 반대 방향 토크를 줄 수도 있다. 여기서 토크는 회전시키는 힘이라고 생각하면 된다. 문손잡이를 돌릴 때 손이 손잡이에 주는 힘이 토크의 직관적인 예다.

이 네 가지는 한 번만 계산하고 끝나는 것이 아니다. 로봇은 움직이는 동안 계속 측정하고, 비교하고, 명령을 다시 만든다. 목표값을 정하고, 센서로 현재값을 읽고, 오차를 계산하고, 제어 입력을 보내고, 다시 현재값을 읽는다. 이 반복되는 고리가 바로 피드백 루프다.

피드백 루프: 로봇이 스스로 고치는 방식

피드백이라는 말은 결과를 다시 입력으로 되돌린다는 뜻이다. 로봇이 모터에 명령을 보냈다면, 그 결과로 실제 속도나 위치가 어떻게 변했는지 다시 확인한다. 그리고 그 결과를 바탕으로 다음 명령을 조정한다.

사람도 매일 피드백 제어를 한다. 컵을 집을 때 손이 컵보다 조금 왼쪽으로 가면 눈으로 보고 오른쪽으로 고친다. 계단을 오를 때 발이 예상보다 낮게 닿으면 다음 발걸음의 힘을 바꾼다. 자전거를 탈 때 몸이 왼쪽으로 기울면 핸들을 살짝 틀어 균형을 맞춘다. 우리는 이런 일을 너무 자연스럽게 해서 제어라고 부르지 않을 뿐이다.

로봇에게는 이 자연스러운 감각이 저절로 생기지 않는다. 로봇은 센서로 현재 상태를 읽어야 하고, 프로그램은 그 값을 해석해야 하며, 제어기는 모터 명령을 계산해야 한다. 여기서 제어기는 오차를 줄이는 계산 장치 또는 알고리즘을 뜻한다. 아주 단순한 규칙일 수도 있고, 복잡한 수학 모델을 사용하는 알고리즘일 수도 있다.

중요한 점은 제어가 "명령을 내리는 기술"이 아니라 "명령을 고쳐 나가는 기술"이라는 것이다. 처음 명령이 완벽하지 않아도 된다. 오히려 실제 로봇에서는 처음부터 완벽한 명령을 기대하기 어렵다. 대신 로봇은 계속 확인하고, 틀어지면 보정하고, 다시 확인한다. 그래서 로봇의 움직임은 직선으로 한 번에 끝나는 일이 아니라 작은 수정의 연속이다.

열린 루프 제어와 닫힌 루프 제어

제어에는 크게 두 가지 관점이 있다. 하나는 열린 루프 제어이고, 다른 하나는 닫힌 루프 제어다. 차이는 간단하다. 결과를 확인하느냐, 확인하지 않느냐이다.

열린 루프 제어는 명령을 보낸 뒤 결과를 다시 확인하지 않는 방식이다. 예를 들어 작은 바퀴 로봇에게 "왼쪽 바퀴와 오른쪽 바퀴에 같은 전압을 3초 동안 줘"라고 명령한다고 해 보자. 프로그램은 3초 동안 모터를 돌린다. 하지만 실제로 로봇이 얼마나 갔는지는 확인하지 않는다. 바닥이 미끄러웠는지, 한쪽 바퀴가 조금 더 마모되었는지, 배터리 전압이 낮아졌는지는 고려하지 않는다.

이 방식은 단순하고 빠르다. 센서가 없어도 되고 계산도 적다. 장난감 자동차처럼 정밀도가 크게 중요하지 않은 경우에는 충분할 때도 있다. 하지만 정확한 움직임이 필요한 로봇에는 한계가 분명하다. 같은 명령을 주어도 매번 같은 결과가 나오지 않기 때문이다.

닫힌 루프 제어는 결과를 확인하면서 명령을 조정하는 방식이다. 이번에는 모터에 엔코더가 달려 있다고 해 보자. 엔코더는 바퀴나 모터축이 얼마나 회전했는지 알려 주는 센서다. 로봇이 목표 속도를 초속 0.5미터로 정했다면, 제어기는 엔코더를 통해 현재 속도를 계속 확인한다. 현재 속도가 초속 0.4미터라면 모터 출력을 조금 높이고, 초속 0.6미터라면 출력을 낮춘다.

실내 온도 조절기도 닫힌 루프 제어의 좋은 예다. 사용자가 목표 온도를 24도로 설정하면, 온도 조절기는 현재 방 온도를 측정한다. 현재 온도가 20도라면 난방을 켜고, 24도에 가까워지면 난방을 줄인다. 만약 햇빛이 들어와 방이 갑자기 따뜻해지면 난방을 더 줄이거나 끈다. 목표와 현재를 비교해 행동을 바꾸기 때문에 외부 변화에 대응할 수 있다.

로봇에서는 닫힌 루프 제어가 특히 중요하다. 로봇은 항상 예측하기 어려운 세계와 만난다. 바닥 재질이 바뀌고, 물체의 무게가 달라지고, 관절 마찰이 변하고, 센서값이 흔들린다. 이런 상황에서 결과를 보지 않고 명령만 밀어붙이면 로봇은 쉽게 빗나간다. 피드백은 로봇이 현실과 대화하는 방법이다.

로봇은 왜 흔들릴까

초보자가 로봇을 만들 때 가장 당황하는 순간은 로봇이 "말을 듣긴 듣는데 이상하게 듣는" 순간이다. 목표 지점으로 가긴 가는데 지나쳐 버리고, 다시 돌아오다가 또 지나치고, 결국 목표 주변에서 덜덜 떤다. 로봇팔은 원하는 각도 근처에서 멈추지 못하고 앞뒤로 흔들린다. 바퀴 로봇은 직진하려 하지만 조금씩 좌우로 비틀거린다.

이런 현상은 제어의 언어로 보면 이상한 일이 아니다. 로봇이 흔들리는 이유는 목표와 현재의 차이를 줄이려는 명령이 너무 강하거나, 너무 늦거나, 현실의 물리 효과를 충분히 고려하지 못했기 때문이다.

예를 들어 로봇팔 관절이 목표 각도보다 10도 부족하다고 하자. 제어기가 "오차가 크니 세게 밀자"라고 판단해 큰 힘을 준다. 그런데 로봇팔에는 질량이 있다. 질량이 있는 물체는 한 번 움직이면 바로 멈추지 않는다. 관절이 목표 각도에 도착한 순간에도 관성 때문에 계속 움직이려 한다. 그러면 목표를 지나친다. 제어기는 이제 반대 방향으로 힘을 준다. 하지만 또 늦거나 세게 주면 반대쪽으로 지나친다. 이것이 반복되면 흔들림이 된다.

바퀴 로봇도 마찬가지다. 목표 속도보다 느리다고 해서 출력을 너무 크게 올리면 속도가 목표를 넘어선다. 다시 줄이면 너무 느려진다. 센서 측정이 늦게 들어오거나 모터 반응이 느리면 이 현상은 더 심해진다. 로봇의 흔들림은 고장이 아니라, 목표를 따라가려는 제어와 실제 물리 세계가 서로 맞춰 가는 과정에서 생기는 자연스러운 결과다.

PID 제어의 직관

로봇 제어에서 가장 자주 만나는 기본 도구 중 하나가 PID 제어다. PID는 세 가지 제어 성분을 합친 이름이다. 각각 P, I, D라고 부른다. 처음 들으면 수학 공식처럼 느껴지지만, 직관은 어렵지 않다. P는 지금 얼마나 틀렸는지를 보고 반응하고, I는 오랫동안 남아 있는 작은 오차를 기억하며, D는 너무 빠르게 변하는 움직임을 잡아 준다.

  • P, 비례 제어는 현재 오차가 클수록 더 강하게 반응한다. 목표와 많이 떨어져 있으면 세게 밀고, 가까워지면 약하게 민다. 빠르게 반응하게 해 주지만, 너무 강하면 목표를 지나쳐 흔들릴 수 있다.

  • I, 적분 제어는 오차가 시간 동안 쌓인 양을 본다. 작은 오차가 오래 남아 있으면 "계속 조금씩 부족했구나"라고 판단해 보상한다. 마찰이나 하중 때문에 끝까지 남는 오차를 없애는 데 도움이 되지만, 너무 강하면 늦게까지 힘을 밀어 넣어 목표를 지나칠 수 있다.

  • D, 미분 제어는 오차가 얼마나 빠르게 변하는지를 본다. 목표에 너무 빠르게 접근하면 브레이크를 거는 역할을 한다. 흔들림을 줄이고 움직임을 차분하게 만들지만, 센서 노이즈에 민감할 수 있다.

P 제어를 고무줄에 비유해 보자. 목표 지점과 현재 위치 사이에 고무줄이 연결되어 있다고 생각하면 된다. 멀리 떨어질수록 고무줄이 세게 당긴다. 그래서 로봇은 목표를 향해 빠르게 움직인다. 하지만 고무줄만 있으면 목표 근처에서 튕기듯 흔들릴 수 있다.

I 제어는 작은 빚을 기록하는 장부와 비슷하다. 로봇이 목표보다 아주 조금 부족한 상태로 오래 머물면, P 제어만으로는 힘이 너무 약해서 그 차이를 끝까지 없애지 못할 수 있다. 이때 I 제어는 "조금 부족한 상태가 계속 누적되고 있다"라고 판단하고 추가 힘을 준다. 예를 들어 로봇팔이 무거운 물체를 들고 있을 때, 중력 때문에 목표 각도보다 살짝 처질 수 있다. I 제어는 이런 지속적인 처짐을 보정하는 데 유용하다.

D 제어는 자동차 브레이크 같은 역할을 한다. 목표에 가까워지는 속도가 너무 빠르면 미리 속도를 줄인다. 덕분에 목표를 지나쳐 왕복하는 움직임을 줄일 수 있다. 다만 센서값이 자잘하게 흔들리면 D 제어는 그 흔들림도 "빠른 변화"로 해석할 수 있다. 그래서 실제 시스템에서는 센서 노이즈를 줄이거나 D 값을 조심스럽게 조정해야 한다.

PID 제어는 세 성분을 적절히 섞어 쓴다. P만 쓰면 빠르지만 흔들릴 수 있고, I를 더하면 남는 오차를 줄일 수 있으며, D를 더하면 과한 움직임을 누그러뜨릴 수 있다. 좋은 PID 제어는 빠르게 목표에 가까워지면서도, 지나치게 출렁이지 않고, 마지막에 작은 오차까지 줄이는 균형을 찾는 일이다.

튜닝: 숫자를 맞추는 것이 아니라 성격을 다듬는 일

PID 제어에는 각 성분의 세기를 정하는 값이 있다. 보통 P 게인, I 게인, D 게인이라고 부른다. 게인은 얼마나 강하게 반응할지를 정하는 비율이다. 같은 오차가 있어도 게인이 크면 더 강한 명령을 내리고, 게인이 작으면 더 부드럽게 반응한다.

제어기를 만들 때 가장 어려운 일 중 하나가 이 게인을 적절히 고르는 것이다. 이를 튜닝이라고 한다. 튜닝은 단순히 숫자 세 개를 맞히는 일이 아니다. 로봇의 움직임 성격을 다듬는 일에 가깝다. 너무 급한 로봇은 차분하게 만들고, 너무 굼뜬 로봇은 민첩하게 만들며, 목표 근처에서 떨리는 로봇은 안정적으로 만든다.

P 게인을 올리면 보통 반응이 빨라진다. 하지만 너무 높이면 로봇이 목표를 지나쳐 흔들릴 가능성이 커진다. I 게인을 올리면 오래 남는 오차를 줄이는 데 도움이 된다. 하지만 너무 높이면 누적된 오차가 뒤늦게 큰 힘으로 나타나 오버슈트를 만들 수 있다. 오버슈트는 목표값을 넘어서는 현상이다. D 게인을 올리면 흔들림이 줄어들 수 있지만, 너무 높으면 센서 노이즈에 예민해져 오히려 모터 명령이 거칠어질 수 있다.

좋은 제어는 무조건 빠른 제어가 아니다. 로봇 청소기는 약간 느리더라도 벽에 부딪히지 않고 안정적으로 움직이는 편이 낫다. 로봇팔이 사람 옆에서 물건을 건넨다면 속도보다 부드러움과 안전이 더 중요하다. 반대로 공장에서 같은 동작을 반복하는 산업용 로봇은 정해진 범위 안에서 빠르고 정확해야 한다. 제어의 목표는 로봇의 임무에 따라 달라진다.

현실의 로봇은 늘 예상에서 조금 벗어난다

시뮬레이션 속 로봇은 비교적 말을 잘 듣는다. 바닥은 균일하고, 모터는 명령대로 움직이며, 센서는 깨끗한 값을 준다. 하지만 실제 로봇은 다르다. 같은 명령을 내려도 매번 완전히 같은 결과가 나오지 않는다. 이것이 실제 로봇 제어가 어려운 이유다.

먼저 마찰이 있다. 마찰은 움직임을 방해하는 힘이다. 정지해 있는 물체를 처음 움직일 때 필요한 힘과, 이미 움직이는 물체를 계속 움직이는 데 필요한 힘은 다를 수 있다. 그래서 모터에 작은 명령을 줬는데 로봇이 아예 움직이지 않다가, 어느 순간 갑자기 움직이기도 한다. 로봇팔 관절이나 바퀴 축에서 이런 현상은 제어를 까다롭게 만든다.

하중 변화도 중요하다. 빈 그리퍼를 움직일 때와 물건을 든 그리퍼를 움직일 때 필요한 힘은 다르다. 같은 로봇팔이라도 가벼운 플라스틱 컵을 들 때와 물이 가득 찬 컵을 들 때 움직임이 달라진다. 바퀴 로봇도 배터리나 짐을 더 싣고 있으면 가속과 정지가 달라진다. 제어기는 이런 차이를 감지하고 보정해야 한다.

센서 지연도 문제를 만든다. 로봇이 현재 위치를 읽었다고 해도 그 값은 엄밀히 말하면 아주 조금 과거의 정보일 수 있다. 센서가 측정하고, 데이터가 처리되고, 제어기가 계산하고, 모터 명령이 전달되는 데 시간이 걸리기 때문이다. 빠르게 움직이는 로봇에서는 이 작은 지연이 큰 차이를 만든다. 제어기가 이미 지난 상태를 보고 명령을 내리면, 로봇은 목표를 지나치거나 불필요하게 흔들릴 수 있다.

여기에 센서 노이즈, 배터리 전압 변화, 기어의 헐거움, 바닥의 미끄러움, 모터의 발열까지 더해진다. 로봇은 책상 위의 수식이 아니라 현실의 물체다. 그래서 제어는 한 번 설계하고 끝나는 작업이 아니다. 실제 로봇에 올려 보고, 움직임을 관찰하고, 로그를 확인하고, 값을 조정하는 과정이 필요하다.

제어는 인지와 계획을 현실로 가져온다

로봇 시스템 전체에서 제어는 낮은 단계의 기술처럼 보일 수 있다. 지도 만들기, 경로 계획, 인공지능, 자연어 명령 같은 주제에 비하면 모터 속도와 오차 계산은 소박해 보인다. 하지만 제어가 없으면 높은 단계의 판단은 현실에서 힘을 잃는다.

경로 계획 알고리즘이 멋진 길을 찾았다고 해도, 바퀴가 그 경로를 따라가지 못하면 로봇은 목적지에 도착할 수 없다. 비전 인식 모델이 컵의 위치를 정확히 찾았다고 해도, 로봇팔이 그 위치로 안정적으로 움직이지 못하면 컵을 잡을 수 없다. LLM이 "부엌으로 가서 물병을 가져와"라는 명령을 훌륭하게 작업 순서로 나누어도, 마지막 순간에는 모터와 관절이 정확히 움직여야 한다.

그래서 로봇공학에서는 높은 수준의 계획과 낮은 수준의 제어가 함께 작동해야 한다. 계획은 "어디로 갈 것인가"를 정하고, 제어는 "그곳까지 실제로 어떻게 따라갈 것인가"를 맡는다. 계획이 큰 지도를 그린다면, 제어는 매 순간 핸들을 잡고 길을 맞추는 운전자다.

이 관점을 잡으면 로봇의 흔들림과 보정이 다르게 보인다. 로봇이 한 번에 완벽하게 움직이지 못하는 것은 실패가 아니다. 로봇은 센서로 현재를 보고, 목표와 비교하고, 오차를 줄이기 위해 다시 행동한다. 흔들림은 제어가 필요하다는 신호이고, 보정은 로봇이 세계와 맞춰 가는 방식이다.

다음으로 나아가기 전에

이번 장에서 살펴본 제어의 핵심은 단순하다. 로봇은 목표값과 현재값을 비교하고, 그 차이인 오차를 줄이기 위해 제어 입력을 바꾼다. 결과를 보지 않고 명령만 내리는 방식은 열린 루프 제어이고, 결과를 다시 확인하며 명령을 고치는 방식은 닫힌 루프 제어다. 실제 로봇에서는 마찰, 하중 변화, 센서 지연, 노이즈 때문에 닫힌 루프 제어가 매우 중요하다.

PID 제어는 이 피드백 루프를 구현하는 대표적인 방법이다. P는 빠르게 반응하게 하고, I는 오래 남는 오차를 줄이며, D는 과한 흔들림을 억제한다. 세 성분의 균형을 맞추는 튜닝은 로봇을 실제 환경에 적응시키는 과정이다.

이제 로봇이 한 점으로 움직이는 방법을 넘어, 더 큰 질문으로 갈 준비가 되었다. 로봇은 목표 지점을 어떻게 정할까? 장애물이 있는 공간에서 어디로 가야 안전할까? 다음 장에서는 로봇에게 지도가 무엇인지, 그리고 지도 위에서 경로를 어떻게 계획하는지 살펴본다.

책 목록

처음 만나는 로봇공학: 로봇은 어떻게 보고, 생각하고, 움직이는가

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기