2026년 8월 1일 업데이트. G1은 Isaac Sim에서 전진 보행의 1차 기준을 통과했고, 정량 평가와 사람이 직접 확인한 화면을 함께 근거로 승인한 체크포인트를 보관하고 있습니다. 다만 방향 전환, 외란 회복, 실제 로봇 검증과 실행 라우터 연결은 아직 다음 단계입니다. 아래 본문은 이 결과만이 아니라, 그 결과를 다시 설명할 수 있도록 작업의 경계를 만든 이유를 다룹니다.
이 프로젝트의 첫 결과물은 걷는 휴머노이드도, 학습된 VLA도 아니었습니다. 서로 다른 종류의 작업이 섞여도 다음 단계가 무엇인지 잃지 않게 하는 폴더와 기록의 경계였습니다. 프로젝트 초기에는 H1 보행 환경과 WBC-lite 구성요소 테스트가 중심이었고, G1은 관측·환경 코드부터 시작했습니다. 이후 G1 실험은 후보 정책과 형태·raw-action gate를 비교하는 단계까지 진행됐습니다. 이 상태를 한 문장으로 ‘휴머노이드 로봇을 만들고 있다’고만 부르면, 이미 검증한 것과 계획을 구분하기 어렵습니다.
그래서 저는 프로젝트를 다섯 층으로 나눴습니다. research-notes/에는 논문과 설계 판단을, sim/에는 Isaac Sim/Lab 환경과 로봇 에셋을, training/에는 IL·RL 학습 코드를, data/와 models/에는 Git으로 추적하지 않는 실제 데이터와 가중치를, robot-control-router/에는 실행 시 백엔드를 선택하는 인터페이스를 둡니다. 폴더를 예쁘게 정리하려는 목적이 아니라, 변경이 생겼을 때 어느 층의 기록을 함께 고쳐야 하는지 알기 위한 분리입니다.
Isaac Sim과 Isaac Lab의 역할부터 분리했습니다
두 이름은 함께 설치되지만 제 작업에서는 같은 층이 아닙니다. Isaac Sim은 USD로 표현한 로봇과 장면, 물리 접촉, 센서와 렌더링이 존재하는 실행 기반입니다. Isaac Lab은 그 위에서 로봇에게 무엇을 보여 주고 무엇을 행동으로 받으며, 어떤 결과에 보상을 주고 언제 에피소드를 끝낼지를 정하는 학습 환경입니다. 화면에 H1이나 G1이 서 있는 것만으로는 아직 학습 태스크가 아닙니다. observation, action, reward, termination이 연결돼야 비로소 정책이 반복해서 답할 질문이 생깁니다.
이 경계를 먼저 만든 이유는 실패 위치를 좁히기 위해서였습니다. 로봇이 넘어졌을 때 USD의 관성·충돌 설정이 잘못된 것인지, reset 자세가 불안정한 것인지, 보상이 제자리 버티기를 유도한 것인지, policy action이 포화된 것인지 한꺼번에 고치면 다음 실행에서도 원인을 알 수 없습니다. 그래서 H1에서는 flat 환경과 WBC 구성요소 검사를 먼저 두고, G1에서는 환경 골격을 만든 뒤 후보 정책·형태·raw-action 평가를 별도 산출물로 나눴습니다.
현재 동작하는 것과 연결만 남은 것을 섞지 않습니다
라우터에서는 scripted와 WBC 경로가 동작하고 RL checkpoint loading 경로도 구현됐습니다. 다만 현재 G1 후보는 승격되지 않았고 VLA 모델 서비스도 연결 전입니다. H1에는 3,000 iteration 체크포인트가 있지만 자연 보행의 합격 기준을 통과한 결과로 받아들이지 않았고, reward v2 재학습이 다음 작업으로 남았습니다. WBC 구성요소 테스트는 28개 항목을 통과했습니다. 이 세 문장은 모두 ‘프로젝트가 얼마나 멀리 왔는지’보다, 다음 판단이 어떤 증거 위에 서야 하는지를 설명합니다.
시뮬레이터를 먼저 둔 이유
휴머노이드에서는 제어 실패가 단순한 에러 메시지로 끝나지 않습니다. 접촉, 자세, 보상, 로봇 모델 중 무엇이 문제인지 나눠 봐야 합니다. Isaac Sim과 Isaac Lab을 우선 환경으로 둔 것은 실제 장비를 대신했다는 뜻이 아니라, 같은 조건을 반복해 물을 수 있는 장소가 먼저 필요했기 때문입니다. GUI가 Blackwell 드라이버 조합에서 충돌한 기록까지 남긴 이유도, 환경 조건이 바뀌면 이후의 관찰도 다시 해석해야 하기 때문입니다.
처음부터 자연어 명령과 VLA를 연결하지 않은 이유도 같습니다. 언어 모델이 낸 목표가 틀렸는지, 저수준 제어기가 목표를 실행하지 못했는지, 시뮬레이터 접촉이 불안정한지 구분할 기준선이 없으면 멋진 데모 한 번은 만들 수 있어도 다음 실패를 설명할 수 없습니다. 현재는 scripted와 WBC 경로로 실행 계약을 먼저 확인하고, RL은 평가 관문을 통과한 checkpoint만 연결하며, VLA는 조작 데이터와 서버가 준비된 뒤 여는 순서로 두었습니다.
첫 성과를 ‘정답’이 아니라 반복 가능한 질문으로 잡았습니다
이 설계에서 첫 성과는 로봇이 몇 미터 걸었다는 장면이 아니었습니다. 동일한 환경 설정으로 다시 실행할 수 있고, 결과가 어떤 코드와 설정에서 나왔는지 찾을 수 있으며, 실패한 관문이 다음 실험을 결정하는 상태였습니다. WBC 28개 점검 통과는 컴포넌트 경계를 확인했고, H1 3,000 iteration checkpoint는 학습 경로가 실행된 사실을 남겼으며, G1의 M160a 7/7은 CPU 자극 설계만 승인했습니다. 서로 다른 세 결과를 한 단계의 ‘완료’로 합치지 않는 것이 이 Lab의 첫 운영 원칙이 됐습니다.
‘Lab’은 완성된 연구실의 이름이 아니라, 논문에서 나온 질문이 시뮬레이션·데이터·학습·평가를 거쳐 다시 기록으로 돌아오는 작업 방식을 가리킵니다. 앞으로 이 블로그에서는 결과만 나열하지 않고, 이 경계 위에서 무엇이 검증됐고 무엇이 아직 연결되지 않았는지를 계속 구분해 남길 생각입니다.
함께 읽기: 현재 워크스페이스 구성도 · 전체 파이프라인