R2SEnv 구현, mount/TCP는 UNVERIFIED_MOUNT_AND_TCP로 명시 라벨링G003 단계는 DROID 로봇(Franka+Robotiq)을 실제 CAD/kinematics로 재생할 수 있는 MuJoCo 환경이 필요하다. Stock Franka hand는 실제 수집 당시 장착 형태가 아니므로 사용할 수 없고, mount/TCP가 검증되지 않은 상태에서도 최소한 kinematic 재생이 동작해야 이후 단계(geometry 통합, physics fitting)를 진행할 수 있다.
google-deepmind/mujoco_menagerie(commit 8161bba264d7fa7c99ca301e91e7fb44737676ad) sparse checkout으로 Franka Panda(no-hand, Apache-2.0)와 Robotiq 2F-85(BSD-2-Clause, ROS-Industrial)를 결합했다. MountTransform을 조립 필수 조건으로 만들고 tcp_unverified 사이트를 명시적으로 라벨링했다. 재생은 세 가지 모드로 분리했다:
FK/hand-eye 일관성은 19개 샘플 raw row에서 검증했다. .venv-sim(mujoco==3.3.7) 기반 20-step CPU smoke를 scripts/smoke_robot.sbatch(own QOS, 8 CPU, 16GiB, 5분)로 구현하고, job 123487로 실행했다. 렌더링은 configs/replay_initial.json(raw row 9 단일 프레임 state-preview)으로 시작했으며, 최초 시도(job 123768)는 .venv-sim의 OpenGL EGL 바인딩이 워커에 없어 실패했고, --container=docker.io/nvidia/opengl@sha256:9b56a8e7... + MUJOCO_GL=egl로 재구성한 job 123801에서 성공했다.
| 검증 항목 | RzRyRx | RxRyRz | 판정 |
|---|---|---|---|
| attachment ↔ cartesian_position | 2.658e-5mm 이내 일치 | — | 위치는 두 convention 모두 일치(참고용) |
| orientation 잔차(19 샘플) | 상수 Rz(-135°), 최대 drift 5.4e-6° | 최대 58.85°(상수 아님) | RzRyRx 채택 |
| wrist hand-eye 잔차 | 1.14e-13mm / 1.21e-6° | ~75mm / ~179° | RzRyRx만 성립 |
| Job | 상태 | 소요 | 결과 |
|---|---|---|---|
| 123487 (robot smoke) | COMPLETED 0:0 | 3s | "robot smoke passed; mount/TCP remains UNVERIFIED_MOUNT_AND_TCP" |
| 123768 (replay, 최초) | FAILED | 4s | OpenGL.raw.EGL 바인딩이 None → eglQueryString AttributeError |
| 123801 (replay, 수정) | COMPLETED | 4s | nvidia/opengl 컨테이너로 frame 9 단일 프레임 렌더 성공 |
UNIMPLEMENTED_CLOSED_FOUR_BAR_NOT_RECONSTRUCTED로 라벨링됨 — driver joint 값을 직접 쓰는 것만으로는 실제 그리퍼 폐쇄 형상을 재현하지 못한다.서로 무관한 두 검증 경로(카메라 외부 캘리브레이션 대 로봇 FK/hand-eye)가 동일하게 RzRyRx를 지지한 것은 이 convention이 우연이 아니라 실제 DROID 수집 규약임을 강하게 뒷받침한다. 렌더링이 워커에서 동작하기 시작했다는 것도 중요한 진전이지만, 현재는 "1개 고정 프레임의 kinematic state-preview" 수준이며 그리퍼 시각화는 근사치(4-bar linkage 미재현)라는 한계가 명확히 라벨링돼 있다.
configs/replay_sequence.json(가장 최근 생성, PROVISIONAL_SEQUENCE_NOT_VALIDATED)은 아직 실행되지 않았다 — outputs/compare/ 디렉토리가 존재하지 않아 다중 프레임 시퀀스 replay는 미착수 상태다. JointTargetReplay의 gripper_command_scale도 현재 nominal 255.0(Menagerie ctrl range 기준)일 뿐 2023년 실제 controller 식별값이 아니다.
r2s.replay_sequence로 row 9~101 전체 computed-action 시퀀스를 렌더해 state playback과 대조한다. Robotiq 4-bar linkage 역기구학을 재구성하고, geometry 카드의 결과가 확정되면 replay_sequence.json의 calibration_path/geometry_path를 실측값으로 교체한다.