Skip to main content
Summary

말 한마디가 로봇 행동이 되기까지

사용자가 로봇에게 말합니다.

"빨간 컵을 집어서 오른쪽 테이블 위에 놓아줘."

사람에게는 간단한 부탁처럼 들립니다. 그러나 로봇 입장에서는 이 한 문장 안에 풀어야 할 문제가 여러 겹으로 숨어 있습니다. 빨간 컵이 무엇인지 알아야 하고, 지금 어디에 있는지 찾아야 하며, 오른쪽 테이블이 어느 위치인지 이해해야 합니다. 컵을 잡을 수 있는 자세를 계산하고, 팔을 움직여야 하며, 컵을 떨어뜨리지 않았는지도 확인해야 합니다. 마지막으로 정말 테이블 위에 놓였는지 검사해야 합니다.

자연어 명령 로봇은 단순히 말을 알아듣는 로봇이 아닙니다. 말을 행동 가능한 작업으로 바꾸고, 작업을 실제 환경에 맞게 조정하며, 실패하면 다시 시도하는 시스템입니다. 이 장에서는 앞으로 배울 로봇 비전, 로봇팔 조작, 모방학습, 강화학습, LLM 에이전트가 하나의 흐름 안에서 어떻게 만나는지 먼저 큰 그림으로 살펴봅니다.

핵심 흐름은 다음과 같습니다.

사용자의 명령을 해석하고, 환경을 인식하고, 작업을 스킬 단위로 나누고, 실행한 뒤, 결과를 확인합니다. 실패하면 멈추거나 다시 계획합니다. 이것이 자연어 명령 로봇의 기본 골격입니다.

자연어 명령 로봇의 전체 흐름

자연어 명령은 그대로 실행할 수 없다

LLM은 문장을 잘 이해합니다. 그래서 "빨간 컵을 오른쪽에 놓아줘"라는 말을 들으면 대략 어떤 행동이 필요한지 추론할 수 있습니다. 하지만 로봇은 추론만으로 움직일 수 없습니다. 로봇에게 필요한 것은 훨씬 더 구체적인 정보입니다.

예를 들어 사람은 "컵 좀 치워줘"라고 말할 수 있습니다. 이 문장은 자연스럽지만 로봇에게는 애매합니다. 어떤 컵을 말하는지, 어디로 치워야 하는지, 컵 안에 내용물이 있는지, 잡아도 안전한지, 치웠다는 기준이 무엇인지가 명확하지 않습니다.

따라서 자연어 명령은 먼저 실행 가능한 형태로 바뀌어야 합니다. 이때 로봇 에이전트는 명령에서 네 가지 정보를 뽑아내려고 합니다.

추출할 정보예시왜 필요한가
대상 객체빨간 컵, 파란 블록, 책무엇을 찾고 조작할지 결정한다
목표 위치오른쪽 테이블, 상자 안, 사용자 앞어디로 이동하거나 놓을지 결정한다
조건깨지지 않게, 뚜껑이 닫힌 컵만, 사람이 없을 때행동의 제약과 안전 기준을 만든다
완료 기준컵이 테이블 위에 있음, 문 앞에 도착함작업 성공 여부를 판단한다

이 네 가지가 정리되지 않으면 로봇은 행동을 시작하기 어렵습니다. 명령 해석 단계의 목적은 사용자의 말을 로봇이 다룰 수 있는 목표로 바꾸는 것입니다.

예를 들어 "빨간 컵을 집어서 오른쪽 테이블 위에 놓아줘"라는 명령은 내부적으로 다음과 같이 해석될 수 있습니다.

대상 객체는 빨간 컵입니다. 목표 위치는 오른쪽 테이블 위입니다. 조건은 컵을 안전하게 잡고 충돌하지 않게 움직이는 것입니다. 완료 기준은 빨간 컵이 그리퍼에서 떨어져 오른쪽 테이블 표면 위에 안정적으로 놓인 상태입니다.

이렇게 바꾸면 문장은 더 이상 막연한 부탁이 아니라 로봇이 검사하고 실행할 수 있는 작업 목표가 됩니다.

명령 해석의 첫 단계: 빠진 정보를 찾아내기

자연어 명령은 자주 불완전합니다. 사람은 상황을 공유하고 있다고 생각하기 때문입니다. 주방에서 로봇에게 "저 컵 가져와"라고 말하면, 사람은 손가락으로 가리키거나 시선으로 힌트를 줄 수도 있습니다. 하지만 로봇은 그 힌트를 센서 데이터로 해석해야 합니다.

로봇 에이전트는 명령을 받으면 먼저 빠진 정보가 있는지 확인합니다. 대상이 하나로 정해졌는지, 목표 위치가 분명한지, 위험한 조건이 포함되어 있지 않은지 살펴봅니다.

"컵을 가져와"라는 명령에서 컵이 세 개 보인다면 로봇은 바로 움직이면 안 됩니다. 가장 가까운 컵을 임의로 잡는 것은 빠른 선택처럼 보이지만, 사용자가 원하는 컵이 아닐 수 있습니다. 이때 로봇은 질문할 수 있습니다.

"빨간 컵, 파란 컵, 흰 컵이 보입니다. 어떤 컵을 가져올까요?"

이 질문은 단순한 대화 기능이 아닙니다. 안전한 실행을 위한 정보 수집입니다. 자연어 명령 로봇은 모르면 물어볼 수 있어야 합니다. 이것은 좋은 에이전트의 중요한 특징입니다.

반대로 명령이 충분히 명확하다면 로봇은 질문하지 않고 다음 단계로 넘어갑니다. 중요한 것은 모든 명령에 질문하는 것이 아니라, 실행에 필요한 정보가 부족할 때만 질문하는 것입니다. 지나치게 자주 묻는 로봇은 답답하고, 묻지 않고 마음대로 움직이는 로봇은 위험합니다. 좋은 로봇 에이전트는 이 균형을 잡아야 합니다.

환경 인식: 말속의 객체를 현실의 물체와 연결하기

명령 해석이 끝나도 아직 로봇은 아무것도 잡을 수 없습니다. "빨간 컵"이라는 말은 상징이고, 로봇이 실제로 보는 것은 카메라 이미지, 깊이 값, 관절 상태, 지도, 라이다 포인트 같은 센서 데이터입니다.

자연어 명령 로봇의 두 번째 단계는 명령 속 단어를 실제 환경의 데이터와 연결하는 것입니다. 이것을 쉽게 말하면 "말로 된 목표를 눈앞의 물체와 맞추는 과정"이라고 할 수 있습니다.

카메라 이미지에서 컵 후보를 찾고, 그중 빨간색 속성을 가진 물체를 고릅니다. 깊이 카메라가 있다면 컵까지의 거리와 3D 위치를 계산합니다. 로봇팔이 있는 시스템이라면 이 위치를 로봇팔 좌표계로 변환합니다. 이동 로봇이라면 목표 장소를 지도상의 좌표와 연결합니다.

여기서 중요한 점은 인식 결과가 항상 완벽하지 않다는 것입니다. 카메라가 컵을 놓칠 수도 있고, 조명이 어두워 색상이 달라 보일 수도 있습니다. 컵이 다른 물체에 가려져 일부만 보일 수도 있습니다. 따라서 로봇은 인식 결과를 확률적인 정보로 다루는 편이 안전합니다.

예를 들어 객체 검출 모델이 컵 후보 세 개를 찾았다고 합시다. 첫 번째는 빨간 컵일 확률이 높고, 두 번째는 빨간 텀블러일 가능성이 있으며, 세 번째는 붉은색 장난감일 수 있습니다. 로봇은 단순히 첫 번째 결과만 믿기보다 위치, 크기, 형태, 사용자의 명령 맥락을 함께 고려해야 합니다.

명령과 센서 데이터를 연결하는 과정은 대략 다음 순서로 진행됩니다.

  1. 명령에서 객체 이름과 속성을 추출합니다.

  2. 카메라나 센서로 현재 환경을 관찰합니다.

  3. 객체 검출이나 세그멘테이션으로 후보 물체를 찾습니다.

  4. 색상, 모양, 위치, 문맥을 이용해 대상 객체를 고릅니다.

  5. 픽셀 위치나 지도 위치를 로봇이 사용할 수 있는 좌표로 변환합니다.

  6. 인식 결과의 신뢰도가 낮으면 다시 관찰하거나 사용자에게 확인합니다.

이 단계에서 2부의 로봇 비전 내용이 등장합니다. 카메라로 세상을 보는 법, 객체 검출, 세그멘테이션, 깊이 추정, 좌표 변환은 모두 자연어 명령을 실제 물체와 연결하기 위한 기술입니다.

장소도 인식의 대상이다

자연어 명령 로봇에서 인식해야 할 것은 물체만이 아닙니다. 장소도 인식해야 합니다.

"회의실 앞으로 가줘"라는 명령을 생각해 봅시다. 여기에는 잡을 물체가 없습니다. 대신 "회의실 앞"이라는 장소가 있습니다. 로봇은 이 말을 지도상의 위치와 연결해야 합니다. 회의실이라는 이름이 지도에 등록되어 있어야 하고, 회의실의 문 앞이나 입구 근처를 목표 지점으로 설정할 수 있어야 합니다.

"컵을 오른쪽 테이블에 놓아줘"라는 명령에서도 장소 인식이 필요합니다. 오른쪽이 누구 기준의 오른쪽인지, 테이블의 어느 표면이 안전한지, 이미 물건이 놓여 있는지 확인해야 합니다. 로봇팔에게는 단순히 "테이블"이 아니라 "그리퍼가 컵을 놓을 수 있는 평평하고 비어 있는 3D 위치"가 필요합니다.

그래서 자연어 명령 로봇은 객체 인식과 공간 인식을 함께 사용합니다. 객체는 "무엇"에 해당하고, 공간은 "어디"에 해당합니다. 이 둘이 결합되어야 비로소 행동 목표가 만들어집니다.

큰 작업을 작은 스킬로 나누기

사용자의 명령은 보통 하나의 문장입니다. 하지만 로봇은 그 문장을 하나의 거대한 행동으로 실행하지 않습니다. 대신 작은 스킬들의 순서로 나눕니다.

스킬은 로봇이 안정적으로 수행할 수 있는 기본 행동 단위입니다. 예를 들어 물체를 찾는 detect_object, 특정 위치로 이동하는 move_to, 물체를 집는 pick, 원하는 위치에 놓는 place, 결과를 확인하는 check 같은 함수가 스킬이 될 수 있습니다.

"빨간 컵을 집어서 오른쪽 테이블 위에 놓아줘"라는 명령은 다음과 같은 순서로 나눌 수 있습니다.

  1. detect_object: 빨간 컵을 찾습니다.

  2. detect_location: 오른쪽 테이블과 놓을 수 있는 위치를 찾습니다.

  3. move_to_pregrasp: 컵을 잡기 전 접근 위치로 이동합니다.

  4. pick: 컵을 잡습니다.

  5. check_grasp: 컵을 제대로 잡았는지 확인합니다.

  6. move_to_place: 오른쪽 테이블 위의 목표 위치로 이동합니다.

  7. place: 컵을 내려놓습니다.

  8. check_result: 컵이 목표 위치에 놓였는지 확인합니다.

이렇게 나누면 장점이 큽니다. 각 단계의 성공과 실패를 따로 확인할 수 있고, 실패한 지점에서만 다시 시도할 수 있습니다. 컵을 못 찾았을 때는 pick을 실행하지 않아도 됩니다. 컵을 잡는 데 실패했다면 처음부터 모든 계획을 다시 세우지 않고, 잡기 자세만 바꾸어 재시도할 수 있습니다.

스킬 기반 구조는 LLM과 로봇 제어를 연결할 때 특히 중요합니다. LLM은 큰 흐름을 계획하는 데 강하지만, 모터 토크나 관절 속도를 실시간으로 직접 제어하는 역할에는 적합하지 않습니다. 반대로 로봇 제어기는 관절을 부드럽게 움직이는 데 강하지만, "사용자가 원하는 의도"를 해석하지는 못합니다. 스킬은 이 둘 사이의 약속된 인터페이스입니다.

LLM은 "무엇을 어떤 순서로 할지"를 정하고, 로봇 스킬은 "그 행동을 실제로 어떻게 수행할지"를 담당합니다.

스킬은 작은 계약이다

스킬을 잘 설계하려면 각 스킬이 어떤 입력을 받고, 어떤 출력을 돌려주며, 언제 실패로 판단되는지 정해야 합니다. 이 관점에서 스킬은 작은 계약과 같습니다.

예를 들어 pick 스킬은 대상 물체의 3D 위치, 접근 방향, 그리퍼 설정값을 입력으로 받을 수 있습니다. 실행 후에는 성공 여부, 실제 그리퍼 상태, 물체를 잡았다고 판단한 근거를 출력할 수 있습니다. 만약 물체가 미끄러졌거나 그리퍼가 닫혔는데 아무 저항이 없었다면 실패로 보고해야 합니다.

스킬의 출력은 단순한 성공 또는 실패보다 조금 더 풍부해야 합니다. 그래야 다음 단계에서 재계획을 할 수 있습니다.

스킬가능한 성공 결과가능한 실패 결과
detect_object객체 위치와 신뢰도 반환객체 없음, 신뢰도 낮음, 여러 후보 존재
move_to목표 위치 도달경로 없음, 장애물 감지, 제한 구역 접근
pick물체 파지 성공파지 실패, 미끄러짐, 충돌 위험
place목표 위치에 물체 놓기놓을 공간 없음, 물체 기울어짐
check_status현재 상태 확인센서 불확실, 상태 판단 불가

이 정보가 쌓이면 로봇은 더 똑똑하게 행동할 수 있습니다. 단순히 "실패했습니다"라고 끝나는 것이 아니라 "빨간 컵 후보가 두 개라서 사용자의 확인이 필요합니다" 또는 "목표 위치에 다른 물체가 있어 오른쪽으로 10cm 떨어진 위치를 제안합니다"처럼 다음 행동으로 이어질 수 있습니다.

실행은 계획보다 더 복잡하다

계획은 종이 위에서는 깔끔합니다. detect, move, pick, place, check를 순서대로 나열하면 모든 일이 잘될 것처럼 보입니다. 하지만 실제 로봇은 늘 예상 밖의 상황을 만납니다.

컵이 생각보다 멀리 있을 수 있습니다. 사용자가 중간에 컵을 옮길 수도 있습니다. 그리퍼가 컵의 손잡이에 걸릴 수도 있습니다. 로봇팔 경로 중간에 장애물이 들어올 수도 있습니다. 깊이 카메라가 반짝이는 표면을 잘못 측정할 수도 있습니다.

그래서 자연어 명령 로봇에서 실행 단계는 단순히 계획을 따라가는 과정이 아닙니다. 실행하면서 계속 확인하는 과정입니다.

로봇은 각 스킬을 실행하기 전에도 확인하고, 실행 중에도 확인하고, 실행 후에도 확인해야 합니다. pick을 실행하기 전에는 컵 위치가 여전히 유효한지 봐야 합니다. 팔이 움직이는 중에는 충돌 위험이 없는지 감시해야 합니다. 컵을 잡은 뒤에는 실제로 잡혔는지 확인해야 합니다. place 이후에는 컵이 목표 위치에 남아 있는지 다시 봐야 합니다.

이런 구조를 닫힌 루프라고 부릅니다. 열린 루프는 처음 계획한 대로 끝까지 실행하는 방식입니다. 반면 닫힌 루프는 실행 결과를 계속 관찰하면서 다음 행동을 조정합니다. 물리 세계에서 안전하게 움직이는 로봇은 대부분 닫힌 루프 구조를 가져야 합니다.

결과 확인: 로봇은 성공을 증명해야 한다

사람은 어떤 일을 끝내고 나면 눈으로 결과를 확인합니다. 컵을 책상 위에 놓았다면 손을 놓고 컵이 쓰러지지 않는지 봅니다. 문을 닫았다면 문이 실제로 닫혔는지 확인합니다. 로봇도 마찬가지입니다.

자연어 명령 로봇의 마지막 단계는 결과 확인입니다. 중요한 것은 로봇이 "명령을 실행했다"고 말하는 것과 "목표 상태가 실제로 만들어졌다"는 것은 다르다는 점입니다.

예를 들어 place 스킬이 정상 종료되었다고 해도 컵이 테이블에서 굴러떨어졌을 수 있습니다. move_to가 목표 좌표에 도달했다고 해도 로봇이 회의실 문 앞이 아니라 문 옆 벽 앞에 멈췄을 수 있습니다. 그리퍼를 닫았다고 해서 물체를 잡은 것은 아닙니다.

따라서 로봇은 완료 기준을 기준으로 성공을 판단해야 합니다. 처음 명령 해석 단계에서 뽑아낸 완료 기준이 여기서 다시 사용됩니다.

"빨간 컵을 오른쪽 테이블 위에 놓아줘"의 완료 기준은 팔이 place 동작을 수행했다는 사실이 아닙니다. 빨간 컵이 오른쪽 테이블 위에 안정적으로 놓여 있는 상태입니다. 이 상태를 확인하기 위해 로봇은 카메라로 다시 관찰하거나, 그리퍼 센서로 물체가 손에서 빠졌는지 확인하거나, 테이블 위의 물체 위치를 다시 추정할 수 있습니다.

이처럼 자연어 명령 로봇은 행동 중심이 아니라 상태 중심으로 성공을 판단해야 합니다. 사용자는 로봇의 동작 자체를 원하는 것이 아니라, 원하는 결과 상태를 원하기 때문입니다.

실패는 예외가 아니라 기본 상황이다

초보자는 로봇 시스템을 만들 때 성공 흐름을 먼저 생각합니다. 컵을 찾고, 집고, 옮기고, 놓으면 끝이라고 생각합니다. 하지만 실제 시스템에서는 실패 흐름이 더 중요합니다. 실패를 처리하지 못하는 로봇은 데모 환경을 벗어나면 금방 멈춥니다.

실패는 여러 단계에서 발생할 수 있습니다.

  1. 명령 해석 실패: 사용자의 의도가 모호하거나 필요한 정보가 부족합니다.

  2. 인식 실패: 객체나 장소를 찾지 못하거나 신뢰도가 낮습니다.

  3. 계획 실패: 목표까지의 경로나 로봇팔 자세를 만들 수 없습니다.

  4. 실행 실패: 충돌 위험, 파지 실패, 미끄러짐, 하드웨어 제한이 발생합니다.

  5. 검증 실패: 동작은 끝났지만 목표 상태가 만들어지지 않았습니다.

이 실패들은 서로 다르게 처리해야 합니다. 명령이 모호하면 사용자에게 질문하는 것이 좋습니다. 객체를 못 찾으면 카메라 위치를 바꾸거나 다시 관찰할 수 있습니다. 경로가 막혔다면 다른 경로를 찾거나 장애물이 사라질 때까지 기다릴 수 있습니다. 파지에 실패했다면 잡는 방향이나 위치를 바꿔 다시 시도할 수 있습니다. 목표 상태가 만들어지지 않았다면 마지막 몇 단계를 되돌아가야 합니다.

좋은 로봇 에이전트는 실패를 부끄러워하지 않습니다. 오히려 실패를 정확히 보고하고, 원인을 좁히고, 안전한 다음 행동을 선택합니다.

재계획: 다시 생각하는 로봇

재계획은 자연어 명령 로봇을 단단하게 만드는 핵심 기능입니다. 처음 계획은 어디까지나 현재 정보에 기반한 가설입니다. 실행 중에 환경이 바뀌면 계획도 바뀌어야 합니다.

예를 들어 로봇이 컵을 집으러 가는 동안 사람이 컵을 조금 옮겼다고 합시다. 기존 좌표로 팔을 움직이면 그리퍼는 빈 공간을 잡게 됩니다. 이때 로봇은 실패한 뒤 처음부터 다시 시작할 수도 있지만, 더 좋은 방법은 현재 카메라로 컵 위치를 다시 확인하고 pick 단계만 수정하는 것입니다.

또 다른 예를 생각해 봅시다. 오른쪽 테이블 위에 컵을 놓으려 했는데, 막상 가까이 가 보니 테이블 위가 가득 차 있습니다. 이 경우 로봇은 무작정 빈틈을 찾아 끼워 넣으면 안 됩니다. 물체를 떨어뜨릴 위험이 있기 때문입니다. 대신 가능한 선택지를 만들어야 합니다.

로봇은 "오른쪽 테이블 위에 안전한 공간이 없습니다. 왼쪽 테이블 위에 놓을까요, 아니면 사용자가 공간을 비울 때까지 기다릴까요?"라고 물을 수 있습니다. 이것이 재계획과 대화가 만나는 지점입니다.

재계획은 항상 LLM이 혼자 하는 일이 아닙니다. 안전 제어기, 경로 계획기, 비전 모듈, 작업 관리자도 재계획에 참여합니다. LLM은 큰 목표와 대안 선택을 다루고, 로봇 제어 시스템은 가능한 경로와 안전 조건을 계산합니다. 여러 모듈이 함께 다시 생각하는 구조가 필요합니다.

전체 파이프라인으로 보기

이제 자연어 명령 로봇의 전체 흐름을 하나로 묶어 봅시다. 사용자의 말은 곧장 모터 명령으로 바뀌지 않습니다. 여러 계층을 지나며 점점 더 구체적인 형태가 됩니다.

단계입력처리출력
명령 해석사용자 자연어대상, 위치, 조건, 완료 기준 추출구조화된 목표
환경 인식카메라, 깊이, 지도, 센서객체와 장소를 실제 데이터에 연결대상 위치와 환경 상태
작업 계획목표와 현재 상태필요한 스킬 순서 생성작업 계획
스킬 실행스킬 이름과 파라미터로봇팔, 이동 로봇, 그리퍼 제어실행 결과
결과 확인센서와 완료 기준목표 상태 달성 여부 판단성공, 실패, 불확실
재계획실패 원인과 현재 상태대안 생성 또는 질문수정된 계획

이 표는 앞으로 이 책 전체에서 반복해서 등장할 큰 지도입니다. 2부에서는 환경 인식에 필요한 로봇 비전을 배웁니다. 3부에서는 로봇팔이 실제로 물체를 집고 놓는 방법을 배웁니다. 4부에서는 사람이 보여준 행동을 로봇이 따라 배우는 모방학습을 다룹니다. 5부에서는 시행착오를 통해 더 나은 행동을 찾는 강화학습을 봅니다. 6부에서는 LLM이 명령을 이해하고 스킬을 호출하며 실패 시 다시 계획하는 구조를 만듭니다. 7부에서는 이 모든 것을 자연어 명령 프로젝트로 묶습니다.

예제로 따라가는 전체 흐름

이제 하나의 예제를 처음부터 끝까지 따라가 보겠습니다.

사용자가 말합니다.

"빨간 컵을 집어 오른쪽에 놓아줘."

로봇은 먼저 명령을 해석합니다. 대상은 빨간 컵입니다. 행동은 집기와 놓기입니다. 목표 위치는 오른쪽입니다. 하지만 "오른쪽"은 아직 애매합니다. 오른쪽에 테이블이 있는지, 상자가 있는지, 빈 공간이 있는지 확인해야 합니다. 로봇은 카메라를 사용해 주변을 관찰합니다.

비전 모듈은 이미지에서 컵 후보를 찾습니다. 빨간 컵 하나가 검출되고, 깊이 정보로 컵의 3D 위치를 추정합니다. 동시에 오른쪽 영역에서 테이블 표면을 찾고, 물체를 놓을 수 있는 빈 공간을 계산합니다. 이제 말속의 "빨간 컵"과 "오른쪽"이 실제 좌표로 바뀌었습니다.

계획기는 작업을 나눕니다. 먼저 컵을 다시 확인하고, 로봇팔을 컵 근처로 이동시키고, 그리퍼를 열고, 컵의 측면으로 접근하고, 그리퍼를 닫습니다. 그런 다음 컵이 잡혔는지 확인하고, 오른쪽 테이블 위 목표 위치로 이동해 컵을 내려놓습니다. 마지막으로 카메라로 컵이 놓였는지 확인합니다.

실행 중에 문제가 생길 수 있습니다. 컵을 잡았다고 생각했지만 그리퍼 센서가 물체를 감지하지 못할 수 있습니다. 그러면 로봇은 컵 위치를 다시 보고, 조금 더 낮은 위치에서 다시 잡을 수 있습니다. 오른쪽 테이블 위가 비어 있지 않다면 다른 빈 공간을 찾거나 사용자에게 물어볼 수 있습니다. 컵을 내려놓은 뒤 컵이 쓰러졌다면 다시 세울 수 있는지 판단하거나 실패를 보고해야 합니다.

성공한 경우 로봇은 단순히 "완료했습니다"라고 말하는 데서 끝나지 않습니다. 내부적으로는 빨간 컵이 목표 영역에 있고, 그리퍼가 비어 있으며, 로봇팔이 안전 자세로 돌아왔고, 주변에 충돌 위험이 없다는 상태를 확인합니다. 그제야 작업이 끝났다고 판단합니다.

이 예제는 간단해 보이지만, 앞으로 배울 대부분의 주제가 들어 있습니다. 객체 검출, 깊이 추정, 좌표 변환, 경로 계획, 파지, 결과 확인, 실패 감지, 재계획, LLM 기반 작업 분해가 모두 연결됩니다.

LLM은 지휘자, 로봇 스킬은 연주자

자연어 명령 로봇을 이해할 때 좋은 비유가 있습니다. LLM은 오케스트라의 지휘자에 가깝고, 로봇 스킬은 각각의 악기 연주자에 가깝습니다.

지휘자는 곡의 흐름을 이해하고 어느 악기가 언제 연주할지 지시합니다. 하지만 지휘자가 바이올린 줄을 직접 누르거나 트럼펫의 공기압을 직접 조절하지는 않습니다. 그 일은 각 연주자가 합니다.

마찬가지로 LLM은 사용자의 의도를 해석하고 작업 순서를 만들 수 있습니다. 하지만 로봇팔의 관절 각도를 밀리초 단위로 제어하거나, 충돌 회피 경로를 직접 계산하거나, 그리퍼 모터 전류를 세밀하게 조절하는 것은 전용 제어 시스템이 맡아야 합니다.

이 구조를 지키는 것은 안전에도 중요합니다. LLM이 "대충 앞으로 이동해"라고 판단하더라도, 실제 이동 명령은 안전 제어기를 통과해야 합니다. 속도 제한, 충돌 감지, 사람과의 거리, 작업 공간 제한을 확인한 뒤에만 실행되어야 합니다.

따라서 자연어 명령 로봇의 기본 원칙은 분명합니다. LLM은 계획하고, 로봇 시스템은 검증하며, 안전 제어기는 최종 실행을 제한합니다. 어느 하나가 모든 것을 맡아서는 안 됩니다.

자연어 명령을 위한 내부 상태

로봇이 자연어 명령을 안정적으로 수행하려면 현재 상황을 기억하는 내부 상태가 필요합니다. 내부 상태는 로봇이 지금 무엇을 알고 있고, 무엇을 하고 있으며, 어떤 문제가 발생했는지 정리한 작업 기억입니다.

예를 들어 로봇은 현재 명령, 대상 객체 후보, 선택된 목표 좌표, 실행 중인 스킬, 마지막 실패 원인, 사용자에게 확인받은 내용 등을 기억해야 합니다. 그래야 중간에 실패해도 맥락을 잃지 않습니다.

만약 컵을 찾지 못해 사용자가 "왼쪽 선반 위에 있는 컵 말이야"라고 추가로 말한다면, 로봇은 이전 명령과 새 정보를 합쳐야 합니다. 처음 명령의 대상은 컵이었고, 새 정보는 위치 힌트입니다. 이 둘을 결합해 다시 인식해야 합니다.

대화형 로봇에서는 이런 상태 관리가 특히 중요합니다. 사용자의 명령은 한 번에 완성되지 않을 수 있습니다. 여러 번의 대화에 걸쳐 목표가 정해질 수 있습니다. 로봇은 대화를 단순한 문장들의 목록이 아니라, 하나의 작업을 완성해 가는 과정으로 다루어야 합니다.

자연어 명령 로봇의 최소 구조

이 책의 최종 목표는 거대한 연구용 시스템을 그대로 복제하는 것이 아닙니다. 독자가 직접 이해하고 확장할 수 있는 AI 로봇 에이전트 구조를 만드는 것입니다. 가장 작은 형태의 자연어 명령 로봇은 다음 구성 요소를 가질 수 있습니다.

  1. 명령 해석기: 사용자의 자연어에서 목표와 조건을 추출합니다.

  2. 환경 인식기: 카메라나 센서로 객체와 장소를 찾습니다.

  3. 작업 계획기: 목표를 스킬 순서로 나눕니다.

  4. 스킬 실행기: detect, move, pick, place 같은 행동을 실행합니다.

  5. 상태 확인기: 각 단계의 성공 여부와 완료 기준을 검사합니다.

  6. 재계획기: 실패하거나 불확실할 때 다음 행동을 정합니다.

  7. 안전 관리자: 실행 가능한 행동과 금지된 행동을 구분합니다.

처음부터 모든 기능을 완벽하게 만들 필요는 없습니다. 처음에는 시뮬레이션에서 정해진 물체 하나를 찾고, 정해진 위치에 놓는 단순한 시스템으로 시작할 수 있습니다. 그다음 객체 종류를 늘리고, 장소 표현을 추가하고, 실패 감지를 넣고, LLM으로 작업 분해를 자동화할 수 있습니다.

중요한 것은 구조를 처음부터 나누어 두는 것입니다. 카메라 인식 코드, 로봇팔 제어 코드, LLM 프롬프트, 안전 조건이 한 파일 안에 뒤섞이면 작은 데모는 가능해도 확장하기 어렵습니다. 반대로 각 기능이 스킬과 상태를 중심으로 연결되어 있으면 새로운 기능을 붙이기 쉬워집니다.

이후 장을 읽는 지도

이 장은 앞으로의 여정을 위한 지도입니다. 지금 당장 모든 기술을 구현할 필요는 없습니다. 대신 각 기술이 전체 흐름의 어디에 들어가는지 기억하면 됩니다.

카메라와 비전은 명령 속 객체를 현실의 물체와 연결합니다. 로봇팔 조작은 선택된 물체를 실제로 집고 옮깁니다. 모방학습은 사람이 보여준 행동을 바탕으로 로봇이 더 자연스러운 스킬을 배우게 합니다. 강화학습은 반복 실험을 통해 목표에 도달하는 행동을 개선합니다. LLM은 사용자의 말을 이해하고, 작업을 나누고, 실패했을 때 다시 계획하는 상위 판단을 담당합니다.

결국 자연어 명령 로봇은 하나의 모델이 아니라 여러 기술이 맞물린 시스템입니다. 좋은 로봇 에이전트는 말을 잘 알아듣는 데서 끝나지 않습니다. 세상을 보고, 좌표를 계산하고, 안전하게 움직이고, 실패를 인정하고, 다시 시도합니다.

앞으로 우리는 이 전체 흐름을 하나씩 분해해 배울 것입니다. 먼저 로봇이 세상을 어떻게 보는지부터 시작합니다. 자연어 명령이 실제 행동이 되려면, 로봇에게도 눈이 필요하기 때문입니다.

책 목록

AI 로봇 에이전트 만들기: 비전·로봇팔·학습·LLM으로 자연어 명령을 실행하는 로봇

전체 목차 보기

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

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

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

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

참여하기