Skip to main content
Summary

지난 장에서 우리는 모터가 로봇의 근육이라는 사실을 배웠다. 모터는 회전 운동을 만들고, 모터 드라이버는 그 회전을 실제 힘으로 밀어 준다. 그런데 모터 하나가 돈다고 해서 로봇이 곧바로 '이동'하는 것은 아니다. 모터의 회전이 바퀴를 돌리고, 바퀴가 바닥과 마찰을 만들고, 그 마찰이 로봇의 몸체를 밀어낼 때 비로소 로봇은 공간 안에서 움직인다.

이번 장의 주인공은 바퀴 로봇이다. 바퀴 로봇은 로봇공학을 처음 배울 때 가장 좋은 출발점이다. 구조가 비교적 단순하고, 눈앞에서 움직임이 바로 보이며, 센서와 제어와 위치 추정까지 자연스럽게 연결되기 때문이다. 로봇 청소기, 물류 로봇, 배달 로봇, 자율주행차, 연구용 TurtleBot까지 모두 넓은 의미에서 바퀴 로봇이다.

흥미로운 점은 바퀴 로봇의 움직임이 대부분 '바퀴 속도의 조합'으로 만들어진다는 것이다. 앞으로 가기, 뒤로 가기, 제자리에서 돌기, 부드럽게 곡선을 그리기, 심지어 옆으로 미끄러지듯 이동하기까지 모두 바퀴들이 서로 어떤 속도로 도느냐에 따라 결정된다. 로봇에게 바퀴 속도는 발걸음의 리듬과 같다. 같은 바퀴라도 어떤 박자로 돌리느냐에 따라 전혀 다른 춤이 된다.

바퀴 로봇의 움직임

바퀴 로봇을 이해하는 첫 번째 질문

바퀴 로봇을 볼 때 가장 먼저 던질 질문은 단순하다. 이 로봇은 어떻게 방향을 바꾸는가?

사람은 몸을 비틀고 발을 옮겨 방향을 바꾼다. 자동차는 앞바퀴를 꺾어 방향을 바꾼다. 로봇 청소기는 왼쪽 바퀴와 오른쪽 바퀴를 서로 다르게 돌려 방향을 바꾼다. 창고에서 움직이는 전방향 로봇은 바퀴 구조를 특별하게 만들어 옆으로도 움직인다.

겉으로 보면 모두 바퀴가 달린 로봇이지만, 방향을 바꾸는 방식은 크게 다르다. 이 차이가 로봇의 행동 범위를 결정한다. 좁은 방 안에서 방향을 자주 바꿔야 하는 로봇 청소기라면 제자리 회전이 중요하다. 도로를 달리는 자율주행차라면 자동차처럼 자연스러운 곡선 주행이 중요하다. 공장이나 경기장에서 빠르게 좌우로 이동해야 하는 로봇이라면 전방향 이동이 큰 장점이 된다.

입문 단계에서는 바퀴 로봇을 세 가지 대표 유형으로 나누어 이해하면 좋다.

  • 차동구동 로봇은 왼쪽과 오른쪽 바퀴 속도 차이로 방향을 바꾼다.

  • 자동차형 로봇은 조향각과 전진 속도를 이용해 곡선 궤적을 만든다.

  • 전방향 로봇은 메카넘 휠이나 옴니 휠처럼 특수한 바퀴를 사용해 옆으로도 이동한다.

이 세 가지는 로봇 이동의 기본 문법이다. 이 문법을 이해하면 이후에 나오는 경로 계획, 제어, 자율주행, ROS2 Navigation 같은 주제가 훨씬 덜 낯설어진다.

차동구동 로봇: 좌우 속도 차이로 방향을 바꾼다

가장 흔한 입문용 바퀴 로봇은 차동구동 로봇이다. 차동구동이라는 이름은 조금 딱딱하지만 원리는 매우 직관적이다. 로봇의 왼쪽과 오른쪽에 각각 구동 바퀴가 있고, 두 바퀴의 속도를 따로 조절한다. 두 바퀴가 같은 속도로 앞으로 돌면 로봇은 앞으로 간다. 두 바퀴가 다른 속도로 돌면 로봇은 한쪽으로 돈다.

로봇 청소기를 떠올려 보자. 로봇 청소기는 좁은 거실에서 소파 다리와 의자 사이를 지나가야 한다. 벽을 만나면 방향을 바꾸고, 방 모서리에서는 몸을 돌려야 한다. 이때 자동차처럼 크게 원을 그리며 돌아야 한다면 매우 불편할 것이다. 차동구동 구조는 이런 실내 환경에 잘 맞는다. 왼쪽 바퀴와 오른쪽 바퀴를 서로 반대로 돌리면 로봇이 거의 제자리에서 회전할 수 있기 때문이다.

차동구동의 움직임은 네 가지 장면으로 생각하면 쉽다.

  • 왼쪽 바퀴와 오른쪽 바퀴가 같은 속도로 앞으로 돌면 로봇은 직진한다.

  • 두 바퀴가 같은 속도로 뒤로 돌면 로봇은 후진한다.

  • 왼쪽 바퀴가 오른쪽 바퀴보다 느리면 로봇은 왼쪽으로 휘어진다.

  • 왼쪽 바퀴와 오른쪽 바퀴가 반대 방향으로 돌면 로봇은 제자리에서 회전한다.

여기서 핵심은 로봇이 '앞으로 미는 힘'과 '몸을 돌리는 힘'을 동시에 만든다는 것이다. 두 바퀴의 평균 속도는 로봇을 앞으로 보내는 데 주로 관여하고, 두 바퀴의 속도 차이는 로봇을 회전시키는 데 주로 관여한다. 양쪽 바퀴가 비슷하게 빠르면 앞으로 많이 가고, 양쪽 바퀴의 차이가 크면 많이 돈다.

로봇 청소기가 몸을 돌리는 장면

조금 더 생생하게 상상해 보자. 로봇 청소기가 거실을 청소하다가 벽을 만났다. 앞쪽 범퍼가 눌리거나 거리 센서가 벽을 감지한다. 로봇은 더 이상 직진하면 안 된다고 판단한다. 이제 해야 할 일은 방향 전환이다.

가장 단순한 방법은 왼쪽 바퀴를 뒤로, 오른쪽 바퀴를 앞으로 돌리는 것이다. 그러면 왼쪽 바퀴는 로봇의 왼쪽을 뒤로 끌고, 오른쪽 바퀴는 로봇의 오른쪽을 앞으로 민다. 두 힘이 합쳐지면 로봇 몸체는 그 자리에서 빙글 돈다. 사람으로 치면 오른발은 앞으로, 왼발은 뒤로 움직이며 몸을 돌리는 것과 비슷하다.

만약 로봇이 부드럽게 왼쪽으로 커브를 돌고 싶다면 어떻게 할까? 왼쪽 바퀴를 멈추고 오른쪽 바퀴만 앞으로 돌릴 수도 있다. 그러면 로봇은 왼쪽 바퀴 근처를 중심으로 원을 그리듯 돈다. 더 부드럽게 돌고 싶다면 왼쪽 바퀴도 앞으로 돌리되 오른쪽 바퀴보다 조금 느리게 돌리면 된다. 이때 로봇은 큰 원을 따라 왼쪽으로 휘어진다.

차동구동 로봇은 이런 방식으로 매우 다양한 움직임을 만든다. 하지만 한 가지 약점이 있다. 일반적인 차동구동 로봇은 옆으로 바로 이동할 수 없다. 앞뒤로 가거나 회전할 수는 있지만, 몸의 방향을 그대로 둔 채 오른쪽으로 슥 이동하는 것은 불가능하다. 그래서 의자 다리 사이에서 옆으로 조금만 피하면 될 상황에서도, 일단 회전하고 전진한 뒤 다시 회전해야 한다.

이처럼 로봇의 바퀴 구조는 단순한 부품 배치가 아니라, 로봇이 가능한 행동의 목록을 정한다.

바퀴 속도에서 로봇 속도로

이제 한 단계만 더 들어가 보자. 로봇 프로그램에서는 보통 바퀴에 직접 '왼쪽 모터 PWM 120, 오른쪽 모터 PWM 150' 같은 낮은 수준의 명령만 내리지 않는다. 조금 더 높은 수준에서는 로봇에게 이렇게 말하고 싶다.

'앞으로 초당 0.3미터로 가면서, 왼쪽으로 천천히 돌아.'

이 명령에는 두 가지 속도가 들어 있다. 하나는 로봇이 앞으로 나아가는 속도이고, 다른 하나는 로봇이 몸을 회전하는 속도다. 앞의 것을 선속도라고 하고, 뒤의 것을 각속도라고 한다. 선속도는 직선 방향으로 얼마나 빠르게 이동하는지를 뜻하고, 각속도는 방향이 얼마나 빠르게 바뀌는지를 뜻한다.

입문 단계에서는 다음처럼 기억하면 충분하다.

  • 선속도는 로봇이 앞으로 또는 뒤로 가는 빠르기다.

  • 각속도는 로봇이 왼쪽 또는 오른쪽으로 도는 빠르기다.

  • 바퀴 속도는 각 바퀴가 실제로 얼마나 빠르게 회전하는지를 뜻한다.

차동구동 로봇에서는 선속도와 각속도를 왼쪽 바퀴 속도, 오른쪽 바퀴 속도로 바꿔야 한다. 앞으로만 가고 싶다면 양쪽 바퀴를 같은 속도로 돌리면 된다. 왼쪽으로 돌고 싶다면 오른쪽 바퀴를 왼쪽 바퀴보다 더 빠르게 돌리면 된다. 제자리에서 왼쪽으로 돌고 싶다면 오른쪽 바퀴는 앞으로, 왼쪽 바퀴는 뒤로 돌리면 된다.

이 변환은 로봇 제어에서 매우 중요하다. 사람이 원하는 것은 대개 '로봇이 어떤 방향으로 얼마나 움직일 것인가'이다. 하지만 모터가 실제로 이해하는 것은 '각 바퀴를 얼마나 빠르게 돌릴 것인가'이다. 즉, 로봇의 소프트웨어는 사람과 모터 사이에서 언어를 번역해야 한다.

평균은 전진을 만들고, 차이는 회전을 만든다

차동구동의 핵심을 한 문장으로 줄이면 이렇다. 좌우 바퀴 속도의 평균은 전진 속도를 만들고, 좌우 바퀴 속도의 차이는 회전 속도를 만든다.

왼쪽 바퀴와 오른쪽 바퀴가 모두 빠르게 앞으로 돌면 평균 속도가 크므로 로봇은 빠르게 전진한다. 두 바퀴가 모두 느리면 천천히 전진한다. 두 바퀴가 같은 속도라면 차이가 없으므로 회전하지 않는다.

반대로 왼쪽 바퀴는 느리고 오른쪽 바퀴는 빠르면 속도 차이가 생긴다. 오른쪽이 더 많이 앞으로 나아가므로 로봇 몸체는 왼쪽으로 돌아간다. 차이가 조금이면 완만한 곡선을 그리고, 차이가 크면 급하게 돈다. 두 바퀴가 서로 반대 방향으로 같은 속도로 돌면 평균은 거의 0이지만 차이는 크다. 그래서 로봇은 앞으로 이동하지 않고 제자리에서 회전한다.

물론 실제 계산에서는 바퀴의 반지름, 왼쪽 바퀴와 오른쪽 바퀴 사이의 거리, 기어비 같은 값이 함께 들어간다. 바퀴가 클수록 한 바퀴 회전할 때 더 멀리 가고, 좌우 바퀴 사이가 넓을수록 같은 속도 차이로는 더 천천히 회전한다. 하지만 처음에는 복잡한 식보다 직관이 더 중요하다. 바퀴의 평균은 앞으로, 바퀴의 차이는 회전으로 이어진다. 이 감각 하나만 있어도 차동구동 로봇의 움직임이 훨씬 잘 보인다.

자동차형 로봇: 바퀴를 꺾어 곡선을 만든다

차동구동 로봇과 전혀 다른 방식으로 움직이는 대표적인 예가 자동차형 로봇이다. 우리가 매일 보는 자동차는 좌우 바퀴 속도 차이로 방향을 바꾸지 않는다. 앞바퀴의 방향을 꺾고, 그 상태에서 앞으로 나아가며 곡선을 만든다. 자율주행차, RC카, 일부 실외 주행 로봇이 이런 구조를 사용한다.

자동차형 로봇에는 두 가지 중요한 명령이 있다. 하나는 전진 속도이고, 다른 하나는 조향각이다. 전진 속도는 자동차가 얼마나 빠르게 앞으로 가는지를 뜻한다. 조향각은 앞바퀴를 얼마나 꺾었는지를 뜻한다. 핸들을 조금 돌리면 큰 원을 그리며 완만하게 돌고, 핸들을 많이 돌리면 작은 원을 그리며 급하게 돈다.

이 구조의 장점은 고속 주행에서 안정적이라는 점이다. 차동구동 로봇처럼 좌우 바퀴를 반대로 돌려 제자리 회전하는 방식은 실내 저속 로봇에는 편리하지만, 빠르게 달리는 차량에는 어울리지 않는다. 자동차는 바퀴가 굴러가는 방향과 차체가 움직이는 방향이 자연스럽게 맞아야 안정적으로 주행한다. 그래서 도로 위 자율주행차는 차동구동보다 자동차형 운동 모델로 이해하는 것이 자연스럽다.

하지만 자동차형 로봇에는 중요한 제약도 있다. 일반 자동차는 제자리에서 회전할 수 없다. 주차장에서 방향을 바꾸려면 앞으로 갔다가, 핸들을 돌리고, 뒤로 갔다가, 다시 앞으로 가야 한다. 이것은 단순히 운전 실력의 문제가 아니라 구조적 한계다. 앞바퀴를 꺾어 곡선을 만들 수는 있지만, 몸의 중심을 그 자리에서 돌리는 것은 어렵다.

조향각과 회전 반지름

자동차형 로봇을 이해할 때 '회전 반지름'이라는 말을 자주 듣게 된다. 회전 반지름은 로봇이 원을 그리며 돌 때 그 원의 크기를 뜻한다. 핸들을 조금만 꺾으면 큰 원을 그리므로 회전 반지름이 크다. 핸들을 많이 꺾으면 작은 원을 그리므로 회전 반지름이 작다.

마트 카트를 밀 때를 생각해 보자. 손잡이를 살짝 틀고 계속 밀면 카트는 넓은 곡선을 그리며 움직인다. 더 크게 틀면 좁은 곡선을 그린다. 자동차형 로봇도 마찬가지다. 조향각은 로봇의 회전 반지름을 정하고, 전진 속도는 그 곡선을 얼마나 빠르게 따라갈지를 정한다.

여기서 중요한 점은 자동차형 로봇의 회전이 '이동하면서 도는 회전'이라는 것이다. 차동구동 로봇은 제자리에서 몸만 돌 수 있지만, 자동차형 로봇은 대개 앞으로 또는 뒤로 움직이면서 방향을 바꾼다. 그래서 자동차형 로봇의 경로 계획은 차동구동 로봇보다 다른 제약을 고려해야 한다. 아무리 가까운 목표 지점이 있어도, 자동차가 꺾을 수 없는 급한 방향 전환이라면 그 경로는 실제로 따라갈 수 없다.

이런 제약은 자율주행에서 매우 중요하다. 지도 위에서 두 점을 직선으로 연결하는 것은 쉽지만, 실제 차량은 조향각의 한계와 회전 반지름의 한계를 가진다. 즉, 갈 수 있는 길과 실제로 주행 가능한 길은 다를 수 있다. 로봇의 몸체 구조를 모르면 좋은 경로를 만들 수 없는 이유가 여기에 있다.

전방향 로봇: 옆으로 움직이는 특별한 바퀴

이제 조금 더 신기한 로봇을 보자. 어떤 로봇은 몸의 방향을 바꾸지 않고도 왼쪽이나 오른쪽으로 이동한다. 마치 게임 캐릭터가 옆걸음치듯이 움직인다. 이런 로봇을 전방향 로봇이라고 부른다. 전방향 이동은 좁은 공간에서 위치를 정밀하게 맞추거나, 빠르게 방향을 바꿔야 하는 상황에서 큰 장점이 있다.

전방향 로봇에는 보통 메카넘 휠이나 옴니 휠 같은 특수한 바퀴가 사용된다. 이 바퀴들은 평범한 고무 바퀴처럼 생기지 않았다. 바퀴 둘레에 작은 롤러들이 붙어 있거나, 비스듬한 방향으로 회전할 수 있는 구조가 들어 있다. 이 롤러들 덕분에 바퀴는 한 방향으로는 힘을 잘 전달하면서, 다른 방향으로는 미끄러지듯 움직일 수 있다.

메카넘 휠을 단 로봇을 떠올려 보자. 바퀴 네 개가 각각 비스듬한 롤러를 가지고 있다. 각 바퀴가 바닥을 미는 힘은 단순히 앞뒤 방향만이 아니라 대각선 방향 성분을 가진다. 네 바퀴의 힘을 잘 조합하면 앞뒤 성분은 서로 사라지고 좌우 성분만 남게 할 수 있다. 그러면 로봇은 몸을 돌리지 않고 옆으로 이동한다.

처음 들으면 마술처럼 느껴지지만, 원리는 힘의 합성이다. 여러 사람이 상자를 미는 장면을 생각하면 된다. 한 사람은 대각선 앞쪽으로 밀고, 다른 사람은 반대 대각선으로 민다. 앞뒤 방향 힘은 서로 상쇄되고, 옆 방향 힘만 남으면 상자는 옆으로 움직인다. 메카넘 휠 로봇은 이 일을 네 개의 바퀴로 해낸다.

메카넘 휠과 옴니 휠의 감각

메카넘 휠과 옴니 휠은 모두 전방향 이동에 쓰이지만 생김새와 배치 방식이 조금 다르다. 메카넘 휠은 바퀴 둘레에 비스듬한 롤러가 달려 있는 형태가 많다. 네 바퀴를 사각형으로 배치하고, 각 바퀴의 회전 방향을 조합해 전진, 후진, 좌우 이동, 회전을 만든다.

옴니 휠은 바퀴 둘레에 작은 롤러들이 달려 있어 바퀴가 굴러가는 방향과 수직인 방향으로 미끄러지기 쉽다. 여러 개의 옴니 휠을 삼각형이나 사각형으로 배치하면 로봇이 여러 방향으로 움직일 수 있다. 로봇 축구 대회나 실내 물류 로봇, 교육용 로봇에서 이런 구조를 볼 수 있다.

전방향 로봇의 가장 큰 장점은 자유로운 움직임이다. 차동구동 로봇은 옆으로 가려면 먼저 회전해야 하고, 자동차형 로봇은 곡선을 그리며 접근해야 한다. 반면 전방향 로봇은 정면을 유지한 채 좌우로 위치를 맞출 수 있다. 물건 앞에 정확히 서야 하는 모바일 매니퓰레이터나 좁은 통로에서 자세를 유지해야 하는 로봇에는 매우 매력적인 특징이다.

다만 전방향 바퀴도 만능은 아니다. 구조가 복잡하고, 바닥 상태에 민감하며, 일반 바퀴보다 효율이나 접지력이 떨어질 수 있다. 카펫이나 울퉁불퉁한 바닥에서는 롤러가 원하는 대로 움직이지 않을 수 있다. 또한 제어해야 할 바퀴가 많고, 각 바퀴의 속도 조합이 더 복잡하다. 자유도가 높은 만큼 설계와 제어도 더 섬세해진다.

세 이동 방식의 차이

이제 세 가지 이동 방식을 나란히 놓고 비교해 보자. 차동구동, 자동차형, 전방향 로봇은 모두 바퀴로 움직이지만 움직임의 성격이 다르다.

이동 방식방향 전환 방법장점대표 예시
차동구동좌우 바퀴 속도 차이구조가 단순하고 제자리 회전이 가능하다로봇 청소기, 교육용 이동 로봇
자동차형조향각과 전진 속도고속 주행에 안정적이고 차량과 비슷하다자율주행차, RC카
전방향특수 바퀴의 힘 조합몸의 방향을 유지한 채 옆으로 이동할 수 있다메카넘 로봇, 옴니 휠 로봇

어떤 방식이 가장 좋다고 말할 수는 없다. 실내에서 천천히 돌아다니며 장애물을 피하는 로봇이라면 차동구동이 단순하고 강력하다. 도로처럼 속도와 안정성이 중요한 환경이라면 자동차형 구조가 자연스럽다. 좁은 공간에서 자세를 유지한 채 정밀하게 위치를 바꿔야 한다면 전방향 구조가 유리하다.

로봇 설계에서 중요한 질문은 언제나 같다. 이 로봇은 어디에서, 얼마나 빠르게, 얼마나 정밀하게, 어떤 장애물 사이를 움직여야 하는가? 이동 방식은 그 질문에 대한 답에서 나온다.

속도 명령은 어떻게 바퀴 명령이 되는가

로봇 소프트웨어에서 자주 등장하는 개념 중 하나가 cmd_vel 같은 속도 명령이다. 이름을 몰라도 괜찮다. 핵심은 로봇에게 직접 바퀴 하나하나를 말하기보다, 로봇 전체의 움직임을 먼저 명령한다는 것이다.

예를 들어 상위 프로그램이 로봇에게 '앞으로 0.2미터 매초 속도로 가라'고 명령한다. 그러면 하위 제어기는 이 명령을 바퀴 속도로 바꾼다. 차동구동 로봇이라면 왼쪽 바퀴와 오른쪽 바퀴를 같은 속도로 돌릴 것이다. 만약 '앞으로 가면서 왼쪽으로 돌아라'라는 명령이 함께 들어오면, 오른쪽 바퀴를 조금 더 빠르게 돌리고 왼쪽 바퀴를 조금 더 느리게 돌릴 것이다.

자동차형 로봇에서는 같은 명령이 다르게 번역된다. 앞으로 가면서 왼쪽으로 돌라는 명령은 왼쪽 바퀴와 오른쪽 바퀴의 단순한 속도 차이가 아니라, 조향각과 전진 속도로 바뀐다. 전방향 로봇에서는 네 개의 바퀴 속도가 서로 다른 조합으로 계산된다. 같은 '왼쪽으로 이동' 명령이라도 바퀴 구조에 따라 실제 모터 명령은 완전히 달라진다.

이것이 로봇공학에서 '모델'이 중요한 이유다. 모델은 로봇이 어떻게 움직이는지를 설명하는 약속이다. 차동구동 모델, 자동차형 모델, 전방향 모델은 모두 '원하는 로봇 속도'를 '필요한 바퀴 속도'로 바꾸는 방법을 제공한다.

운동학: 힘보다 움직임의 관계를 먼저 본다

바퀴 로봇의 움직임을 설명할 때 운동학이라는 단어가 등장한다. 운동학은 힘의 원인까지 깊게 따지기 전에, 위치와 속도 사이의 관계를 다루는 분야다. 쉽게 말해 '바퀴가 이렇게 돌면 로봇은 어떻게 움직이는가'를 묻는 것이다.

운동학은 로봇공학의 입문에서 매우 중요하다. 왜냐하면 많은 이동 로봇 제어가 먼저 운동학적 관계 위에서 시작하기 때문이다. 바퀴 반지름이 얼마인지, 바퀴 사이 거리가 얼마인지, 각 바퀴가 어느 방향으로 힘을 낼 수 있는지를 알면 로봇의 대략적인 움직임을 계산할 수 있다.

하지만 운동학만으로 모든 것을 설명할 수는 없다. 실제 로봇은 무게가 있고, 관성이 있고, 바닥과 마찰한다. 급하게 출발하면 바퀴가 헛돌 수 있고, 급하게 멈추면 로봇 몸체가 앞으로 쏠릴 수 있다. 카펫 위와 나무 바닥 위에서 같은 명령을 내려도 움직임이 다를 수 있다. 운동학은 좋은 출발점이지만, 현실의 로봇은 항상 물리 세계의 방해를 받는다.

그래서 로봇은 명령만 믿지 않고 피드백을 사용한다. 엔코더로 바퀴가 얼마나 돌았는지 확인하고, IMU로 실제 회전이 얼마나 일어났는지 확인하며, LiDAR나 카메라로 주변 위치를 다시 추정한다. 바퀴 속도 명령은 출발점이고, 센서 피드백은 그 명령이 실제로 성공했는지 확인하는 눈이다.

바퀴가 돌았는데 로봇이 그대로인 이유

입문자가 작은 바퀴 로봇을 만들면 이상한 일을 자주 겪는다. 코드에서는 양쪽 바퀴를 같은 속도로 돌리라고 했는데 로봇이 살짝 왼쪽으로 휜다. 제자리에서 90도 돌라고 했는데 80도만 돌거나 110도까지 돈다. 바퀴는 분명히 돌았는데 로봇이 생각보다 덜 움직인다.

이런 현상은 로봇이 고장 났다는 뜻이 아닐 때가 많다. 바퀴 로봇은 바닥과 직접 맞닿아 움직이기 때문에 작은 차이에 민감하다. 왼쪽 모터와 오른쪽 모터의 성능이 완전히 같지 않을 수 있고, 바퀴 지름이 미세하게 다를 수 있다. 바닥 마찰이 한쪽만 다를 수도 있다. 무게 중심이 한쪽으로 치우치면 한 바퀴가 더 강하게 눌려 움직임이 달라진다.

특히 미끄러짐은 바퀴 로봇에서 매우 중요한 문제다. 엔코더는 바퀴가 얼마나 돌았는지는 알려 주지만, 바퀴가 실제로 바닥을 얼마나 밀었는지는 직접 알려 주지 않는다. 바퀴가 얼음 위에서 헛돌면 엔코더는 많이 이동했다고 말할 수 있지만, 로봇 몸체는 거의 움직이지 않았을 수 있다. 지난 장에서 살펴본 오도메트리가 시간이 지날수록 틀어지는 이유도 여기에 있다.

그래서 좋은 바퀴 로봇은 항상 보정한다. 처음부터 완벽한 명령을 보내는 것이 아니라, 움직여 보고, 센서로 확인하고, 다시 조정한다. 로봇의 이동은 한 번에 정답을 맞히는 문제가 아니라 계속 오차를 줄여 가는 과정이다.

곡선 주행은 작은 직선과 작은 회전의 연속이다

로봇이 부드럽게 곡선을 그리며 움직이는 모습을 보면 복잡한 계산이 숨어 있을 것처럼 느껴진다. 실제로 정밀한 로봇에서는 복잡한 알고리즘이 사용되지만, 기본 아이디어는 단순하다. 곡선 주행은 아주 짧은 시간 동안의 작은 전진과 작은 회전이 계속 이어진 결과다.

차동구동 로봇이 왼쪽으로 부드럽게 돌고 있다고 해 보자. 매 순간 로봇은 조금 앞으로 가고, 아주 조금 왼쪽으로 방향을 바꾼다. 이 과정이 빠르게 반복되면 사람 눈에는 하나의 부드러운 곡선으로 보인다. 자동차형 로봇도 마찬가지다. 앞바퀴를 일정 각도로 꺾고 전진하면, 매 순간 차체 방향이 조금씩 변하며 곡선을 만든다.

이 관점은 이후 경로 계획과 제어를 이해할 때 중요하다. 경로 계획 알고리즘이 만든 길은 지도 위의 선일 뿐이다. 로봇은 그 선을 한 번에 통째로 따라가지 않는다. 현재 위치에서 다음 순간 어떤 속도로 움직일지 결정하고, 조금 이동한 뒤 다시 위치를 확인하고, 다시 속도를 정한다. 거대한 이동은 작은 속도 명령들의 연속으로 만들어진다.

이것이 로봇 움직임을 프로그래밍할 때의 핵심 감각이다. '목표 지점까지 가라'라는 큰 명령은 결국 수많은 작은 바퀴 속도 명령으로 쪼개진다. 로봇은 큰 꿈을 꾸지만, 실제로는 아주 작은 발걸음을 반복한다.

좋은 바퀴 로봇은 움직임의 한계를 안다

바퀴 로봇을 잘 움직이게 하려면 빠른 속도만 중요하지 않다. 오히려 중요한 것은 한계를 아는 것이다. 모터가 낼 수 있는 최대 속도, 바퀴가 미끄러지지 않고 버틸 수 있는 가속도, 로봇이 안정적으로 돌 수 있는 회전 속도, 조향 장치가 꺾일 수 있는 최대 각도, 배터리가 공급할 수 있는 전류를 모두 고려해야 한다.

명령을 너무 급하게 바꾸면 로봇은 덜컥거린다. 정지 상태에서 곧바로 최고 속도를 명령하면 바퀴가 미끄러질 수 있다. 빠르게 달리다가 갑자기 큰 각속도를 명령하면 로봇이 흔들리거나 넘어질 수도 있다. 작은 교육용 로봇에서는 귀여운 실수처럼 보이지만, 큰 물류 로봇이나 자율주행차에서는 안전 문제로 이어진다.

그래서 실제 로봇 제어에서는 속도뿐 아니라 가속도도 조절한다. 가속도는 속도가 얼마나 빠르게 바뀌는지를 뜻한다. 사람도 갑자기 전력 질주했다가 바로 멈추면 몸이 휘청인다. 로봇도 마찬가지다. 좋은 움직임은 빠른 움직임이 아니라, 로봇의 몸이 감당할 수 있는 범위 안에서 부드럽고 예측 가능한 움직임이다.

바퀴 로봇의 움직임을 보는 눈

이 장에서 배운 내용을 가지고 이제 주변의 바퀴 로봇을 다시 보면 전보다 더 많은 것이 보일 것이다. 로봇 청소기가 벽 앞에서 몸을 돌릴 때, 그 안에서는 좌우 바퀴 속도 차이가 만들어지고 있다. 자동차가 커브를 돌 때, 조향각과 전진 속도가 회전 반지름을 만들고 있다. 메카넘 휠 로봇이 옆으로 이동할 때, 네 바퀴의 대각선 힘이 합쳐져 좌우 이동을 만들고 있다.

바퀴 로봇의 이동은 단순히 '모터가 돈다'가 아니다. 모터의 회전은 바퀴 속도가 되고, 바퀴 속도의 조합은 로봇의 선속도와 각속도가 되며, 이 속도들이 시간에 따라 이어지면서 경로가 된다. 다시 말해 바퀴 로봇은 작은 회전들을 모아 큰 이동을 만든다.

이번 장의 핵심은 네 가지로 정리할 수 있다. 차동구동 로봇은 좌우 바퀴 속도 차이로 회전하고, 자동차형 로봇은 조향각과 전진 속도로 곡선을 만들며, 전방향 로봇은 특수 바퀴의 힘 조합으로 옆으로도 움직인다. 그리고 어떤 방식이든 최종적으로는 '원하는 로봇 속도'를 '각 바퀴의 속도'로 바꾸는 과정이 필요하다.

다음 장에서는 바퀴에서 로봇팔로 시선을 옮긴다. 바퀴 로봇이 평면 위에서 위치와 방향을 바꾼다면, 로봇팔은 관절과 링크를 이용해 공간 속의 물체에 손을 뻗는다. 바퀴가 이동의 문법이라면, 로봇팔은 자세와 도달의 문법이다. 이제 로봇이 굴러가는 방법을 배웠으니, 다음에는 로봇이 팔을 뻗어 세상과 직접 상호작용하는 방법을 살펴보자.

책 목록

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

전체 목차 보기

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

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

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

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

참여하기