로봇에게 “책상 위에 있는 빨간 컵을 옮겨줘”라고 말하면, 로봇이 알아서 카메라로 컵을 찾고, 팔을 뻗어 잡고, 원하는 위치로 이동시킬 수 있을까요? 최근 구글 로보틱스 팀이 발표한 Code as Policies(CaP)는 이런 자연어 명령을 곧바로 실행 가능한 로봇 제어 코드로 변환하는 새로운 패러다임을 보여줬어요. 오늘은 LLM과 로봇 인터페이스의 핵심 기술인 Code as Policies가 어떤 원리로 작동하고, 어떤 의미를 갖는지 자세히 살펴볼게요.
Code as Policies란 무엇인가요
Code as Policies는 2022년 구글 로보틱스 팀(Liang, Huang, Xia 등)이 제안한 로봇 제어 프레임워크예요. 핵심 아이디어는 단순해요. 대형 언어 모델(LLM)이 자연어 명령을 받아서, 그 명령을 수행할 수 있는 파이썬 코드를 즉석에서 생성하고, 로봇이 그 코드를 실행하도록 만드는 것이에요.
기존 로봇 제어 방식의 한계
전통적인 로봇 제어는 두 가지 큰 흐름이 있었어요. 하나는 사람이 직접 모션 플래너나 컨트롤러를 코드로 작성하는 방식이고, 다른 하나는 강화학습이나 모방학습으로 정책 네트워크(policy network)를 학습시키는 방식이었어요. 전자는 새로운 작업마다 엔지니어가 직접 코드를 짜야 하는 부담이 크고, 후자는 매번 수많은 시연 데이터나 시뮬레이션이 필요해서 일반화가 어려웠죠.
코드 생성이라는 새로운 접근
Code as Policies는 이 두 한계를 우회해요. LLM은 이미 수많은 코드와 자연어 데이터를 학습했기 때문에, 사람이 의도한 작업을 코드 형태로 표현하는 능력이 뛰어나요. 연구진은 이 점에 주목했어요. “로봇 정책(policy)을 신경망 가중치가 아니라, 그때그때 LLM이 짜내는 파이썬 코드로 표현하면 어떨까?”라는 발상이 출발점이었죠.

Code as Policies의 작동 원리
Code as Policies는 단순한 코드 생성을 넘어서, 계층적이고 재귀적인 구조를 갖고 있어요. 명령이 복잡할수록 여러 단계로 코드를 나눠서 생성하고, 각 단계가 또 다른 코드 생성을 호출하는 식이에요.
퓨샷 프롬프팅과 API 정의
CaP의 LLM은 일종의 “API 사용 설명서”를 프롬프트로 받아요. 예를 들면 get_obj_pos(name), put_first_on_second(arg1, arg2) 같은 함수들이 로봇이 이미 갖고 있는 기본 능력으로 정의되어 있어요. 그리고 몇 가지 예시(few-shot examples)를 함께 보여줘요. “테이블 위의 모든 블록을 모아라”라는 명령에는 어떤 식의 코드가 나오는지 말이에요.
계층적 코드 생성
핵심 기법 중 하나는 계층적 코드 생성(hierarchical code generation)이에요. LLM이 코드를 작성하다가 아직 정의되지 않은 함수를 호출해야 할 상황이 오면, 그 함수의 구현체를 다시 LLM에 요청해서 즉석에서 만들어내요. 즉 코드가 코드를 부르고, 그 코드가 또 다른 코드를 부르는 트리 구조가 형성되는 거죠. 이렇게 하면 복잡한 명령도 작은 단위로 분해해서 처리할 수 있어요.
제어 흐름과 수치 계산까지 LLM에 위임
놀라운 점은 LLM이 단순히 함수를 호출하는 데 그치지 않고, if-else 분기, for 루프, numpy 기반 수치 계산까지 직접 작성한다는 거예요. 예를 들어 “물체들을 가까운 순서대로 정렬해서 옮겨라” 같은 명령은 거리 계산, 정렬, 반복 실행이 모두 필요한데, CaP는 이걸 한 번에 코드로 풀어내요.
실제 어떤 작업이 가능한가요
논문과 데모 영상을 보면 CaP는 정말 다양한 작업을 처리할 수 있어요. 단순한 픽 앤 플레이스부터 공간 추론, 시각적 추론까지 폭넓게 다뤄요.
공간 추론과 위치 계산
“빨간 블록을 노란 블록과 파란 블록 사이에 놓아라” 같은 명령에서, LLM은 두 블록의 좌표를 가져와 중점을 계산하고 그 위치로 빨간 블록을 옮기는 코드를 만들어요. 사람이 일일이 좌표 계산 로직을 짜지 않아도, 자연어로 의도만 전달하면 되는 거예요.
새로운 개념의 즉석 정의
CaP의 강력함 중 하나는 새로운 개념을 그 자리에서 정의할 수 있다는 점이에요. “Smile 모양으로 블록을 배치하라”고 하면, LLM은 미소 형태의 좌표 패턴을 계산해서 그에 맞게 블록을 배치하는 코드를 만들어요. 학습 데이터에 없던 작업도 일반 지식으로 풀어낸다는 의미죠.
오류 처리와 안전 점검
CaP는 단순히 동작 명령만 내리는 게 아니라, 코드 안에 안전 점검을 넣을 수도 있어요. “잡기 전에 물체가 정말 그 위치에 있는지 확인하고, 없으면 다시 인식하라” 같은 분기 처리를 자연어로 부탁하면 LLM이 그에 맞는 try-except나 조건문을 작성해 줘요.
Code as Policies의 의의와 한계
CaP가 보여준 가능성은 컸지만, 모든 문제를 해결하지는 않았어요. 이 기술의 의의와 함께 현실적 제약도 짚어볼게요.
로봇 학습 패러다임의 전환
가장 큰 의의는 로봇 학습 패러다임 자체를 바꿨다는 점이에요. 기존에는 정책을 학습하기 위해 막대한 데이터를 모으거나, 시뮬레이션에서 수억 번의 시행착오를 거쳤어요. CaP는 LLM의 사전 지식을 활용해 학습 없이도 새 작업을 수행할 수 있다는 걸 보여줬어요. 이는 이후 SayCan, VoxPoser, RT-2 같은 후속 연구들의 기반이 됐죠.
기본 API의 한계와 의존성
다만 CaP가 마법은 아니에요. 가장 큰 제약은 로봇이 이미 갖고 있는 저수준 능력(perception API, motion primitive)에 의존한다는 점이에요. 예를 들어 get_obj_pos() 같은 함수가 정확하게 작동해야만 LLM이 짠 코드가 의미 있게 동작해요. 기본 인식이 흔들리면 그 위의 코드도 무너져요.
동적 환경과 폐쇄 루프 제어
또 하나의 한계는 실시간 폐쇄 루프 제어예요. CaP는 명령을 받아 한 번에 코드를 생성하고 실행하는 방식이라, 실행 도중 환경이 바뀌면 대응이 어려워요. 사람이 물건을 옮기거나 예상치 못한 장애물이 나타나면 처음부터 다시 코드를 생성해야 하는 식이죠. 최근 연구들은 이 부분을 보완하기 위해 주기적인 재계획(replanning)이나 VLA(Vision-Language-Action) 모델 같은 방향으로 발전하고 있어요.
후속 연구와 Physical AI의 흐름
Code as Policies가 2022년 발표된 이후, LLM 기반 로봇 제어 분야는 폭발적으로 성장했어요. 이 흐름을 살펴보면 Physical AI라는 새로운 영역의 윤곽이 보여요.
VoxPoser와 3D 공간 추론
VoxPoser는 CaP의 아이디어를 확장해서 3D 복셀 공간에서의 가치 함수(value map)를 LLM이 생성하도록 했어요. 좌표 단위 계산을 넘어서, 공간 전체에 대한 어디로 갈지·어디는 피해야 할지의 지도를 만들어 그 위에서 경로를 계획하는 방식이에요.
SayCan과 능력 기반 행동 선택
SayCan은 다른 방향의 접근이에요. LLM이 코드를 짜는 대신, 로봇이 가진 여러 스킬 중에서 현재 상황에 적절한 것을 선택하도록 했어요. 언어 모델의 의도 이해와 로봇의 실제 능력(affordance)을 결합해서, 실제 실행 가능한 행동만 선택하게 만든 거죠.
VLA 모델과 통합형 정책
최근 RT-2, OpenVLA 같은 Vision-Language-Action 모델은 코드 생성 단계 자체를 없애고, 이미지와 명령을 입력받아 곧바로 로봇 행동(action token)을 출력해요. CaP가 시작한 LLM과 로봇의 만남이 이제 더 통합된 형태로 진화하고 있는 셈이에요. 자세한 연구 흐름은 Wikipedia의 Robot learning 문서를 참고하면 좋아요.
현장 적용과 앞으로의 과제
Code as Policies와 그 후속 연구들은 연구실 시연을 넘어 실제 산업 현장에서도 점차 활용되고 있어요. 다만 도입을 위해서는 풀어야 할 과제도 적지 않아요.
제조와 물류 현장의 활용
물류 창고에서 다양한 형태의 박스를 분류하거나, 협동로봇이 작업자의 자연어 지시를 받아 조립을 보조하는 식의 활용이 시작되고 있어요. 기존에는 작업이 바뀔 때마다 엔지니어가 프로그램을 다시 짜야 했지만, LLM 기반 인터페이스 덕분에 현장 작업자가 직접 로봇에게 새 작업을 가르칠 수 있게 됐어요.
지연 시간과 신뢰성
실시간 응답이 중요한 작업에서는 LLM의 추론 지연이 문제가 돼요. 한 번의 명령에 수 초가 걸리면 사람과 협업하기 어려워요. 작은 LLM의 로컬 실행, 캐시된 코드 재사용, 핫경로의 사전 컴파일 같은 기법이 활발히 연구되고 있어요.
안전성과 검증
가장 중요한 과제는 안전성이에요. LLM이 생성한 코드가 사람을 다치게 하거나 장비를 손상시키지 않는다는 보장을 어떻게 할까요? 정적 분석, 시뮬레이션 사전 검증, 안전 영역(safety envelope) 제약 같은 다중 안전장치가 필수예요. Physical AI가 본격적으로 사회에 들어오려면 이 부분의 표준화가 반드시 따라와야 해요.
마치며
Code as Policies는 자연어와 로봇 사이의 거리를 코드라는 매개체로 좁힌 중요한 작업이에요. LLM의 일반 지식을 활용해 즉석에서 로봇 정책을 만들어내는 발상은, 이후 SayCan·VoxPoser·VLA 모델로 이어지며 Physical AI라는 큰 흐름을 만들었어요. 아직 실시간성과 안전성 같은 과제가 남아 있지만, 사람이 자연어로 로봇과 협업하는 미래는 더 이상 먼 이야기가 아니에요. 앞으로의 발전을 지켜보면서, 우리 일상이 어떻게 바뀔지 기대해 봐도 좋을 것 같아요.