Index
2026-10-17 · ego2robot · physics replay

H2O digital twin에서 dataset action 재생 검증: 현재 kinematic 데이터는 물리적으로 거의 실행되지 않음

physics stage (MuJoCo, GT 물체 pose + mesh) · ADD-S/centroid/lift + baseline 판정 · L4 filter · UR5e full run 분석 · QP fallback · commits a652357, a875557

TL;DR

0/78
ALOHA moved 성공
7/78
UR5e moved 성공
14/78
UR5e, gap −20 mm
28–48%
gap ≥ 물체 폭
212
tests passed

1배경/목적

사용자 질문: "h2o랑 같은 세팅을 시뮬에 만들어놓고, 동작을 잘 하는지 성공을 만들어서 확인해야하는건 아닌가?" 결정은 policy 학습 전에 dataset action 자체를 물리적으로 재생해 검증하는 것이었다. 지금 dataset은 사람 손 keypoint를 gripper pose와 폭으로 옮긴 kinematic retargeting이라서, 실제로 물체를 쥐고 옮기는지는 확인한 적이 없었다.

가설: gripper gap(= thumb-tip↔finger-tip 거리 − 12 mm)이 grasp할 때 물체 폭 이상이면, position-controlled gripper는 물체를 조이지 못한다.

2작업 내용

Twin과 재생 (ego2robot/physics.py)

성공 판정 (moved episode, GT noise floor로 threshold 결정)

ADD-S ≤ 20 mm (≥80% frames), final ≤ 30 mm centroid ≤ 30 mm (≥80% frames), final ≤ 50 mm video lift > 30 mm → sim lift ≥ ½ video lift feasible start: open-gripper overlap ≤ 10 mm, gripper overextension ≤ 2 mm NOT passing frozen-object / no-robot replays (the robot must cause it) GT noise floor: resting drift ADD-S p99 2.3 mm, held jitter p99 2.9 mm

실패 원인은 ik_fail, start_collision, overextended, unstable_start, tracking, passive, not_held, dropped, knocked, no_grasp_contact, slipped로 나눈다. export.physics_filter(기본 off)를 켜면 L4 사유로 거른다.

3결과

Dev subset (16 seq, 8개 물체 전부, train/val/test; 85 ep/robot = moved 78 + static 7)

ALOHAUR5e + 2F-85YAM
moved 성공0/787/783/78
IK ok + feasible start일 때 성공0/286/253/26
static: 건드리지 않음 / 판정 가능6/7 / 6/75/7 / 4/76/7 / 6/7
no-robot baseline (moved)1/781/781/78
실패 상위start_collision 30, ik_fail 15, no_grasp 9ik_fail 30, start_collision 22, dropped 9ik_fail 47
lifted 프레임 중 gap ≥ 물체 폭28%43%48%

진단: gripper를 더 닫으면 (moved 성공)

variantALOHAUR5eUR5e dropped
base079
gap −10 mm287
gap −20 mm6142
mass ×0.5 / ×21 / 07 / 79 / 8

Oracle grasp(scripted side grasp, 10 cm lift)에서는 ALOHA spray 89 mm, UR5e milk 98 mm가 들렸고 slip은 1 mm 이하였다. 시뮬레이터가 grasp를 못 하는 것이 아니라 dataset action이 문제다.

UR5e dropped
UR5e 실패(dropped): 사람은 손바닥으로 32 mm espresso 상자를 쥐지만 손끝 간격이 넓어서 gripper가 44–65 mm로 열린 채 물체를 놓친다. 왼쪽은 실제 영상, 오른쪽은 sim.
ALOHA no grasp
ALOHA 실패(no_grasp_contact): power grasp의 thumb/finger 중점이 bottle을 감싸지 않아 손가락이 옆으로 지나간다.
UR5e success
UR5e 성공: espresso 상자를 잡아 142 mm 들어 올렸다(영상은 139 mm). no-robot replay는 따라가지 못하므로 로봇이 만든 성공이다.

UR5e full 변환 IK 분석 + ALOHA 지표 정정

지표이전 ALOHA새 ALOHAUR5e
팔×프레임 IK fail 평균0.07400.07530.2030
seq ≤ 0.114414376
any-arm frame (curation)–0.1310.308

4Takeaway

현재 dataset은 물리적으로 실행되지 않는다(성공 0–9%). 원인은 시뮬레이터가 아니라 retargeting이다. 사람 손끝에서 만든 gripper 폭과 위치는 parallel gripper가 실제로 물체를 쥐는 pose가 아니다.
gap만 바꿔도 성공이 2배가 된다. H2O는 모든 프레임에 GT 물체 pose와 mesh를 주므로, 물체를 아는 grasp retargeting으로 근본적으로 고칠 수 있다.

의견

이 결과는 사용자가 제안한 "시뮬에서 성공을 만들어 확인"이 꼭 필요했다는 근거다. kinematic 품질 지표(L1/L2)를 모두 통과한 episode도 물리적으로는 실패한다. 앞으로 데이터 품질은 physics 성공률로 보고하는 것이 맞다.

5Next