Index
2026-09-14 — Analysis

R2SEnv 컨트롤러 fit + 물리 접촉 convergence 게이트 현황

R2S | G-series: MuJoCo replay의 controller/physics scientific validation

TL;DR

3.38mm
EE holdout RMSE
<2mm
timestep PASS
9-64ms
접촉 timing FAIL
8.2mm
mass endpoint 변동

1 배경 / 목적

기존 mujoco_control_replay 카드에서 Menagerie Franka+Robotiq 위에 R2SEnv 기반과 joint-target replay 인프라를 확보했다. 다음 단계는 이 환경이 DROID 녹화 stack episode(GuptaLab+553d1bd5+2023-05-19-10h-38m-49s)를 "물리적으로 그럴듯하게" 재현할 수 있는지 controller fit부터 접촉 timing까지 정량적으로 검증하는 것이었다. 목표는 최종 twin 승인이 아니라, 각 gate(controller/physics/mass/delay)를 개별적으로 PASS/FAIL/UNVERIFIABLE로 분리해 어디가 막혀 있는지 명확히 하는 것이다.

기존 한계: 이전까지는 FK convention 검증(RzRyRx 잔차 1.14e-13mm)과 EGL 렌더링까지만 확인했을 뿐, 실제 controller gain fit이나 접촉 physics 재현 가능성은 전혀 측정되지 않은 상태였다.

2 작업 내용

Free-space 후보(job 125299)에서 fit-only 방식으로 kp=1, kd=2를 골랐고, 소스가 지원하는 hybrid hypothesis(job 125305)로 kp=1, kd=2 (fit q RMSE 0.009550)을 얻은 뒤, 4-scale refine(job 125316)에서 holdout을 쓰지 않고 fit q RMSE만으로 Kq=1, Kx=1, Kqd=2, Kxd=1을 최종 선택했다. Mount fit(job 125279)은 -45° yaw observational hypothesis를 선택했으며, mount_source_evidence.md는 DROID 공식 조립 가이드/Franka Robotics endeffector-config.json을 대조해 T_attachment_to_robotiq_base = translation(0,0,0.0108m)·Rz(-90°) 후보를 유도했다 — 단, 공식 소스 어디에도 2023년 물리 flange 수치 transform은 없어 이는 render-fit 후보일 뿐 역사적 캘리브레이션이 아니다.

Hybrid replay(job 125324)가 시뮬레이션 stack에 도달한 뒤, 두 개의 독립적 적분 스텝(1ms=job 125336, 0.5ms=job 125337)으로 수렴성을 검사했다. 접촉 이벤트는 사전선언 10ms debounce 게이트로 판정했다. 별도로 mass array(job 125343: 0.05/0.1/0.2kg)와 delay diagnostic(job 125342: 80ms fit-width)을 돌려 물리 파라미터 민감도를 확인했다. g001_closure.md는 데이터 프로토콜을 configs/eval_split.json=FROZEN_NONBLIND_OBSERVATIONAL_PROTOCOL로 동결해, fit episode(10:38:49) 외 두 검증 후보 episode(10:39:59, 11:11:36)를 nonblind validation으로만 쓰고 test는 비워두었다. 마지막으로 FrozenEnv facade + scoped API 하드닝(ed11904b…)이 완료돼 root 스위트 34개 테스트 중 33 pass, GPU skip 1건으로 리뷰를 통과했다.

3 결과 (수치 필수)

Gate측정치기준상태
Frozen controller fit (job 125316)EE fit 7.4269mm / holdout 3.38494mm, orientation 1.168°free-space model/FK residual만LIMITED
Position timestep convergence (125336 vs 125337)orange 1.3336→1.3427mm, green 0.814mm<2mmPASS
Contact-event timinggrasp 9ms, orange-table loss 13ms, first orange-green 14ms, bounce 60–64ms, release 0.5ms사전선언 10msFAIL
Mass identification (job 125343)0.05/0.1/0.2kg 모두 stack 유지, endpoint 변동 ~8.2mm질량 식별UNVERIFIABLE
Delay sensitivity (job 125342)80ms fit-width delay로 2s stack 도달, raw gap prior 85mm실측 delayLIMITED
Scoped API hardening (ed11904b…)root 34 tests run / 33 pass / 1 expected GPU skipcode review승인(scoped)
긍정적 신호: controller fit 개선으로 holdout EE RMSE가 3.38mm까지 내려왔고, timestep을 절반으로 줄여도(1ms→0.5ms) 위치 오차가 2mm 미만으로 수렴한다 — 순수 수치적분 관점에서는 안정적이다.
실패: 위치가 수렴해도 접촉 "타이밍"은 전혀 다른 문제다. grasp/contact-loss/bounce 이벤트가 9~64ms씩 어긋나며, 이는 마찰·질량·gripper force 등 물리 파라미터가 전혀 실측 보정되지 않았기 때문으로 추정된다 — mass array가 0.05~0.2kg 범위에서 결과가 거의 동일한 것(8.2mm 변동)이 이를 뒷받침한다.

4 Takeaway

의미

Joint-target replay는 "그럴듯한 stack"을 만들 정도로는 안정적이지만, real capture와 접촉 타이밍까지 맞추는 "faithful twin"에는 한참 못 미친다. Controller gain을 아무리 정교하게 fit해도(EE RMSE 3.4mm) 접촉 이벤트 timing 게이트를 통과하지 못하는 것은, sim-to-real gap의 병목이 controller/IK보다 미보정 물리 파라미터(mass·friction·gripper force)에 있음을 시사한다. 이는 별도 카드의 Cartesian action replay 실패 원인 분석(IK 알고리즘 불일치)과는 독립적인 축의 문제로, 두 축(IK 정확도 vs 물리 파라미터)을 분리해서 접근해야 한다는 근거가 됐다.

5 Next Steps

미해결 한계

물리 파라미터(mass/friction/gripper force)를 실측할 계측 장비가 없어 현재 범위 내에서는 근본적으로 identifiable하지 않다. 10ms 접촉 timing 게이트 자체가 real-world exposure/timestamp 동기화가 검증되지 않은 상태에서 정의된 기준이라, 게이트 완화 또는 대체 지표가 필요할 수 있다.

다음 실험

Cartesian action replay 카드(별도)의 source IK bridge가 causal 통합에 성공하면, 그 위에 이번 controller fit을 재적용해 접촉 timing이 개선되는지 재평가한다. 또한 g001_closure로 동결된 두 validation episode(10:39:59, 11:11:36)에 대해 동일한 controller/physics gate를 cross-episode로 재실행해 105mm mass/friction 민감도가 다른 episode에서도 동일한지 확인한다.