Skip to main content
Summary

로봇은 한 번에 움직이지 않는다

로봇이 움직이는 장면은 겉으로 보면 단순해 보인다. 로봇 청소기가 벽을 피하고, 자율주행차가 차선을 따라가며, 로봇팔이 컵을 집는다. 우리는 그 모습을 보고 "로봇이 판단해서 움직였다"고 말한다. 하지만 실제 로봇 안에서는 훨씬 더 많은 일이 아주 짧은 시간 안에 이어진다.

로봇은 눈앞의 세계를 그대로 아는 존재가 아니다. 센서로 조각난 정보를 받아들이고, 그 정보에서 현재 상황을 추정하고, 목표에 맞는 행동을 고르고, 모터가 이해할 수 있는 명령으로 바꾼다. 그리고 움직인 뒤에는 다시 센서로 결과를 확인한다. 로봇의 핵심은 바로 이 반복되는 흐름에 있다.

가장 단순하게 표현하면 로봇 시스템은 다음과 같은 구조를 가진다.

입력 → 판단 → 출력 → 피드백

조금 더 로봇공학답게 풀어 쓰면 다음과 같다.

센서 입력 → 상태 추정 → 의사결정 → 제어 명령 → 액추에이터 출력 → 다시 센서 입력

이 한 줄이 로봇 시스템 전체의 뼈대다. 이후에 배우게 될 센서, 좌표계, 위치 추정, 경로 계획, 제어, 인공지능은 모두 이 흐름의 어느 한 부분을 더 깊게 설명하는 도구라고 볼 수 있다.

로봇 시스템의 전체 구조

센서 입력: 로봇이 세상을 만나는 첫 순간

로봇의 모든 행동은 입력에서 시작된다. 사람은 눈, 귀, 피부, 균형감각으로 주변을 느낀다. 로봇은 카메라, LiDAR, 초음파 센서, IMU, 엔코더, 힘 센서 같은 장치를 통해 세상을 감지한다.

예를 들어 실내를 돌아다니는 이동 로봇을 생각해 보자. 앞쪽 카메라는 복도와 문을 찍고, LiDAR는 주변 벽까지의 거리를 잰다. 바퀴의 엔코더는 바퀴가 얼마나 돌았는지 알려 주고, IMU는 로봇이 흔들렸는지, 어느 방향으로 기울었는지 알려 준다. 이 정보들은 모두 로봇에게 중요한 단서다.

하지만 센서 입력은 곧바로 "정답"이 아니다. 카메라는 조명이 어두우면 물체를 잘못 볼 수 있고, LiDAR는 유리문을 제대로 감지하지 못할 수 있다. 바퀴 엔코더는 바닥이 미끄러우면 실제 이동 거리와 다른 값을 줄 수 있다. 센서 데이터는 세계의 완벽한 복사본이 아니라, 세계를 추측하기 위한 힌트에 가깝다.

그래서 로봇은 센서값을 그대로 믿지 않는다. 여러 센서의 정보를 모으고, 불확실성을 줄이고, 현재 상태를 계산한다. 이 과정이 바로 다음 단계인 상태 추정이다.

상태 추정: 로봇은 '안다'기보다 '추정한다'

상태란 로봇이 현재 어떤 상황에 놓여 있는지를 나타내는 정보다. 이동 로봇이라면 "내가 지도 위의 어느 위치에 있고, 어느 방향을 바라보고 있으며, 주변에 어떤 장애물이 있는가"가 상태에 해당한다. 로봇팔이라면 "각 관절이 몇 도로 꺾여 있고, 손끝이 어디에 있으며, 잡으려는 물체가 어디에 있는가"가 상태다.

중요한 점은 로봇이 자신의 상태를 직접 볼 수 없다는 것이다. 로봇은 센서값을 통해 상태를 추정한다. 바퀴가 10번 돌았다고 해서 로봇이 반드시 정확히 1미터 이동했다고 말할 수는 없다. 바닥에서 미끄러졌을 수도 있고, 바퀴 지름이 아주 조금 다를 수도 있다. 카메라가 컵처럼 보이는 물체를 찾았다고 해서 그것이 반드시 컵이라는 보장도 없다.

그래서 로봇 시스템은 여러 정보를 조합한다. 바퀴 엔코더로 대략적인 이동 거리를 계산하고, IMU로 회전을 보정하며, LiDAR나 카메라로 주변 구조와 비교한다. 이렇게 하면 하나의 센서가 틀려도 전체 판단은 더 안정적이 된다.

상태 추정은 로봇공학에서 매우 중요한 관문이다. 좋은 계획도, 좋은 제어도, 좋은 인공지능도 현재 상태를 엉뚱하게 알고 있으면 제대로 작동하기 어렵다. 사람이 길을 잘못 알고 출발하면 아무리 빠르게 걸어도 목적지에 도착하기 어려운 것과 같다.

의사결정: 무엇을 할지 고르는 단계

상태를 추정한 로봇은 이제 무엇을 할지 결정해야 한다. 이 단계가 흔히 말하는 판단 또는 계획에 해당한다.

로봇 청소기를 예로 들어 보자. 로봇이 현재 거실 중앙에 있고, 앞에는 소파가 있으며, 배터리가 충분하다고 추정했다면 다음 행동은 "소파를 피해 왼쪽으로 이동하면서 청소를 계속한다"가 될 수 있다. 반대로 배터리가 부족하다면 "충전기로 돌아간다"가 더 적절한 행동이 된다.

의사결정에도 여러 층위가 있다. 가장 높은 수준에서는 목표를 다룬다. "방 전체를 청소하라", "주방으로 컵을 가져가라", "창고에서 상자를 찾아 작업대로 옮겨라" 같은 명령이다. 그 아래에서는 목표를 실행 가능한 작은 행동으로 나눈다. 방을 청소하려면 어느 구역부터 갈지 정해야 하고, 컵을 가져가려면 컵을 찾고, 접근하고, 집고, 이동하고, 내려놓아야 한다.

이 과정은 사람의 행동과 비슷하다. "편의점에 다녀오자"라는 목표가 생기면 우리는 곧바로 다리를 움직이지 않는다. 먼저 지갑과 휴대폰을 챙기고, 문을 열고, 엘리베이터를 타고, 횡단보도에서 신호를 기다린다. 큰 목표가 작은 행동들의 순서로 바뀌는 것이다.

로봇의 의사결정은 보통 다음과 같은 질문을 차례로 다룬다.

  • 지금 목표는 무엇인가?

  • 현재 상태에서 가능한 행동은 무엇인가?

  • 어떤 행동이 가장 안전하고 효율적인가?

  • 선택한 행동을 실제 움직임으로 바꾸려면 어떤 경로가 필요한가?

  • 예상과 다르게 상황이 변하면 어떻게 다시 계획할 것인가?

여기서 중요한 것은 로봇의 판단이 한 번으로 끝나지 않는다는 점이다. 환경은 계속 변한다. 사람이 갑자기 앞을 지나갈 수 있고, 문이 닫힐 수 있으며, 물체가 원래 위치에 없을 수도 있다. 로봇은 계획을 세운 뒤에도 계속 관찰하고, 필요하면 계획을 수정해야 한다.

제어 명령: 생각을 움직임의 언어로 바꾸기

의사결정 단계에서 "왼쪽으로 돌아서 앞으로 가자"라는 행동이 선택되었다고 해 보자. 이 말은 사람에게는 충분히 이해되는 표현이지만, 모터에게는 너무 추상적이다. 모터는 "왼쪽으로 돌아라"를 직접 이해하지 못한다. 모터가 이해하는 것은 전압, 전류, 회전 속도, 목표 각도 같은 구체적인 명령이다.

제어는 바로 이 간극을 메우는 단계다. 계획이 "어디로 갈 것인가"를 다룬다면, 제어는 "그곳으로 실제로 어떻게 움직일 것인가"를 다룬다.

차동구동 로봇을 생각해 보자. 이 로봇은 왼쪽 바퀴와 오른쪽 바퀴의 속도 차이로 방향을 바꾼다. 앞으로 똑바로 가려면 양쪽 바퀴를 같은 속도로 돌리면 된다. 왼쪽으로 회전하려면 오른쪽 바퀴를 더 빠르게 돌리거나, 왼쪽 바퀴를 느리게 돌리면 된다. 결국 "왼쪽으로 조금 돌아라"라는 행동은 "왼쪽 바퀴는 초당 얼마, 오른쪽 바퀴는 초당 얼마로 돌려라"라는 명령으로 바뀐다.

로봇팔도 마찬가지다. "컵을 잡아라"라는 목표는 손끝의 위치와 자세를 정하는 문제로 바뀌고, 다시 각 관절이 몇 도로 움직여야 하는지 계산하는 문제로 바뀐다. 마지막에는 각 모터에 목표 위치나 목표 토크가 전달된다.

제어 명령은 보통 매우 빠르게 반복된다. 고수준 계획은 1초에 몇 번만 바뀌어도 충분할 수 있지만, 모터 제어는 1초에 수십 번, 수백 번, 때로는 그 이상 반복되어야 한다. 로봇은 계획을 느긋하게 세울 수 있지만, 균형을 잡고 모터를 안정적으로 움직이는 일은 한순간도 놓칠 수 없다.

액추에이터 출력: 로봇의 생각이 물리 세계에 닿는 순간

액추에이터는 로봇의 근육이다. 모터, 유압 장치, 공압 장치, 그리퍼처럼 실제 힘과 움직임을 만들어 내는 장치가 여기에 해당한다. 제어 명령이 액추에이터에 전달되면 로봇은 바퀴를 굴리고, 팔을 뻗고, 드론의 프로펠러를 돌리고, 손가락을 오므린다.

이 단계에서 로봇은 비로소 물리 세계와 부딪힌다. 그리고 물리 세계는 늘 조금씩 예상과 다르다. 바닥의 마찰이 변하고, 배터리 전압이 떨어지고, 모터가 뜨거워지고, 물체가 생각보다 무겁거나 미끄러울 수 있다. 그래서 출력은 항상 피드백과 함께 생각해야 한다.

로봇이 앞으로 1미터 가라는 명령을 받았다고 해서 한 번 모터를 돌리고 끝내면 위험하다. 실제로 얼마나 움직였는지 계속 확인해야 한다. 너무 적게 움직였으면 더 가야 하고, 너무 많이 움직였으면 멈추거나 되돌아와야 한다. 로봇팔이 컵을 잡을 때도 손가락을 무작정 세게 닫으면 컵을 깨뜨릴 수 있다. 힘 센서나 모터 전류를 확인하면서 적절한 힘으로 잡아야 한다.

로봇의 움직임은 명령의 결과이면서 동시에 다음 판단을 위한 새로운 입력을 만든다. 이것이 로봇 시스템을 단순한 기계 장치가 아니라 순환하는 지능 시스템으로 만드는 핵심이다.

하나의 흐름으로 보는 로봇 시스템

지금까지의 흐름을 하나의 장면으로 묶어 보자. 복도를 지나 회의실로 물병을 가져가는 서비스 로봇이 있다.

먼저 로봇은 카메라와 LiDAR로 복도, 사람, 벽, 문을 감지한다. 바퀴 엔코더와 IMU로 자신이 얼마나 움직였는지도 확인한다. 이 센서 입력은 그대로 사용되지 않고, 로봇의 현재 위치와 방향, 주변 장애물의 위치를 추정하는 데 쓰인다.

그다음 로봇은 목표를 확인한다. 목적지는 회의실이고, 중간에 사람과 장애물을 피해야 한다. 지도 위에서 대략적인 경로를 고르고, 가까운 장애물은 실시간으로 피한다. "다음 2초 동안 어느 방향으로 어느 속도로 움직일 것인가"가 결정되면, 제어기는 이를 왼쪽 바퀴와 오른쪽 바퀴의 속도 명령으로 바꾼다. 모터가 회전하고 로봇이 움직인다. 움직인 뒤에는 센서가 다시 새로운 상황을 읽는다.

이 과정은 한 번 실행되고 끝나는 절차가 아니라 계속 도는 고리다. 로봇은 움직이면서 보고, 보면서 다시 판단하고, 판단하면서 다시 움직인다.

로봇 소프트웨어의 계층 구조

로봇 시스템이 복잡해지는 이유는 모든 기능이 한 프로그램 안에 뒤섞여 있지 않기 때문이다. 실제 로봇 소프트웨어는 여러 계층으로 나뉘어 동작한다. 계층을 나누면 복잡한 문제를 더 작고 다루기 쉬운 문제로 쪼갤 수 있다.

가장 아래에는 하드웨어 제어 계층이 있다. 이 계층은 센서와 모터를 직접 다룬다. 카메라에서 이미지를 받아오고, 모터 드라이버에 속도 명령을 보내며, 배터리 상태를 읽는다. 마이크로컨트롤러나 임베디드 보드에서 동작하는 펌웨어가 여기에 포함되는 경우가 많다. 이 계층은 빠르고 안정적이어야 한다. 작은 지연이나 오류도 로봇의 움직임에 바로 영향을 줄 수 있기 때문이다.

그 위에는 미들웨어 계층이 있다. 미들웨어는 여러 프로그램이 서로 데이터를 주고받게 해 주는 연결망이다. 로봇에서는 카메라 프로그램, 위치 추정 프로그램, 경로 계획 프로그램, 모터 제어 프로그램이 동시에 실행되는 경우가 많다. 이들이 각자 따로 움직이면 시스템이 엉망이 되기 쉽다. 미들웨어는 "카메라 이미지는 여기로 보내고, 위치 정보는 저기로 전달하며, 속도 명령은 모터 제어기로 넘긴다"는 식으로 데이터 흐름을 정리해 준다.

그 위에는 인지 알고리즘 계층이 있다. 인지는 센서 데이터를 의미 있는 정보로 바꾸는 과정이다. 카메라 이미지에서 사람을 찾고, LiDAR 데이터에서 벽과 장애물을 구분하고, 여러 센서 정보를 합쳐 현재 위치를 추정한다. 로봇이 "무언가를 보았다"에서 "앞에 사람이 있다", "오른쪽에 문이 있다", "나는 복도 끝에 있다"로 나아가는 단계다.

그보다 높은 곳에는 행동 계획 계층이 있다. 이 계층은 목표와 상황을 바탕으로 어떤 행동을 할지 정한다. 목적지까지 어떤 경로로 갈지, 장애물을 피하려면 멈출지 돌아갈지, 물체를 집기 전에 먼저 가까이 갈지 카메라로 다시 확인할지를 결정한다. 로봇이 단순히 반응하는 기계가 아니라 목표를 수행하는 시스템으로 보이게 만드는 핵심 계층이다.

이 구조를 간단히 정리하면 다음과 같다.

  • 하드웨어 제어 계층: 센서, 모터, 배터리, 드라이버처럼 물리 장치를 직접 다룬다.

  • 미들웨어 계층: 여러 프로그램 사이의 메시지 전달과 실행 구조를 관리한다.

  • 인지 알고리즘 계층: 센서 데이터를 위치, 물체, 장애물 같은 의미 있는 정보로 바꾼다.

  • 행동 계획 계층: 목표를 해석하고, 순서를 정하고, 다음 행동을 선택한다.

계층은 서로 분리되어 있지만 완전히 독립적이지는 않다. 행동 계획이 경로를 정하면 제어 계층이 움직임으로 바꾸고, 움직임의 결과는 센서를 통해 다시 인지 계층으로 올라온다. 로봇 소프트웨어는 위에서 아래로 명령이 내려가고, 아래에서 위로 정보가 올라오는 구조를 가진다.

저수준 제어와 고수준 계획을 나누는 이유

로봇 시스템을 이해할 때 꼭 잡아야 할 구분이 있다. 바로 저수준 제어와 고수준 계획이다.

저수준 제어는 몸의 즉각적인 움직임을 담당한다. 바퀴 속도를 맞추고, 관절 각도를 유지하고, 드론의 자세를 안정화하고, 로봇팔이 흔들리지 않게 보정한다. 이 일은 빠르고 정확해야 한다. 몇 초 뒤의 목표보다 지금 모터가 너무 빠르게 도는지, 로봇이 넘어지려 하는지가 더 급하다.

고수준 계획은 목표와 전략을 담당한다. 어디로 갈지, 어떤 순서로 작업할지, 장애물을 만나면 돌아갈지 기다릴지, 사람의 명령을 어떻게 해석할지를 결정한다. 이 일은 상대적으로 느려도 되지만 더 넓은 맥락을 이해해야 한다.

사람의 몸을 떠올리면 이해하기 쉽다. 우리가 컵을 집을 때 "손가락 관절 1번을 몇 도 움직이고, 근육을 어느 정도 수축하자"라고 의식적으로 계산하지 않는다. 우리는 "컵을 집자"라고 생각하고, 몸의 낮은 수준 시스템이 균형과 근육 움직임을 자동으로 조절한다. 로봇도 비슷하다. 고수준 계획이 모든 모터의 세부 움직임까지 직접 관리하려 하면 시스템은 너무 느리고 복잡해진다.

이 둘을 분리해야 하는 이유는 명확하다.

  • 속도가 다르다. 모터 안정화는 매우 빠르게 반복되어야 하지만, 작업 계획은 상대적으로 느리게 바뀐다.

  • 관심사가 다르다. 저수준 제어는 전압, 속도, 힘, 각도에 관심이 있고, 고수준 계획은 목표, 순서, 안전, 성공 조건에 관심이 있다.

  • 오류 대응 방식이 다르다. 바퀴가 미끄러지는 문제는 제어기가 즉시 보정해야 하지만, 길이 막힌 문제는 계획기가 새 경로를 찾아야 한다.

  • 재사용성이 높아진다. 같은 모터 제어기를 여러 행동 계획에서 사용할 수 있고, 같은 계획기를 다른 로봇에 맞게 바꿔 쓸 수도 있다.

물론 실제 로봇에서는 두 영역이 서로 영향을 주고받는다. 고수준 계획이 너무 무리한 경로를 요구하면 저수준 제어가 따라가지 못한다. 반대로 저수준 제어에서 계속 실패가 발생하면 고수준 계획은 목표나 전략을 바꿔야 한다. 좋은 로봇 시스템은 두 영역을 분리하되, 필요한 정보는 계속 주고받게 만든다.

빠른 고리와 느린 고리

로봇 내부에는 여러 개의 반복 고리가 동시에 돈다. 어떤 고리는 아주 빠르고, 어떤 고리는 느리다.

모터 제어 고리는 매우 빠르다. 목표 속도와 실제 속도를 비교하고, 차이가 있으면 전류나 전압을 조절한다. 로봇이 흔들리거나 바퀴가 미끄러지는 순간을 놓치지 않으려면 빠르게 반응해야 한다.

위치 추정 고리는 그보다 조금 느릴 수 있다. 센서 데이터를 모아 로봇의 위치와 자세를 갱신한다. 카메라나 LiDAR처럼 데이터가 큰 센서는 처리 시간이 더 필요하기도 하다.

경로 계획 고리는 더 느리게 돌아도 된다. 매 순간 전체 경로를 새로 계산할 필요는 없다. 다만 환경이 바뀌거나 기존 경로가 막히면 다시 계산해야 한다.

작업 계획 고리는 가장 높은 수준에서 동작한다. "물건을 가져오기", "청소 완료하기", "충전기로 돌아가기" 같은 목표를 관리한다. 이 고리는 세계를 넓게 바라보지만, 모터의 작은 흔들림까지 직접 다루지는 않는다.

로봇 시스템을 설계할 때는 어떤 일을 얼마나 빠르게 반복해야 하는지 구분해야 한다. 모든 것을 빠르게 처리하려고 하면 계산량이 폭발하고, 모든 것을 느리게 처리하면 로봇이 현실 세계의 변화에 대응하지 못한다.

로봇을 에이전트로 바라보기

이제 로봇을 하나의 에이전트로 바라볼 수 있다. 에이전트란 환경을 관찰하고, 목표를 기준으로 행동을 선택하며, 그 행동으로 환경에 영향을 주는 존재를 말한다. 로봇은 단지 화면 속에서 텍스트를 출력하는 소프트웨어 에이전트가 아니다. 실제 몸을 가지고 실제 공간에서 움직이는 물리적 에이전트다.

물리적 에이전트라는 말은 중요하다. 로봇은 현실 세계의 제약을 피할 수 없다. 문장 생성 모델은 답이 틀리면 다시 고치면 되지만, 로봇이 계단을 잘못 내려가면 넘어질 수 있다. 소프트웨어 프로그램은 실행 속도가 조금 느려도 기다리면 되지만, 드론은 자세 제어가 늦어지면 추락할 수 있다. 로봇에게 판단은 언제나 물리적 결과를 동반한다.

그래서 로봇 에이전트는 다음 네 가지를 함께 고려해야 한다.

  • 관찰: 센서로 환경과 자신의 상태를 읽는다.

  • 이해: 센서 데이터를 바탕으로 현재 상황을 추정한다.

  • 결정: 목표에 맞는 행동을 선택한다.

  • 실행: 액추에이터를 통해 물리 세계를 바꾼다.

이 네 가지는 따로 떨어진 기능이 아니라 하나의 순환 구조다. 실행이 끝나면 세계가 바뀌고, 바뀐 세계는 다시 관찰된다. 로봇은 한 번 생각하고 끝나는 기계가 아니라 계속해서 세계와 대화하는 시스템이다.

전체 구조를 알면 로봇이 덜 신비로워진다

로봇은 처음 보면 매우 복잡하고 신비롭게 느껴진다. 카메라, 모터, 인공지능, 지도, 경로 계획, 제어 알고리즘이 한꺼번에 등장하기 때문이다. 하지만 전체 구조를 입력, 판단, 출력, 피드백의 흐름으로 보면 훨씬 이해하기 쉬워진다.

센서는 로봇에게 단서를 준다. 상태 추정은 그 단서를 모아 현재 상황을 만든다. 의사결정은 목표에 맞는 다음 행동을 고른다. 제어는 그 행동을 모터가 이해할 수 있는 명령으로 바꾼다. 액추에이터는 명령을 실제 움직임으로 만든다. 그리고 로봇은 다시 센서로 결과를 확인한다.

이 흐름을 기억하면 앞으로 만날 개념들이 제자리를 찾는다. 센서 장은 입력을 더 깊게 설명하고, 좌표계와 위치 추정은 상태를 표현하고 계산하는 방법을 다룬다. 모터와 제어는 출력이 어떻게 만들어지는지 보여 주고, 지도와 계획은 판단의 구조를 설명한다. 인공지능과 LLM은 로봇이 더 복잡한 목표를 이해하고 행동으로 바꾸는 방법과 연결된다.

로봇공학의 큰 그림은 결국 하나의 질문으로 모인다.

"로봇은 지금 무엇을 알고, 무엇을 해야 하며, 어떻게 움직여야 하는가?"

이 질문에 답하기 위해 로봇은 보고, 추정하고, 계획하고, 제어하고, 다시 본다. 로봇 시스템의 전체 구조를 이해한다는 것은 이 순환을 이해하는 일이다. 이 순환을 붙잡고 있으면, 앞으로 등장할 복잡한 기술들도 하나의 지도 위에 차근차근 놓이기 시작한다.

책 목록

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

전체 목차 보기

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

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

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

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

참여하기