철도피지컬AI연구실 로고 휴머노이드 물류 가상 시연 공부 노트MuJoCo · 강화학습 · 월드모델 · VLA · 2026-10-30 기준

00이 노트

앉아 있는 휴머노이드 Unitree G1이 상자 안 철도 부품 4종을 종류별로 좌우 선반 칸에 넣는 일을, 로봇 없이 컴퓨터 안에서 만들고 가르치고 평가한 과정을 정리한 노트입니다. 조건마다 1,000 에피소드를 돌린 기본 조건에서 사람이 짠 규칙은 56.9 %를 성공했고, 강화학습으로 다듬은 정책은 81.9 %를 성공했습니다.

앞쪽 절은 처음 보는 사람을 위한 기초 개념입니다. 물리 시뮬레이션, 로봇 팔을 움직이는 계산, 모방학습과 강화학습, 월드모델, VLA를 차례로 다룹니다. 개념마다 아래에 "이 프로젝트에서" 칸을 두어 실제로 어떤 파일과 숫자로 쓰였는지 적었습니다. 09절에는 일마다 어느 PC가 맡는지 표로 정리했습니다.

읽는 법

절 제목을 누르면 펼쳐집니다. 처음에는 이 절만 펼쳐져 있습니다. 머리의 목차 단추로 어느 절이든 건너뛸 수 있고, 모르는 약어는 11절 용어 사전에 있습니다.

자료가 있는 곳

무엇어디
프로젝트 폴더D:\2_POC\1_휴머노이드 (프로그램들은 ASCII 정션 C:\hl로 연다)
계획·진행 기록PLAN.md, PROGRESS.md(최신이 맨 아래)
모든 수치의 원본sim/params.json, 비교 결과 out/results.json
참고 자료 대조docs/REFERENCES_2026-10.md
이 노트의 수치는 2026-10-30 새벽 기준입니다. Cosmos 새 각도 영상 4개와 증강 판정은 끝났고, 월드모델 평가, GR00T 미세조정, 1,000 에피소드 비교는 아직 돌고 있어 결과가 나오면 고칩니다.

01휴머노이드와 물류

2026년 들어 휴머노이드가 실제 일을 하는 곳은 주로 물류입니다. 토트(손잡이 없는 플라스틱 상자)를 나르고, 택배를 나누고, 부품을 정해진 자리에 놓는 일입니다.

최근 동향

시기내용
2026-05Figure가 Helix-02 로봇으로 택배 분류를 191시간 넘게 생중계했다고 발표. 10시간 경주에서 로봇 12,732개, 사람 12,924개(회사 수치).
2026-05China Post 광저우 거점에서 RobotEra M7이 시간당 1,200개 택배 분류.
2026-08UBTECH·Galbot·AgiBot이 BYD·CATL·Foxconn 공장 수주. 상반기 휴머노이드 출하 추정 1.9만~2.2만 대, 그중 Unitree 약 5,900대.
2026-09현대 조지아 공장에 Atlas 훈련 센터. 첫 작업은 부품 물류와 순서 맞추기.
2026-10Schaeffler 타이창 시설에서 휴머노이드 6대가 부품 분류·조립·검사·포장. Agility는 GXO 사이트에 Digit을 더 배치.

시간당 처리량throughput, items per hour

정해진 시간 동안 끝낸 물건 수입니다. 업계는 성공률과 함께 이 숫자로 성과를 말합니다. 실패한 시도에 쓴 시간도 전체 시간에 들어가므로, 성공률이 같아도 빠르면 처리량이 오릅니다.

비교표에 시간당 처리량을 넣었습니다. 실패한 에피소드의 시간과, 물건 사이에 초기 자세로 돌아가는 0.8초까지 포함해 계산합니다(sim/evaluate.py). 기본 조건 1,000 에피소드에서 규칙 기반 287개, 강화학습 후 594개입니다.

Unitree G1과 Dex3 손Unitree G1 humanoid, Dex3-1 hand

키 1.3 m급 휴머노이드입니다. 손 포함판은 관절 모터가 43개(다리 12, 허리 3, 팔 7×2, 손 7×2)이고 무게는 34.4 kg입니다. Dex3 손은 엄지 하나와 손가락 둘로 집습니다.

Google DeepMind의 공개 모델 모음(MuJoCo Menagerie)에 있는 g1_with_hands.xml을 썼습니다. 의자에 앉은 자세라 다리 관절은 앉은 각도로 굳히고 허리와 두 팔·두 손만 움직입니다.

이 시연의 작업seated sorting task

탁자 위 얕은 상자(안쪽 32×36 cm, 벽 3.5 cm)에 포장된 철도 부품이 4~7개 섞여 있습니다. 종류마다 놓을 칸이 정해져 있고, 칸이 있는 쪽 손이 옮깁니다.

볼트 상자(5×7×4.4 cm, 0.30 kg)·베어링 통(지름 5.6 cm, 0.35 kg)은 오른쪽 선반, 브레이크 패드 상자(10×5×4 cm, 0.40 kg)·부품 키트 봉투(8×6×4 cm, 0.12 kg)는 왼쪽 선반으로 갑니다. 치수는 Dex3로 집을 수 있는 높이(약 4 cm)로 맞췄습니다(sim/params.json).

02물리 시뮬레이션

물리 시뮬레이션은 물체의 무게, 마찰, 관절, 모터 힘을 수식으로 두고 아주 짧은 시간 간격마다 다음 상태를 계산하는 프로그램입니다. 로봇이 물건을 파지했는지, 미끄러졌는지는 이 계산의 결과입니다.

MuJoCoMulti-Joint dynamics with Contact

로봇 연구에서 널리 쓰는 공개 물리 엔진입니다. 접촉(물체끼리 닿는 힘)을 빠르고 안정되게 풀고, 같은 모델을 파이썬과 웹 브라우저(WASM) 양쪽에서 돌릴 수 있습니다.

MuJoCo 3.17을 썼습니다. 시간 간격 2 ms, 제어 주기 40 ms(물리 20스텝마다 행동 한 번). 한 제어 주기 계산에 약 1.7 ms가 들어, 한 에피소드(최대 200주기)이 0.3~0.5초에 끝납니다. 장면은 sim/scene.py가 모델 편집 도구(MjSpec)로 만듭니다.

적분기integrator

힘으로 다음 속도와 위치를 구하는 계산 순서입니다. 빠른 근사 방식은 가벼운 물체가 여럿 쌓이면 값이 폭발(발산)할 수 있습니다.

G1 모델 기본값인 implicitfast는 물건 8개를 쌓으면 40 에피소드 중 19 에피소드가 발산했습니다. 완전 암시적 방식(implicit)으로 바꾸자 40 에피소드 모두 안정됐고 계산도 더 빨랐습니다.

충돌 모양과 볼록 껍질collision geometry, convex hull

물리 엔진은 복잡한 메시를 그대로 쓰지 않고 바깥을 감싸는 볼록한 모양(볼록 껍질)으로 바꿔 충돌을 계산합니다. 오목한 곳이 채워지므로 실제에는 없는 충돌이 생길 수 있습니다.

몸통 볼록 껍질이 어깨 오목한 곳까지 채워서, 팔을 안쪽으로 모으면 어깨가 몸통에 걸렸습니다. 손이 물건까지 못 내려간 32번 중 10번이 이 때문이어서, 몸통과 어깨 링크 사이 충돌만 껐습니다.

도메인 무작위화domain randomization

학습할 때마다 물체 무게, 마찰, 위치 등을 조금씩 바꿔, 정책이 한 가지 조건에만 맞춰지지 않게 하는 방법입니다.

에피소드마다 물건 무게 0.6~1.5배, 마찰 0.7~1.3배, 랙 위치 ±1 cm, 물체 위치 추정 잡음 3 mm를 섞었습니다. 시험할 때는 이 범위 밖 조건(무게 1.5배, 마찰 0.6배, 손가락 힘 35 % 등)도 따로 넣었습니다(sim/env.py의 CONDITIONS).
수치는 시뮬레이션 안의 가정값입니다. 실물 G1에서 같은 성공률이 나올지는 시험하지 않았습니다.

03로봇 팔을 움직이는 계산

사람은 "손을 저기로" 하고 생각하지만, 로봇은 관절 각도로 움직입니다. 엔드이펙터 목표를 관절 각도로 바꾸는 계산이 역기구학입니다.

자유도DoF, Degrees of Freedom

독립해서 움직일 수 있는 방향의 수입니다. 손 위치(3)와 자세(3)를 정하려면 최소 6이 필요하고, 그보다 많으면 같은 손 자세를 여러 팔 모양으로 만들 수 있습니다.

허리 3 + 팔 7 = 10자유도로 손 하나를 움직입니다. 남는 자유도가 4라서 팔꿈치 높이 같은 것을 따로 정할 수 있습니다.

역기구학IK, Inverse Kinematics

엔드이펙터 목표 위치·자세에서 관절 각도를 거꾸로 구하는 계산입니다. 자코비안(관절을 조금 움직일 때 손이 어떻게 움직이는지 나타내는 표)을 써서 오차를 줄이는 방향으로 여러 번 고칩니다.

감쇠 최소제곱(damped least squares)을 반복합니다(sim/kin.py). 허리는 팔보다 덜 쓰도록 가중치(yaw 0.5, roll 0.12, pitch 0.35)를 두었습니다.

영공간 자세 유지null-space posture control

손 목표에 영향을 주지 않는 방향으로만 팔을 정해 둔 기본 자세 쪽으로 당기는 방법입니다. 같은 목표라도 매번 같은 팔 모양이 나옵니다.

이것이 없을 때는 출발 자세에 따라 팔꿈치 모양이 달라져, 같은 물건을 집어도 상자 벽에 부딪히기도 했습니다. 당기는 세기는 0.03으로 두었습니다(세게 하면 오히려 팔이 상자 벽 쪽으로 밀렸음).

위치 제어 구동기position actuator, PD control

목표 각도를 주면 지금 각도와의 차이에 비례하는 힘을 내는 모터 모델입니다. 힘 한계가 있어 막히면 목표에 못 갑니다.

G1 모델은 모든 관절이 위치 제어(kp 500)입니다. Dex3 손가락 관절 힘 한계는 1.4 N·m라서 0.4 kg 상자까지 들 수 있게 물건 무게를 정했습니다.

Dex3로 위에서 집기top-down pinch grasp

손바닥을 아래로 하고 엄지와 굽힌 손가락 끝 사이에 물건을 끼워 드는 방법입니다.

Dex3는 펴면 엄지가 손바닥 아래로 약 10 cm 나와 있어, 4 cm보다 낮은 물건은 엄지가 바닥에 걸려 집지 못했습니다. 그래서 파지점을 손바닥 면 아래 5.8 cm에 두고, 물건 높이를 4 cm 안팎으로 맞추고, 편 손의 엄지 끝 관절을 −1.0 rad로 굽혀 두었습니다.

04규칙에서 학습으로

세 가지 제어기를 같은 에피소드에서 비교했습니다. 사람이 짠 규칙, 그 규칙 기반 제어기를 모방한 BC 정책(학습 전), 그 위에 강화학습으로 보정을 더한 정책(학습 후)입니다.

규칙 기반 제어기

규칙 기반 제어기scripted controller

사람이 단계를 정해 둔 프로그램입니다. 물건 위로 이동 → 내려가기 → 파지 → 들기 → 칸 위로 → 내리기 → 놓기 → 물러나기.

sim/scripted.py. 물건의 짧은 축(폭 6.2 cm 이하)을 골라 파지하고, 엄지가 상자 벽에 걸리는 방향은 피합니다. 200 에피소드에서 64.5 %(첫 평가), 최종 대응 비교에서 60.0 %였습니다.

모방학습

행동 복제BC, Behavior Cloning

시연 데이터를 보여 준 제어기가 각 상황에서 낸 행동을 신경망이 그대로 따라 하도록 학습하는 방법입니다. 시연보다 나아지지는 않습니다.

규칙 기반 시연 4,200 에피소드 가운데 성공한 2,355 에피소드(표본 30.7만 개)으로 학습했습니다(sim/bc.py, 은닉층 512-512-256, 18초). 성공률 65.0 %로 규칙 기반과 거의 같았습니다. 이것이 비교표의 "학습 전"입니다.

외란 주입 시연DART, Disturbances for Augmenting Robot Trajectories

시연 데이터를 모을 때 실행하는 행동에만 잡음을 섞고, 기록은 시연 제어기가 그 상태에서 낼 행동으로 남깁니다. BC 정책이 조금 어긋났을 때 되돌아오는 법도 배웁니다.

에피소드마다 잡음 크기를 0~0.3에서 골랐습니다(sim/collect.py, 14프로세스 145초).

강화학습

강화학습과 PPORL, Proximal Policy Optimization

정책이 직접 해 보고 받은 보상이 커지는 쪽으로 조금씩 바뀌는 학습입니다. PPO는 한 번에 너무 크게 바뀌지 않게 막아 안정적인 강화학습 방법입니다.

보상은 손과 물건 사이 거리가 줄면(들기 전), 물건과 칸 사이 거리가 줄면(든 뒤) 받고, 맞는 칸에 놓으면 +10, 다른 칸에 넣거나 떨어뜨리면 −5, 팔이 상자·랙에 부딪히면 작은 벌점입니다(sim/env.py).

잔차 강화학습residual RL

BC 정책은 고정해 두고, 그 행동에 더할 작은 보정만 강화학습으로 배우는 방법입니다. 처음에는 보정이 0이라 BC 정책 성능에서 출발하고, 좋은 동작을 잃지 않습니다. Ankile 외(2025)의 ResFiT가 다섯 손가락 휴머노이드 실물에서 이 방법으로 성공률을 14~23 %에서 약 64 %로 올렸습니다.

행동 = BC 행동 + 0.35 × 보정(sim/train_res.py). PPO 24환경으로 1,200만 스텝(약 1시간 55분, 5090 PC). 체크포인트 가운데 1,100만 스텝이 300 에피소드 85.7 %로 가장 좋아 골랐고, 고르는 데 쓰지 않은 판으로 최종 비교했습니다.

행동 공간action space

정책이 매 주기 내는 값의 종류입니다. 관절 각도를 직접 내게 할 수도 있고, 엔드이펙터 목표를 내고 아래 단계가 관절로 바꾸게 할 수도 있습니다.

정책은 5개 값을 냅니다: 엔드이펙터 목표 이동(x, y, z), 손목 회전, 파지 명령 명령. 역기구학이 관절로 바꿉니다. 왼손은 오른손을 거울에 비춘 좌표로 바꿔서, 정책 하나가 두 손을 모두 움직입니다.

05평가와 결과

세 제어기를 같은 에피소드(같은 물건 배치와 같은 무작위 조건)에서 조건마다 1,000 에피소드씩 돌렸습니다. 학습 후 정책이 여섯 조건 모두에서 규칙 기반보다 성공률이 18~27점 높았고, 시간당 처리량은 1.8~2.2배였습니다.

대응 비교paired evaluation

비교하는 제어기마다 같은 시험 문제를 주는 방법입니다. 에피소드마다 난수를 고정하면 두 제어기의 차이에서 문제 운이 빠집니다.

에피소드 번호 ep마다 난수 씨앗을 seed × 100003 + ep로 고정합니다(sim/evaluate.py). 처음에는 이것이 없어 제어기마다 다른 에피소드를 받았고, 고친 뒤 다시 쟀습니다.

최종 비교(시드 3000, 조건마다 1,000 에피소드)

조건규칙 기반학습 전(모방학습)학습 후(잔차 강화학습)
기본56.9 % · 287개/시62.7 % · 32381.9 % · 594
무거운 물건(1.5배)56.5 % · 284개/시60.8 % · 31281.8 % · 593
미끄러운 물건(마찰 0.6배)55.9 % · 282개/시61.2 % · 31583.3 % · 614
물건 8개64.1 % · 326개/시68.1 % · 35482.0 % · 584
랙 2 cm 어긋남59.9 % · 304개/시61.4 % · 31384.1 % · 623
손가락 하나 힘 35 %58.2 % · 295개/시63.4 % · 33184.5 % · 626

물건 하나 옮기는 평균 시간은 기본 조건에서 규칙 기반 5.3초, 학습 후 3.4초입니다. 상자 비우기(물건 6개, 24 에피소드)에서는 학습 후 75 %(108/144), 규칙 기반 53 %(76/144)를 칸에 넣었습니다.

이 표는 3090 PC에서 돌린 1,000 에피소드 비교입니다. 앞서 5090 PC에서 시드 2000으로 조건마다 200 에피소드를 돌린 비교(기본 82.5 % 대 60.0 %)와 순서와 차이가 같았고, 판을 다섯 배로 늘려 81.9 %의 95 % 신뢰 구간이 약 ±5점에서 ±2.4점으로 좁아졌습니다.

실패 유형

규칙 기반의 실패는 대부분 손이 집을 높이까지 못 내려가 시간이 다 된 경우였습니다. 원인은 엄지 끝이 상자 바닥에 닿음, 손목이 상자 벽에 걸림, 다른 물건에 막힘 순이었습니다(sim/diag.py). 학습 후 정책은 이 경우가 줄었고, 물건 하나 옮기는 시간도 짧아졌습니다.

06실사 렌더링

사이트의 영상은 MuJoCo가 계산한 움직임을 블렌더가 실사 재질과 조명으로 그린 것입니다. 블렌더는 움직임을 새로 만들지 않습니다.

경로 추적 렌더러path tracing, Blender Cycles

빛이 물체에 부딪혀 튀는 경로를 많이 따라가 실제 같은 그림자와 반사를 만드는 그리기 방법입니다. 샘플 수가 적으면 잡음이 생기는데, 잡음 제거기(denoiser)로 지웁니다.

MuJoCo가 1초에 25번 모든 부품의 위치·자세를 기록하고(sim/export_blender.py), 블렌더 4.5 Cycles가 그 자리에 물체를 놓고 그립니다(blender/render_anim.py, 24샘플, OptiX 잡음 제거). 프레임 하나에 5090에서 약 5~10초. 블렌더가 긴 렌더에서 메모리 부족으로 멈춰 200프레임씩 끊어 돌립니다.

CC0 재질Creative Commons Zero assets

저작권을 포기한 무료 자료라 출처 표시 없이 써도 됩니다.

창고 배경 HDRI, 콘크리트 바닥, 탁자 나무결은 Poly Haven CC0 자료입니다(assets/polyhaven). 부품 상자의 라벨(품번, 바코드 모양)은 파이썬으로 직접 그렸습니다(blender/make_labels.py).

카메라 구도camera framing

보여 주려는 것이 가리지 않게 카메라 위치와 화각을 정합니다.

처음 구도(1.75, −0.95, 1.45)에서는 오른쪽 선반이 상자를 가렸습니다. 후보 4개를 같은 프레임으로 렌더해 비교하고 (1.6, −0.45, 1.75), 렌즈 42 mm로 바꿨습니다.

07월드모델

월드모델은 지금 상태(와 행동)를 받아 다음에 세상이 어떻게 될지 예측하는 모델입니다. 이 프로젝트는 월드모델을 두 가지로 씁니다. 렌더 영상의 환경을 바꿔 보이는 증강과, 정책을 월드모델 안에서 돌려 성적을 매기는 평가입니다.

월드모델로 환경 증강

Cosmos Transfer 2.5NVIDIA Cosmos-Transfer2.5-2B

입력 영상의 깊이, 분할(segmentation), 에지(edge)를 조건으로 붙잡은 채 겉모습(배경, 조명, 재질)만 글로 설명한 대로 바꾸는 동영상 생성 월드모델입니다. 조건마다 가중치(0~1)를 줍니다.

블렌더가 같은 장면의 실사·깊이·분할(segmentation)·에지(edge) 영상을 함께 뽑습니다(blender/render_passes.py, 1280×720, 16 fps, 93프레임). 가중치는 공식 예제 값(깊이 0.6, 에지(edge) 1.0, 분할 0.4)을 그대로 씁니다. 환경은 밝은 물류센터, 철도 차량기지 부품창고, 야간 창고, 먼지 낀 낡은 창고 4가지입니다. 사이트에서는 "월드모델로 증강한 영상"으로 따로 표시합니다.

Spark에서 돌리기DGX Spark, GB10, aarch64

공식 최소 GPU 메모리가 65.4 GB라 32 GB인 5090에는 안 들어갑니다. 메모리 128 GB를 CPU·GPU가 함께 쓰는 DGX Spark에서 돌립니다.

Spark는 ARM 리눅스라 공식 도커 파일을 NVIDIA PyTorch 26.01 위에 빌드하고, 판이 맞지 않는 라이브러리 넷(nvidia-resiliency-ext, transformers 4.57.1, diffusers 0.35.2, nltk 데이터)을 맞춘 이미지 cosmos-transfer25:6을 만들었습니다(cosmos/spark/). 93프레임 한 클립에 약 46분. 첫 결과(철도 차량기지)에서 로봇 자세·손 위치·물건 위치가 원본과 같은 프레임에서 맞았고, 물건 라벨은 사라져 단색 블록이 됐습니다.

영상 성공 판정Cosmos Reason 2, VLM judge

영상을 보고 질문에 답하는 시각-언어 모델(VLM)을 채점자로 쓰는 방법입니다.

Cosmos Reason2-2B(A6000 PC GPU 0)에 원본과 증강 영상을 넣고 같은 질문 4개를 했습니다. 상자 개수 세기는 원본에서도 시뮬 기록과 틀려(선반 3이라고 답함, 실제 1) 판정에서 뺐고, "떨어뜨렸나", "옮기나" 두 질문만 씁니다. 새 카메라 각도의 원본과 증강 영상 4개에서 이 두 질문의 답(아니오, 예)이 모두 같았습니다.

월드모델 안에서 정책 평가

월드모델 기반 정책 평가world-model policy evaluation

월드모델은 "이렇게 움직이면 다음 순간 어떻게 될지"를 맞히는 신경망입니다. 물리 시뮬레이터는 물리 법칙으로 다음 순간을 정확히 계산하지만, 월드모델은 물리 법칙을 모르고 로봇이 일하는 기록을 수천 판 보면서 "이렇게 하면 대개 이렇게 되더라"를 익힙니다. 다 배우면 시뮬레이터 없이 월드모델 머릿속에서 로봇을 움직여 보고 "이 정책은 성공률이 몇 %쯤 되겠다"를 예측합니다. 실제 로봇이나 무거운 시뮬레이터 없이 정책들 가운데 잘하는 것을 고를 수 있으면 시험 비용이 크게 줄어듭니다. 2026년 OSCAR, dWorldEval 같은 연구가 이 방향입니다.

세 정책(규칙 기반, 모방학습, 잔차 강화학습)을 MuJoCo에서 돌린 기록으로 순환 신경망(GRU) 월드모델을 학습합니다(sim/wm/, 5090 PC). 그 안에서 정책 15개(세 정책 × 행동 잡음 4가지, 강화학습 중간 단계 3개)를 굴려 예측한 성공률 순위를, 실제 시뮬레이터에서 정책마다 200판씩 잰 순위와 견줍니다.

월드모델의 입력과 출력

월드모델은 0.04초마다 한 번, 지금 상태와 이번에 할 행동을 받아 0.04초 뒤를 예측합니다. 카메라 영상 대신 숫자 54개로 상태를 읽는 상태 기반 모델이라 가볍고, GPU 한 장으로 학습됩니다.

구분내용개수
입력 ① 지금 상태손 위치·방향, 손 쥠 정도, 목표 손 위치10
물건이 손에 대해 어디 있는지, 방향, 높이, 속도11
놓을 칸이 손과 물건에서 얼마나 떨어져 있는지6
물건 종류(4종 중 무엇인지)4
손가락이 물건에 닿았는지2
허리·팔 관절 각도와 각속도20
경과 시간1
입력 ② 이번 행동손을 앞뒤·좌우·위아래로 얼마나, 손목을 얼마나 돌릴지, 손을 얼마나 쥘지5
출력 ① 다음 상태숫자 54개가 0.04초 뒤 어떻게 바뀌는지와 그 예측이 얼마나 불확실한지54
출력 ② 판의 결말이번 순간에 판이 끝나는지: 계속, 성공, 떨어뜨림, 엉뚱한 칸 네 가지 확률4

머릿속에서 한 판 돌리기rollout in the world model

실제 판의 첫 상태를 넣고, 정책이 행동을 고르면 월드모델이 다음 상태를 예측하고, 그 예측을 다시 정책에 보여 주는 일을 최대 200번(8초) 되풀이합니다. 그동안 나온 성공·실패 확률을 모아 그 판의 성공 확률을 냅니다.

시간, 목표 손 위치처럼 행동만 더하면 정확히 나오는 값은 신경망이 틀릴 이유가 없어서 예측하지 않고 계산으로 채웁니다. 처음에는 8단계 앞만 예측하게 배우고 25단계, 50단계로 늘려, 길게 굴려도 덜 틀리게 합니다.

속임수 막기leave-one-family-out, baselines, pre-registration

월드모델이 평가할 정책의 기록을 미리 봤다면 성적을 맞히는 것이 당연합니다. 그래서 평가할 정책은 학습에서 빼고, 단순한 방법과도 겨루고, 합격 기준은 결과를 보기 전에 적어 둡니다.

모방학습 정책을 평가하는 월드모델은 모방학습 기록 없이 배웁니다. 그래서 "규칙 기반을 뺀 모델", "모방학습을 뺀 모델", "강화학습을 뺀 모델"을 따로 5개씩 학습해 평균을 냅니다(이 PC는 앞의 둘, 3090 PC는 강화학습을 뺀 모델). 겨루는 기준선은 순환 없는 선형 모델과 "행동 잡음 크기만 보고 성공률을 맞히는" 계산입니다. 합격 기준은 순위 상관 0.8 이상, 성공률 오차 10 %p 이내, 두 정책 중 나은 쪽 맞히기 80 % 이상이고, 10월 29일 결과를 보기 전에 sim/wm/README_KO.md에 적었습니다. 작은 시험에서는 순위가 맞지 않았지만 판 수가 적어 정답 자체가 흔들린 수준이었고, 정식 결과는 나오는 대로 적습니다.

08카메라로 보는 정책

지금 정책은 물건 위치를 시뮬레이터에서 받습니다. 실물 로봇에는 그런 정보가 없으므로, 카메라 영상만 보고 같은 일을 하는 정책이 필요합니다.

교사-학생 증류teacher-student distillation

정답 정보(물체 위치 등)를 아는 교사 정책을 먼저 강화학습으로 만들고, 카메라만 보는 학생 정책이 교사의 행동을 따라 하게 학습시키는 방법입니다. 2026년 RSS의 ViserDex, Dex-X 등이 이 흐름입니다.

교사는 학습 후 정책(200 에피소드 82.5 %, 1,000 에피소드 81.9 %)입니다. 로봇 머리에 아래를 보는 카메라를 달아 영상과 고유수용감각(관절 각, 파지 명령)을 모으고, 학생이 벗어난 상태에서도 교사의 답을 받게(DAgger) 합니다. 진행 중입니다.

VLAVision-Language-Action model

카메라 영상과 글 지시를 받아 로봇 행동을 내는 큰 모델입니다. 많은 로봇 데이터로 미리 학습돼 있어 적은 데이터로 미세조정합니다.

NVIDIA GR00T(공개판 N1.6 이후)를 A6000 PC의 GPU 1번(48 GB)에서 미세조정합니다. 시뮬레이션은 5090 PC에서, 정책은 A6000에서 돌며 네트워크로 주고받습니다. 기준선으로 작은 CNN 학생도 만듭니다. 결과는 나오는 대로 이 절에 넣습니다.

월드모델로 시연 늘리기GR00T-Dreams

이미지 한 장과 글 지시로 월드모델(Cosmos Predict 2.5)이 새 작업 영상을 만들고, 역동역학 모델이 영상에서 행동을 뽑아 학습 데이터로 씁니다.

계획(PLAN 10절 D)에 있고 아직 시작하지 않았습니다. Spark에 Predict 2.5 웨이트가 있습니다.

09전체 흐름과 PC 분담

다섯 대의 컴퓨터가 일을 나눠 맡습니다. 5090 PC가 중심에서 시뮬레이션과 학습을 하고, 메모리가 큰 일과 오래 걸리는 일은 다른 PC로 보냅니다. 5090 PC에서 SSH로 각 PC에 일을 넘기고 결과를 가져옵니다.

시스템 구성도

파란 표시는 그 일을 맡는 PC입니다. 왼쪽 위 묶음(시뮬레이션과 학습)은 5090 PC가 모두 맡고, 오른쪽 묶음은 렌더와 월드모델 증강, 아래 묶음은 진행 중인 확장입니다.

5090 PC시뮬레이션과 학습 장면 모델G1+Dex3 · 상자 · 좌우 랙 MuJoCo 3.172 ms 물리 · 40 ms 제어 정책관측 54 → 행동 5 역기구학허리 3 + 팔 7, DLS 학습모방학습 → 잔차 PPO 평가정책 3 × 조건 6 기록: 25 fps로 모든 부품의 위치·자세 (export_blender.py) 렌더 · 월드모델 증강 5090 PC · 3090 PC블렌더 Cycles 렌더실사 · 깊이 · 분할 · 에지 Spark 1 · Spark 2Cosmos Transfer 2.5환경 4종 증강 A6000 PCCosmos Reason 2 판정증강 전후 결과 대조 진행 중인 확장 카메라 학생 정책교사(잔차 RL) → 머리 카메라 CNN · GR00TA6000 PC 월드모델 안 정책 평가GRU 앙상블, 평가 정책 기록은 학습에서 뺌5090 PC · 3090 PC 대규모 비교조건마다 1,000 에피소드3090 PC

계산 자원

PC접속(5090 PC에서)GPU메모리·CPU운영체제
5090 PC직접RTX 5090 32 GB128 GB, 16코어Windows 11
A6000 PCssh user@a6000-wslRTX A6000 48 GB ×247 GB(WSL), 64스레드WSL Ubuntu
Spark 1ssh spark1GB10128 GB 공용, ARM 20코어Ubuntu 24.04 aarch64
Spark 2ssh spark2GB10128 GB 공용, ARM 20코어Ubuntu 24.04 aarch64
3090 PCssh d8RTX 3090 24 GB256 GB, 48코어Windows

단계별로 맡는 PC

단계하는 일맡는 PC도구·파일상태(10-30 새벽)
1. 장면앉은 G1, 상자, 좌우 랙, 물건 4종5090 PCMuJoCo, sim/scene.py끝
2. 규칙 제어기역기구학, 집는 순서, 실패 분류5090 PCsim/kin.py, sim/scripted.py끝(64.5 %)
3. 모방학습시연 4,200 에피소드 수집(14프로세스), 신경망 학습5090 PCsim/collect.py, sim/bc.py끝(65.0 %)
4. 잔차 강화학습PPO 24환경, 1,200만 스텝5090 PC(CPU 24프로세스 + GPU)sim/train_res.py끝(1,100만 스텝 선택)
5. 최종 비교정책 3 × 조건 6, 200 에피소드5090 PCsim/compare.py끝(82.5 % 대 60.0 %)
5'. 큰 비교같은 비교를 1,000 에피소드로3090 PC(CPU 18프로세스)D:\humanoid_remote끝(81.9 % 대 56.9 %, 사이트 표에 씀)
6. 실사 렌더첫 화면·학습 전후 영상5090 PC(블렌더 OptiX)blender/render_anim.py끝
6'. 외란 비교 영상손가락 약함 조건, 규칙 대 학습 후3090 PC(블렌더)같은 스크립트, HL_ROOT끝
7. 환경 증강Cosmos Transfer 2.5, 4개 환경Spark 1(차량기지·물류센터), Spark 2(야간·낡은 창고)도커 cosmos-transfer25:6끝(새 각도 4개 환경, 클립당 약 46분)
7'. 증강 입력 만들기깊이·분할·에지(edge) 패스 렌더, 묶음5090 PCblender/render_passes.py, cosmos/make_pack.py끝
8. 증강 판정원본 대 증강 영상에 같은 질문A6000 PC GPU 0Cosmos Reason2-2B, cosmos/judge_reason2.py끝(남긴 두 질문의 답이 원본·증강 5개 영상 모두 같음)
9. 월드모델 평가GRU 월드모델 학습, 그 안에서 정책 순위5090 PC(GPU, 하나씩) + 3090 PC(강화학습을 뺀 모델)sim/wm/학습 중
10. 카메라 학생머리 카메라 데이터, CNN 학생, GR00T 미세조정5090 PC(데이터) + A6000 PC GPU 1(VLA)sim/student.py, ~/humanoid/vlaCNN 끝(60.5 %), GR00T 미세조정 다시 진행(체크포인트는 A6000 PC G:)
11. 사이트Vite + three.js, Cloudflare Pages5090 PCweb/미리 보기 배포

일을 나눠 보내기remote job dispatch over SSH

여러 PC의 GPU를 하나로 묶는 것은 이 네트워크로는 느려서 맞지 않습니다. 대신 서로 독립된 일을 통째로 다른 PC에 보내고 결과 파일만 가져옵니다.

모든 PC가 Tailscale 사설망에 있고 5090 PC의 키로 접속합니다. Spark 두 대는 서로 직결선(192.168.102.x)으로 도커 이미지와 웨이트를 빠르게 주고받습니다. A6000 PC는 WSL이 꺼지지 않게 예약 작업이 켜 둡니다. 각 PC에서 이 프로젝트는 정해진 폴더(~/humanoid, ~/humanoid_cosmos, D:\humanoid_remote)만 씁니다.

10한계와 다음 단계

이 시연은 앉은 상체 작업을 시뮬레이션 안에서 검증한 개념 증명입니다. 실물 로봇으로 옮기려면 남은 단계가 있습니다.

한계

  • 주 정책은 물건 위치를 시뮬레이터에서 받습니다. 카메라만 보는 CNN 학생은 60.5 %로 교사보다 낮고, GR00T 미세조정은 진행 중입니다.
  • 로봇은 의자에 앉아 상체만 씁니다. 걷거나 쭈그려 앉는 동작은 다루지 않았습니다.
  • 물건 무게·마찰, 랙 위치, 손가락 힘은 가정값이고, 실물 G1과 Dex3에서 재지 않았습니다.
  • Dex3 손으로 위에서 집기 쉬운 크기(높이 약 4 cm)의 포장 부품으로 물건을 맞췄습니다. 납작한 맨 부품(브레이크 패드 자체)은 다루지 않습니다.
  • 월드모델로 증강한 영상은 보여 주기 용도입니다. 그 영상으로 정책을 다시 시험하지 않았습니다.
  • 성공은 물건 하나를 칸에 놓고 멈춘 순간에 셉니다. 나중에 다른 물건을 옮기다 팔로 쳐서 칸 밖으로 밀어낸 경우는 성공 수에서 빠지지 않습니다. 외란 비교 영상(손가락 약함)에서 학습 후 정책이 5개를 성공으로 셌지만, 영상 끝에 제 칸에 남은 것은 3개였습니다. 그래서 영상의 숫자는 기록에서 그 순간 제 칸 안에 있는 물건을 세어 표시합니다(blender/make_videos.py).

다음 단계

단계내용근거
카메라 학생교사 행동을 카메라 정책으로 증류, VLA 미세조정ViserDex(RSS 2026), Dex-X(2026-09), HAF(2026-08)
실물 이식Unitree 공식 Isaac Lab 설정(G1 + Dex3 집어 놓기)으로 옮겨 실물 시험unitree_sim_isaaclab
촉각Dex3 손의 촉각 센서를 입력에 추가Uni-VLaT(2026-09)
전신 작업걸어서 토트를 나르고 선반 높이를 바꾸는 작업HumanoidMimicGen(2026-05)

11용어 사전

모두 42개.

표제어영문한국어설명이 프로젝트에서
AgXAgX view transformAgX 색 변환블렌더가 밝은 빛을 화면 색으로 바꾸는 방식.렌더에서 'AgX - Punchy'로 색이 바래지 않게 했다.
BCBehavior Cloning행동 복제시연 행동을 신경망이 그대로 따라 하게 학습하는 방법.규칙 기반 시연 2,355 에피소드로 학습, 65.0 %. 비교표의 학습 전.
CC0Creative Commons Zero퍼블릭 도메인 공개저작권을 포기한 자료. 출처 표시 없이 쓸 수 있다.Poly Haven 창고 배경·바닥·나무결.
CNNConvolutional Neural Network합성곱 신경망이미지에서 특징을 뽑는 신경망.카메라 학생 정책의 기준선.
Cosmos Reason 2NVIDIA Cosmos-Reason2코스모스 리즌 2영상을 보고 질문에 답하는 물리 추론 시각-언어 모델.원본과 증강 영상의 결과가 같은지 판정(A6000 GPU 0).
Cosmos Transfer 2.5NVIDIA Cosmos-Transfer2.5코스모스 트랜스퍼 2.5깊이·분할(segmentation)·에지(edge)를 붙잡고 겉모습만 바꾸는 동영상 월드모델.4개 작업 환경으로 증강(Spark 두 대).
CyclesBlender Cycles사이클스블렌더의 경로 추적 렌더러.24샘플, OptiX 잡음 제거로 프레임당 5~10초.
DAggerDataset Aggregation데이터 모으기 반복학생 정책이 직접 움직인 상태에서 교사의 답을 받아 데이터를 늘리는 방법.카메라 학생 학습에 쓴다.
DARTDisturbances for Augmenting Robot Trajectories외란 주입 시연실행 행동에만 잡음을 넣고 기록은 시연 행동으로 남기는 방법.잡음 0~0.3, 4,200 에피소드 수집.
Dex3Unitree Dex3-1 hand덱스3 손엄지 하나와 손가락 둘인 G1용 손, 관절 7개.편 엄지가 손바닥 아래 10 cm라 물건 높이를 4 cm로 맞춤.
DGX SparkNVIDIA DGX SparkDGX 스파크GB10 칩과 128 GB 공용 메모리를 가진 작은 AI 컴퓨터(ARM).Cosmos Transfer 2.5를 돌리는 두 대.
DLSDamped Least Squares감쇠 최소제곱자코비안으로 관절 변화를 구할 때 작은 값을 더해 불안정을 막는 방법.sim/kin.py의 역기구학.
DoFDegrees of Freedom자유도독립해서 움직일 수 있는 방향의 수.손 하나에 허리 3 + 팔 7 = 10.
G1Unitree G1유니트리 G1키 1.3 m급 휴머노이드.손 포함판 관절 모터 43개, 34.4 kg, 의자에 앉은 자세.
GR00TNVIDIA Isaac GR00T그루트NVIDIA의 휴머노이드용 공개 VLA 모델.A6000 GPU 1에서 카메라 학생으로 미세조정.
GRUGated Recurrent Unit게이트 순환 유닛지난 정보를 기억하며 다음 값을 예측하는 순환 신경망.월드모델 다섯 개를 학습.
GuardrailCosmos Guardrail안전 검사생성 영상과 프롬프트에 부적절한 내용이 없는지 보는 모델.철도 차량기지 영상이 통과.
HDRIHigh Dynamic Range Image고명암 배경 사진주변 빛까지 담은 360도 사진. 조명과 배경으로 쓴다.empty_warehouse_01.
IKInverse Kinematics역기구학엔드이펙터 목표에서 관절 각도를 구하는 계산.매 제어 주기 8번 반복해 관절 목표를 낸다.
implicitimplicit integrator완전 암시적 적분힘과 속도의 관계를 함께 풀어 안정적인 적분기.implicitfast는 40 에피소드 중 19 에피소드 발산, implicit은 0 에피소드.
MDPMarkov Decision Process마르코프 결정 과정상태, 행동, 보상, 다음 상태로 정의한 학습 문제의 틀.한 에피소드 = 물건 하나를 맞는 칸에 넣기.
MjSpecMuJoCo model specification APIMuJoCo 모델 편집 도구파이썬에서 MuJoCo 모델을 만들고 고치는 기능.다리 굳히기, 데칼, 랙을 코드로 더함.
MuJoCoMulti-Joint dynamics with Contact무조코로봇 연구용 공개 물리 엔진.3.17, 시간 간격 2 ms.
OptiXNVIDIA OptiX옵틱스NVIDIA GPU 광선 추적 가속과 잡음 제거.5090·3090에서 블렌더 렌더.
PDProportional-Derivative control비례-미분 제어목표와의 차이와 속도로 힘을 내는 제어.G1 관절 위치 제어 kp 500.
PPOProximal Policy Optimization근접 정책 최적화정책이 한 번에 크게 바뀌지 않게 막는 강화학습 방법.24환경, 1,200만 스텝.
ResFiTResidual Fine-Tuning잔차 미세조정BC 정책을 고정하고 보정만 강화학습으로 배우는 방법(Ankile 외 2025).이 프로젝트의 학습 후 정책 방식.
RLReinforcement Learning강화학습해 보고 받은 보상이 커지는 쪽으로 정책을 바꾸는 학습.잔차 PPO로 81.9 %(기본 조건 1,000 에피소드).
SSHSecure Shell보안 셸다른 컴퓨터에 암호화 연결로 명령을 보내는 방법.5090 PC에서 네 대에 일을 보냄.
TailscaleTailscale테일스케일여러 기기를 하나의 사설망으로 묶는 VPN.다섯 대가 모두 이 망에 있음.
VLAVision-Language-Action model시각-언어-행동 모델영상과 글 지시를 받아 로봇 행동을 내는 큰 모델.GR00T를 카메라 학생으로.
VLMVision-Language Model시각-언어 모델영상과 글을 함께 이해하는 모델.Cosmos Reason 2를 채점자로.
WSLWindows Subsystem for Linux윈도우용 리눅스윈도우 안에서 리눅스를 돌리는 기능.A6000 PC는 WSL 우분투로 접속.
교사-학생 증류teacher-student distillation교사-학생 증류정답 정보를 아는 교사의 행동을 카메라만 보는 학생이 따라 하게 하는 방법.교사 = 학습 후 정책, 학생 = CNN·GR00T.
대응 비교paired evaluation대응 비교비교하는 제어기에 같은 시험 문제를 주는 방법.에피소드마다 난수 씨앗 고정.
도메인 무작위화domain randomization도메인 무작위화학습 때 물리 조건을 조금씩 바꿔 정책이 한 조건에 맞춰지지 않게 하는 방법.무게 0.6~1.5배, 마찰 0.7~1.3배.
볼록 껍질convex hull볼록 껍질메시를 감싸는 가장 작은 볼록한 모양.몸통 껍질과 어깨의 가짜 충돌을 끔.
시간당 처리량throughput시간당 처리량정해진 시간 동안 끝낸 물건 수.규칙 287개, 학습 후 594개(기본 조건 1,000 에피소드).
영공간null space영공간손 목표에 영향을 주지 않는 관절 움직임 방향.팔 모양을 기본 자세 쪽으로 당김(세기 0.03).
월드모델world model월드모델다음에 세상이 어떻게 될지 예측하는 모델.환경 증강(Cosmos)과 정책 평가(GRU)에 씀.
잔차 강화학습residual RL잔차 강화학습기존 정책 행동에 더할 보정만 배우는 강화학습.행동 = BC + 0.35 × 보정.
행동 공간action space행동 공간정책이 매 주기 내는 값의 종류.엔드이펙터 이동 3 + 손목 회전 + 파지 = 5.

12참고 자료

2026-10-29에 찾아 대조한 자료입니다. 회사 발표 수치는 독립 검증되지 않았습니다. 전체 목록과 판단은 docs/REFERENCES_2026-10.md에 있습니다.

방법

  • Ankile 외 (2025). Residual Off-Policy RL for Finetuning Behavior Cloning Policies (ResFiT). arXiv:2509.19301. https://arxiv.org/abs/2509.19301
  • Lin 외 (2025). Sim-to-Real Reinforcement Learning for Vision-Based Dexterous Manipulation on Humanoids. CoRL 2025. arXiv:2502.20396
  • NVIDIA (2025). GR00T N1: An Open Foundation Model for Generalist Humanoid Robots. arXiv:2503.14734
  • HumanoidMimicGen (2026). Data Generation for Loco-Manipulation via Whole-Body Planning. arXiv:2605.27724
  • HAF (2026). Adapting Generalist VLAs to Humanoid Whole-Body Loco-manipulation. arXiv:2608.16837
  • Uni-VLaT (2026). Whole-Body Tactile Adaptation of VLA Policies for Humanoid Loco-Manipulation. arXiv:2609.35450

월드모델

  • NVIDIA. Cosmos-Transfer2.5. https://github.com/nvidia-cosmos/cosmos-transfer2.5
  • OSCAR (2026). Omni-Embodiment Action-Conditioned World Model for Robotics. arXiv:2606.04463
  • WorldEval (2025). World Model as Real-World Robot Policies Evaluator. arXiv:2505.19017
  • NVIDIA. GR00T-Dreams 합성 궤적 생성. https://developer.nvidia.com/blog/enhance-robot-learning-with-synthetic-trajectory-data-generated-by-world-foundation-models/

도구

  • MuJoCo Menagerie, Unitree G1. https://github.com/google-deepmind/mujoco_menagerie
  • Unitree 공식 Isaac Lab 시뮬. https://github.com/unitreerobotics/unitree_sim_isaaclab
  • Poly Haven CC0 자료. https://polyhaven.com

동향

  • Schaeffler 타이창 휴머노이드 시설(2026-10). https://www.globaltrademag.com/humanoid-robots-enter-factories-and-warehouses/
  • Atlas 훈련 센터(2026-09). https://www.automotiveworld.com/news/boston-dynamics-opens-atlas-training-hub-at-hyundai-plant/
  • Agility·GXO 확대 배치(2026-10). https://www.therobotreport.com/agility-gxo-logistics-plan-expanded-deployment-digit-humanoid/
  • China Post RobotEra M7(2026-05). https://interestingengineering.com/ai-robotics/china-deploys-humanoid-robots-in-postal-hub