Index
2026-08-18 — Experiment (Task N8, Track B)

카메라 A/B — 학습분포 zed2 vs 어깨캠

scene_bench | part1-20k × 5씬 × {pick, pnp} × 2캠 = 20런 | qpos 액션 로깅 도입 | n=1/셀

TL;DR

7/10 vs 6/10
zed2 vs shoulder
3/5 vs 1/5
pnp (결정타)
20/20
qpos 활동 확정 (동결 0)
10~38회
실패 pnp 그리퍼 전이

1 설계 — 무엇을 비교했나

학습 데이터의 exo는 randomized_zed2_analogue_1workspace 중심 기준으로 매 에피소드 거리(0.2~0.8m)·높이·방위각·FOV(64~72°)를 재샘플하는 카메라다. 그동안 우리 실험은 그들의 벤치 eval 매핑을 따라 어깨 고정 캠(droid_shoulder_light_randomization)을 썼다. 같은 part1-20k 정책으로 5씬 × {pick, pnp} × 2캠 = 20런 (worker 2잡, 어깨 잡은 1회 선점 후 행 재개로 완주 — 이중 샘플 0).

적발된 배선 함정: 정책 서버에도 hydra cameras= config가 별도로 있어 모델이 읽는 관측 키를 서버가 결정한다 — 클라이언트 카메라만 바꿨다면 "zed2 조건"은 녹화 영상만 바뀌고 모델은 계속 어깨 뷰를 보는 무음 무효 A/B가 될 뻔했다. 서버·워커 스크립트 양측 연동으로 수정, zed2의 에피소드별 재샘플이 sample_task()에 바인딩됨도 정적+동적 검증 (pick_task_sampler.py:726).

동시 도입: qpos 액션 로깅 — 청크 경계마다 관절 스냅샷 → qpos_path_len(Σ|Δqpos|), gripper_transitions(물리 개폐 상태 기준; 명령값은 실측 [0, 1.35]로 문서와 달라 기각). 모션 판정을 렌더 diff에서 이것으로 전환 (N7 판정보류 논쟁의 재발 방지책).

2 결과 — zed2 승리, 결정타는 pnp

카메라전체pickpnppnp 성공 내역
shoulder (어깨 고정)6/105/51/5remote→bowl (200스텝)
zed2 (학습분포)7/104/53/5candle→bowl (203) · bowl→bowl (204) · remote→dish (159)

판정 기준별: ① SR — zed2 우세 (pnp 3배) ② qpos 모션 — 양쪽 다 건강, 타이브레이커 무효 ③ 프레이밍(팔 시야 이탈) — zed2에서 완화되나 완전 소멸은 아님. 종합 승자 zed2, 이후 실험 기준 카메라로 확정 (표본 확대 전까지 margin은 잠정).

성공 영상 — zed2의 pnp 3건 중 2건 + 어깨캠 비교

zed2 · h136 · "Pick up the candle and place it in or on the bowl" 성공 (203스텝) — house 136에서 part1의 pnp 성공은 이번이 처음
zed2 · h375 · remote→dish 성공 (159스텝) — 동일 house·동일 물체(remote)를 어깨캠도 성공(아래)해 직접 비교 가능
shoulder · h375 · remote→bowl 성공 (200스텝) — 어깨캠의 유일한 pnp 성공. zed2(159스텝)보다 41스텝 느림 (단일 쌍이라 참고용)

3 실패 사례 — 7건 중 대표 4건 (명령 원문 · 영상 · qpos 근거)

F-1 · shoulder · h640 · "Pick up the bottle and place it in or on the bowl" (600스텝, 그리퍼 전이 36회)
재현 하드케이스: 이 soapdispenser(동일 UID)는 N7에서도 600스텝 실패 — 두 라운드 연속. qpos 근거: 반복 파지 시도 후 실패 (동결 아님).
F-2 · shoulder · h136 · "Pick up the potato and place it in or on the tray" (600스텝, 그리퍼 전이 38회 — 전체 최다)
가장 격렬하게 시도하고 실패한 런. qpos_path_len 21.0 — 팔이 쉼 없이 움직였다는 물리 증거.
F-3 · zed2 · h446 · "Pick up the egg" (600스텝, 그리퍼 전이 20회)
zed2의 유일한 pick 실패 — egg(소형·곡면). zed2 실패 3건 중 2건이 egg 관련: 물체 축 하드케이스 후보.
F-4 · zed2 · h640 · "Pick up the egg and place it in or on the bowl" (600스텝, 그리퍼 전이 2회, qpos_len 6.8 — 유일한 저활동 실패)
20런 중 qpos 활동이 가장 낮은 셀이지만 정적 베이스라인 대비로는 여전히 활동 확정 — "동결" 아님. 시도 자체가 소극적이었던 케이스로 분류.
실패 분류 (qpos 기준): 적극적 조작 실패 6건 (그리퍼 전이 10~38회 — 파지 시도는 반복되나 완성 못 함; pnp에 집중) + 저활동 실패 1건 (F-4, 그래도 동결 아님). "동결"이라는 실패 모드는 qpos 방법론에서 소멸 — N6~N7의 동결/판정보류 서사는 렌더 프록시의 산물이었다. 남는 진짜 문제는 "파지 시도의 낮은 성공률(특히 pnp 후반부)"로 재정의됨.

4 N7 대비 SR 급등 조사 (3/10 → 6~7/10)

가설 ① 서버 카메라 설정 버그(N7이 잘못된 뷰를 읽었나) → 기각: N7·N8 서버 hydra dump diff 완전 동일 (N8의 수정은 env 추가일 뿐, 미지정 시 기본값 = N7 경로 그대로) 가설 ② 과제 재샘플 노이즈 → 채택: unseeded RNG로 매번 다른 물체가 뽑힘. 스윙은 pick에 집중 (2/5 → 9/10): fork/saltshaker/atomizer → mug/cup/remotecontrol 등 상대적으로 잡기 쉬운 물체로 교체된 것이 주요인. pnp는 1/5 → 1/5(shoulder) 그대로. 증거 조각: h640 pnp는 N7·N8 모두 같은 soapdispenser UID가 뽑혀 양쪽 다 600스텝 실패 — 과제가 같으면 결과도 같았다 (재현성의 방증)

함의: 씬×스킬 매트릭스의 절대 SR은 뽑힌 물체에 크게 좌우된다 (n=1/셀). 라운드 간 비교가 필요하면 물체 고정 회귀 세트(soapdispenser/egg 하드케이스 포함)를 도입해야 한다 — 새 mix 매트릭스 설계에 반영 권고.

5 결론과 다음 단계

#다음 단계근거
1Track A 착수: online textlog 메모리 + plan-first (zed2 기준)승자 카메라 확정으로 실행 조건 충족 — 승인된 플랜 순서
2새 mix 도착 시 매트릭스 = zed2 + qpos 로깅 + 물체 고정 세트 검토§4 함의
3표본 확대 시 물체 축 통제 (egg·soapdispenser 하드케이스)§3 실패 프로파일

판단

카메라 정렬은 "공짜 개선"에 가깝다 — 코드 변경은 옵션 배선뿐이고, pnp가 1/5→3/5로 뛰었다. 더 큰 수확은 방법론이다: qpos 로깅이 들어오면서 실패의 서사가 "가끔 얼어붙는 미스터리"에서 "반복 시도하나 파지 체인이 끊기는, 측정 가능한 조작 실패"로 바뀌었다 — 이제 개선 대상이 명확하다.