observation_refresh_frames=20 → 팔 21 cm 이동).카드 native_icl 첫 파지의 stage 006은 “cross-job 물리 restore 검증 실패”(카메라1 국소 depth 변화 23.1%)로 파지 성패 판정 전에 멈췄다. native_icl은 실행 중 worker에 명령을 보낼 수 없는 클러스터 제약(§4 job 격리) 때문에 job 1개 = 관측 1회 + 액션 1개이고, 물리 상태는 checkpoint로만 이어진다. 따라서 이어받은 상태가 실제로 이어졌는지를 센서만으로 검사하는 continuation guard가 핵심 병목이고, 그 검사와 stage 내부 제어의 품질이 곧 실험 결과가 된다.
continuation_breaks를 소급해 통과로 바꾸지 않는다.| 버전 | 시점 | 변경 | 근거 / 결과 |
|---|---|---|---|
| v1 | stage 006 | 고정 카메라·wrist 픽셀 깊이 직접 비교 | 국소 변화 23.1% → continuation_rejected (EE 오차 0.000127 m 등 로봇 상태는 정상) |
| v2 | 09-18 | wrist 국소 검사를 보정 RGB-D + 측정 EE pose로 얻은 로봇 좌표계 표면의 양방향 최근접 거리로 교체 (5 mm, 국소 15%) | 픽셀 대응이 로봇 미세 이동에 깨지는 문제 제거 |
| v3 | 09-18 | wrist 전체 깊이 검사도 로봇 좌표계 표면으로 (5 mm, 전역 1.5%, 국소 15%) | 국소/전역 일관, 정면 카메라·RGB·로봇 상태 검사 유지 |
| v4 | 09-18 | 043→044, 044→045: 먼 바닥(7~200 m) 성긴 표본이 최근접 점 5 mm 초과 → 완전 관측된 3×3 패치 평면성(잔차 ≤1 mm)+삼각형 내부 포함 시에만 면까지 거리 사용 | 결측 채움·외삽·비평면 연결 금지. 88 tests, 과거 단절 8회 보존 |
| v5 | 09-18 | 3×3 중 관측점 ≥6개 평면성 1 mm, 세 꼭짓점 모두 관측된 삼각형만 보간 | 90 tests. 그래도 047→048→049 원거리 바닥 경계 국소 17.49% 거부 → stage 050 = 046 rewind |
| v6 | 09-19 | 두 카메라 모두 관측 표면 간 거리(고정 카메라 픽셀 깊이의 경사면 오탐 제거). 이미 거부된 검사에선 추가 표면 계산 생략 가능(명시) | obs 313→314 최악 타일: 픽셀 깊이 변화 51.4% vs 실제 표면 거리 최대 2.49 mm |
| 옵션 | 도입 | 이유 / 검증 |
|---|---|---|
ramp_control_steps(1–40) + 절대 목표 램프 | stage 061 적용 | 3 mm 병진 상한이 계속 포화 → 입구 전 X/Z ≈13/11 mm 처짐. 원래 축별 35 mm 상한 유지 + 30 step 참조 램프로 교체 |
position_integral(≤20 mm), orientation_integral, rotation_error_gain(1–2) | stage 059~068 | stage 067: 위치 0.2 mm 도달·각도 0.0245 rad 잔존, 적분 bias가 0.05 rad에서 포화 → 상한 0.12 rad (기본 off, 이동마다 초기화) |
settle_control_steps(0 또는 4–80) | stage 071 | 측정 시작 pose 유지 후 이동, 마지막 4 step 미충족 시 settle_timeout으로 전진 안 함. 070은 대기 중 취소, 071이 첫 검증 |
release_gripper | stage 054~064 | 개방하며 이탈. 상승 중 개방(stage 064)을 시뮬레이터에서 1회 검증 |
min_gripper_width_m / 최대 폭 조건 | 최소: 초기, 최대: stage 223 이후 | 폭이 범위를 벗어나면 grasp_width_lost 중단(잡힘 성공 판정은 아님). stage 223에서 7.30 mm로 벌어진 사례 |
stationary_tag_guard, stop_on_stall(12 sample), stationary_depth_guard(영역 1–4) | stage 145~158 | Trial 1 stage 138의 접촉 중 하우징 이동을 실시간 중단으로 대응. 힘 센서·충돌 인증 아님, 샘플 사이 이동은 못 막음 |
on_continuation_rejection=hold_current_robot_pose | stage 141 | capture에서만: 거부돼도 새 관측 저장 + 그 EE pose로 50 step 유지(상한 60). 원 요청은 무효·거부 횟수 증가 |
observation_refresh_frames(1–20) 폐기 | stage 140 | 20 frame 동안 마지막 토크 유지 → 팔 21 cm 이동. 이후 1만 허용, 추가 45프레임은 action 수와 분리 기록 |
observation_profile=wrist_front_rear_rgbd | stage 212 | 후방 고정 RGB-D 추가(capture 결정에서만, 동작과 동시 불가). 3-view 결과는 2-view와 동일 입력 예산으로 보고 금지 |
보조 도구: inspect_native_stage.py는 job 종료 확인 후 정해진 경로·hash가 맞는 공개 관측만 출력(raw log·체크포인트·오류 상세 미노출), robot_gripper_geometry.py는 URDF 손목·손가락 collision 형상만으로 EE 후보의 범위를 계산(물체 mesh·scorer 목표 미열람, 충돌 안전 인증 아님).
| CPU 테스트 수 | 시점 |
|---|---|
| 43 | stage 006 (첫 파지 카드) |
| 88 | v4 관측면 복원 |
| 90 | v5 |
| 96 | release_gripper (제어 경로 테스트 6개 포함) |
| 104 | orientation_integral |
| 105 | stage 061/068 상한 수정 |
| 108 | settle_control_steps |
| 118 | rejection hold |
| 124 | stationary_tag_guard/stop_on_stall (+simulator Python3.8 6개) |
| 128 | stationary_depth_guard (+simulator 10개) |
| 146 | 최종 (+ 카메라 구성 7개, 실행 환경) |
운영 지표(sacct, 09-17 이후 fb_native_icl_stage 233 job): COMPLETED 228, FAILED 2, CANCELLED 2, TIMEOUT 1. Trial 1 종료 시점 총 관측 거부 23건(활성 분기 단절 21건), Trial 2 이어받기 거부 3건(CURRENT_PROGRESS_KO.md).
거부의 상당수는 비교 공간 문제(픽셀 대응·성긴 원거리 표본)였고, 임계값 완화 없이 비교 공간만 바꿔 오탐을 줄였다. 이로써 stage당 30~50초짜리 job 체인이 실제 조립 시도(Trial 2, stage 145→230)를 이어갈 수 있게 됐다.
반대로 검사가 보장하지 못하는 것도 분명하다: PhysX 접촉 캐시는 저장되지 않고 복원 시 물리 1 step이 진행되므로 “보이는 상태의 일관성”만 검증한다. stage 165(접촉 후 하우징 7 mm 이동)·141(홀드 후 가구 이동 정착)처럼 숨은 접촉 상태 변화는 guard를 통과한 뒤에도 발생했다.
v6가 wrist horizon 원거리 표본 사례(047→049형)를 실제 worker 복원에서 통과시키는지는 재현되지 않았다(v5까지는 CPU 재검증만). 접촉 중 이동 감시는 샘플 사이 움직임을 막지 못하고 단색 평면의 접선 운동을 놓칠 수 있다. 제어 옵션이 늘어 모델의 옵션 선택 오류(stage 230형)가 새 실패원이 됐다.
CALIBRATION_KO.md 절차) — 시뮬레이터 보정값(simulated_sensor)으로 대체 금지.