피지컬 AI를 손으로 만져 보려면 보통 로봇이 필요합니다. 저가 로봇팔 하나가 20만 원대부터 시작하니 못 살 정도는 아닙니다. 사는 순간 조립과 캘리브레이션, 고장과 부품 수급이 줄줄이 따라붙습니다. 거기서 멈칫하다 질문을 바꿨습니다. 하드웨어 없이 어디까지 갈 수 있을까.
답은 시뮬레이터였습니다. 물리 엔진 안에 로봇을 세우면 실물 직전까지는 갑니다. 다만 그 길이 "직전"에서 멈추는 데모로 끝나기 쉽습니다. 목표를 한 칸 올렸습니다. 미리 녹화한 동작을 재생하는 게 아니라, 직접 학습시킨 정책이 그 자리에서 로봇의 몸을 실시간으로 제어하게 만드는 것.
재생이 아니라 제어
처음 만든 트윈은 정직한 재생기였습니다. 데스크탑에서 동작을 한 번 기록해 두면, 브라우저는 그 좌표를 프레임마다 되짚어 그립니다. 보기에는 그럴듯해도 로봇은 아무것도 결정하지 않습니다. 그저 녹화된 길을 따라갑니다.
진짜 제어는 닫힌 고리입니다. 매 순간 로봇의 상태를 읽어 정책에게 묻고, 정책이 내놓은 명령을 다시 물리 엔진에 먹입니다. 관측에서 행동으로, 행동에서 다음 관측으로. 이 고리가 1초에 50번 돌아야 로봇이 스스로 균형을 잡고 발을 내딛습니다.
그 정책을 어디서 구하느냐. 사 오는 대신 직접 학습시키기로 했습니다. MuJoCo Playground라는 시뮬레이션 환경에서 보행을 강화학습으로 빚고, 학습된 신경망을 ONNX 한 파일로 뽑아 브라우저로 옮기는 길입니다.

먼저 네발 로봇 Go1으로 길을 깔았습니다. 학습은 생각보다 빨랐습니다. 그래픽카드 한 장에 9분 남짓. 뽑아낸 정책은 브라우저 안에서 명령한 방향으로 걸어갔습니다. 슬라이더를 끌면 그 자리에서 방향이 꺾입니다. 녹화된 영상이 아니라 신경망이 매 순간 판단해 만든 걸음.
휴머노이드, 그리고 진짜 벽
네발이 됐으니 사람 형태로 올라갈 차례. Unitree G1은 관절이 29개인 휴머노이드입니다. 학습은 오래 걸렸어도 결국 수렴했습니다.

벽은 학습 다음에 있었습니다. 정책에게 건네는 관측값을 학습 환경과 브라우저에서 한 치도 다르지 않게 맞추는 일입니다.
설명이 좀 필요합니다. 정책은 숫자 덩어리를 받아 동작을 내놓습니다. 네발 로봇은 그 덩어리가 48개, 휴머노이드는 103개입니다. 단순히 길어진 게 아닙니다. 명령이 중간에 끼어들고, 걸음의 박자를 알려 주는 시계 같은 값이 새로 붙습니다. 이 시계는 로봇의 몸 바깥에서 따로 돌려야 하는 값입니다. 학습할 때와 브라우저에서 똑같은 속도로 돌지 않으면 정책이 곧장 넘어집니다.
숫자 하나의 순서가 어긋나거나, 부호가 뒤집히거나, 박자가 반 칸 밀려도 결과는 똑같습니다. 로봇이 첫 발에서 고꾸라집니다. 학습 환경이 실제로 본 관측값을 그대로 박제해 두고, 브라우저가 만든 관측값과 한 자리씩 맞대 봤습니다. 오차가 0이 될 때까지. 정책이 똑똑해서 걷는 게 아닙니다. 정책이 보는 세계가 학습할 때와 정확히 같아서 걷습니다.
이 벽을 넘고 나니 휴머노이드가 브라우저 안에서 걸었습니다. 명령을 주면 그 방향으로, 넘어지지 않고.
안다는 것과 걷게 하는 것
지난 글에서 논문을 읽어 아는 것과 직접 돌려 아는 것이 다르다고 적었습니다. 이번에도 같은 자리에 섰습니다. 강화학습으로 보행을 학습한다는 문장은 누구나 압니다. 그 문장과, 휴머노이드가 내 화면에서 한 걸음을 떼는 일 사이에는 관측값 103개를 바이트 단위로 맞추는 노동이 들어 있습니다. 어느 논문에도 적혀 있지 않은 노동입니다.
로봇을 끝내 사지 않았습니다. 대신 시뮬레이터 안에서 네발과 사람 형태가 직접 학습한 정책으로 걷고, 그 옆에 로봇팔과 손까지 여덟 종류가 한 갤러리에 섰습니다. 새 로봇을 더하는 데 드는 자바스크립트는 0줄. 설정 파일에 한 항목을 추가하면 그만입니다.
직접 보시는 편이 빠릅니다. 라이브 데모를 열어 화면 오른쪽 슬라이더를 끌어 보세요. 휴머노이드가 당신이 가리킨 방향으로 걷습니다. 미리 녹화한 영상이 아닙니다. 그 순간 신경망이 만들어 내는 걸음입니다. 하드웨어 없이도 여기까지는 옵니다.
- MuJoCo Playground (Google DeepMind) — 보행 정책 강화학습 환경
- MuJoCo WebAssembly (DeepMind) + onnxruntime-web — 브라우저 물리/추론
- Unitree Go1 · G1, mujoco_menagerie — 로봇 모델



