Index
2026-08-28 — Analysis

τ₀-WM RoboTwin 2.0 전면 진단 — baseline → RCS → ACVS

tau-0-wm | 같은 하네스에서 X-WAM 공개 ckpt 82% 재현 확인 후, τ₀의 갭이 어디서 오는지 단계별 분해

TL;DR

1 그냥 쓴 것 — baseline

τ₀ pretrained → RoboTwin 50 task posttrain(54k step) 후 공식 프로토콜(demo_randomized, unseen 지시문, 32-step chunk)로 평가. 아래는 같은 task·같은 하네스에서 X-WAM 공개 ckpt(위)와 τ₀(아래)를 나란히 놓은 롤아웃이다. 3분할은 head / left wrist / right wrist 카메라.

move_stapler_pad ep0000 — 동일 씬에서 X-WAM 성공 / τ₀ 실패. τ₀는 스테이플러 근처까지 가지만 패드 위 정렬을 못 맞추고 step limit에 걸린다.
place_a2b_left ep0001 — 배치 정확도가 필요한 과제. 집기까지는 되지만 목표 위치에 놓지 못한다.
blocks_ranking_rgb ep0000 — 색 순서대로 정렬. X-WAM 95% vs τ₀ 12.5%. 긴 호흡(step limit 600)에서 오차가 누적된다.
hanging_mug ep0000 — 가장 어려운 과제(X-WAM 55%). τ₀ 0%.

각 패널: 위 = head 카메라(장면 전체), 아래 = 좌/우 손목 카메라. 손목 뷰가 클로즈업인 것은 RoboTwin 표준 구성이며 두 모델이 받는 입력은 동일하다. 좌우는 같은 seed·같은 에피소드라 초기 씬이 일치한다(첫 프레임 픽셀 차 1.7~8.6).

실패 롤아웃은 예외 없이 step limit 도달(타임아웃)이다. 크래시나 플래너 예외가 아니라 "움직이는데 과제를 못 끝내는" 실행 품질 문제.

per-task 결과 (진행 중: 42/50 task, 386/500 unit)

taskτ₀X-WAM(논문)격차n
blocks_ranking_rgb12%95%-8280
rotate_qrcode10%83%-7370
blocks_ranking_size11%82%-71100
handover_block11%79%-6890
place_mouse_pad26%86%-6080
open_microwave33%92%-5970
move_can_pot25%84%-59100
place_dual_shoes23%81%-5890
lift_pot44%99%-55100
place_a2b_right34%89%-5590
place_fan38%92%-5490
open_laptop43%97%-54100
place_object_scale36%89%-53100
move_stapler_pad19%70%-51100
place_object_basket36%87%-5180
hanging_mug4%55%-5190
place_a2b_left43%87%-44100
pick_diverse_bottles48%92%-44100
place_bread_basket49%91%-42100
place_object_stand55%96%-4180
move_pillbottle_pad57%98%-41100
place_can_basket42%82%-4080
move_playingcard_away60%98%-38100
place_burger_fries61%99%-38100
place_cans_plasticbox63%98%-35100
scan_object44%79%-3570
handover_mic54%89%-3590
place_bread_skillet62%96%-34100
place_shoe66%99%-3390
pick_dual_bottles67%100%-3390
place_phone_stand50%80%-3050
adjust_bottle69%99%-30100
dump_bin_bigbin69%96%-27100
place_empty_cup72%99%-2790
place_container_plate76%100%-24100
beat_block_hammer75%96%-21100
grab_roller84%100%-16100
press_stapler76%90%-1490
shake_bottle86%99%-13100
click_bell92%100%-8100
click_alarmclock98%99%-1100
shake_bottle_horizontally93%——100
분포가 "90%대 여러 개 + 0% 몇 개"가 아니라 연속적으로 퍼져 있다 → 인터페이스 버그 시그니처가 아니다. 접촉만 하면 되는 click 계열은 92~98%로 동률에 가깝고, cm 단위 정밀도·양팔 협응이 필요한 과제에서 무너진다.

2 open-loop 정밀도 — 갭의 물리량

학습 클립 140개에 대해 두 모델에 같은 관측을 주고 32-step chunk를 예측시켜 GT와 비교. 이 클립들은 τ₀에겐 학습 데이터, X-WAM에겐 미학습 에피소드(자체 재생성 seed 사용, 첫 프레임 픽셀 diff 17~42로 확인) — τ₀에게 유리한 조건이다.

error profile
좌: chunk step별 위치 오차. 우: replan 빈도별 실행 액션 오차.
2.26 cm
τ₀ 평균
1.31 cm
X-WAM 평균
0.39 cm
τ₀ step 1
0.17 cm
X-WAM step 1
단일 스텝 예측조차 2.3배 부정확하다. 오차 누적만의 문제가 아니라 예측 정밀도 자체의 차이.

기각된 가설: receding horizon

τ₀ 논문은 receding-horizon 실행이 기본이고 오차 곡선상 exec=8이면 실행 오차가 2.20→1.15 cm로 줄어 유리해 보였다. 실제 A/B는 SR 37% → 12%로 악화. 성공 에피소드가 2배 느려지고 나머지는 타임아웃이었다. 원인은 RoboTwin의 take_action('ee')가 매 스텝 모션 플래너를 호출하고 실패 시 조용히 정지하기 때문(재계획 4배 → 실패 기회 4배). exec=32가 τ₀에게도 최선이다.

3 비디오 브랜치 — 시각 표현은 전이됐다

"video branch가 SAPIEN 렌더에 OOD라 action이 망가진 conditioning 위에서 학습됐다"는 가설을 직접 디코딩해 검증. 고정 20 클립에서 조건 프레임 1장을 주고 32 env step(≈1.3초) 앞을 생성.

video vs gt
각 쌍의 위가 τ₀ 예측, 아래가 GT. f0·f2·f4·f6·f8.
ckpt전체 PSNRSSIMf0(조건)f1f4f8
run1 step_5400025.20 dB0.86137.026.823.922.4
run2 step_15000 (batch384+cosine)24.07 dB0.84336.825.422.821.1
구도·물체·팔 진입 방향이 GT와 일치하고 장면이 붕괴하지 않는다. 가설 기각 — 시각 표현은 RoboTwin에 전이됐고, 학습도 freeze 없이 5.51B 전 파라미터를 lr 5e-5(X-WAM의 5배)로 돌렸다.
다만 손실 결합이 loss_video×1.0 + loss_action×1.0인데 실측이 video ~0.11 vs action ~0.03 → 그래디언트를 비디오가 3~4배 지배한다. 개선 방향은 video weight를 올리는 게 아니라 action_loss_scale을 올리는 쪽.

4 RCS — 후보를 뽑고 고르기

TTC 1단계. 후보 액션 8개를 샘플링하고 re-denoising consistency 점수로 최선을 고른다(시뮬레이터 불필요). 클립 20개에서 후보별 실제 오차를 재고 RCS의 선택과 비교했다.

rcs selection
좌: 클립별 후보 8개의 오차 분포(회색), RCS 선택(빨강 ▼), 오라클(초록 ▲). 우: 선택기 비교.
1.59
랜덤 (cm)
1.40
RCS
0.94
오라클
+0.11
순위 상관
후보 안에 이미 답이 있다. 8번 샘플링하면 그중 최선이 0.94 cm — X-WAM 단일 샘플(1.31)보다 정확하다. 생성 능력은 병목이 아니다.
선택기가 약하다. RCS는 랜덤 대비 +11.8%(20 클립 중 15개에서 우위)지만, 점수-정확도 순위 상관은 +0.11 ± 0.12로 0과 구분되지 않고 활용 가능한 여지의 29%만 회수한다.

5 ACVS 시뮬레이터 — 후보를 굴려보고 고르기

TTC 2단계. 공개된 ACVS 가중치(11.9 GB)로 후보 8개를 각각 롤아웃해 dense task-progress 보상을 받고, 그 순위가 실제 정확도를 맞히는지 확인했다.

acvs vs gt
ACVS 롤아웃(위) vs 실제 SAPIEN 렌더(아래). 첫 프레임은 3뷰 모두 맞지만 뒤로 갈수록 무너진다.
선택 방식오차 (12 클립)순위 상관판정
랜덤1.32 cm—기준
RCS1.26 cm+0.00약한 이득
ACVS 보상1.34 cm−0.14못 씀
오라클0.84 cm—상한
공개 ACVS는 RoboTwin posttrain 없이는 선택기로 쓸 수 없다. 보상 순위가 실제 정확도와 역상관이고, 롤아웃이 sim 도메인에서 붕괴한다. τ₀ pretrain에 sim이 0%라는 사실이 여기서 그대로 드러난다. VAM의 비디오 브랜치는 RoboTwin에 posttrain해서 25 dB를 냈지만 ACVS는 안 했다 — runner/posttrain_sim.py로 ~17h면 학습 가능.

6 종합 — 어디가 문제였나

① 시각 이해
정상
예측 영상 25.2 dB / SSIM 0.86
② 후보 생성
충분
오라클 0.94 cm < X-WAM 1.31
③ 선택 (RCS)
약함
여지의 29%만 회수
④ 선택 (ACVS)
못 씀
역상관, sim 미적응

제거한 버그·결함

#내용영향
1브릿지가 절대 pose 반환 (shim은 delta 기대)SR ~1%
2데이터 로더 R/B 채널 중복 변환영향 작음
3OIDN 디노이저가 B200 미지원 → 노이즈 렌더가 정책 입력전 평가 무효화
4TauPolicy 영상 저장 경로 datetime 미import비디오 브랜치 실행 불가
5시뮬레이터 파이프라인 no-memory 경로 mem_z 미초기화ACVS 실행 불가
+TTC 함정 3종: 전용 파이프라인 미지정 / TauPolicyTTC의 fused-qkv 기본값 반대 → 361 텐서 조용히 미로드 / 시뮬레이터 config 불일치조용히 틀린 결과

기각된 가설

가설검증결과
평가 하네스/인터페이스 버그X-WAM 공개 ckpt를 같은 하네스로82.1% 재현 → 무결
video branch가 sim에 OOD예측 영상 디코딩·PSNR25.2 dB → 기각
receding horizon 부재exec 32 → 8 A/B37% → 12% 악화
하이퍼파라미터 (batch/스케줄)batch 384 + cosine 재학습2.26 → 2.63 cm 악화
embodiment adapter / 그리퍼 스케일왕복 변환 수치 검증오차 0 → 정상
normalization stats 재사용RoboTwin 전용 통계 재계산 확인정상
학습 데이터 미적합(일반화 실패)학습 seed로 재평가34.8% → 학습 씬에서도 실패

결론과 다음 단계

τ₀-WM의 RoboTwin 성능은 생성이 아니라 선택에서 잃는다. 모델은 X-WAM보다 정확한 액션을 이미 만들 수 있지만(오라클 0.94 cm) 그것을 식별하지 못하고, τ₀가 그 용도로 설계한 ACVS는 sim 도메인에 적응돼 있지 않다. 우선순위:

  1. ACVS를 RoboTwin에 posttrain (~17h) → sim_refine 재측정. 오라클과의 격차 1.26→0.84(−33%)가 목표이고, 달성 시 X-WAM 수준을 넘어선다.
  2. action_loss_scale 상향 재학습 — 현재 그래디언트를 비디오가 3~4배 지배.
  3. held-out split 구성 — 현재 val이 train과 동일해 일반화 측정 자체가 불가능하다.

baseline 평가는 386/500 unit 진행 중이며 완료 시 이 페이지의 수치가 갱신된다.