pi05-AssembleBench-cgdagger-r3(13/190)는 model card상 BC 위에 code-gated DAgger 3라운드(round1 grasp failure, round2 off-center, round3 삽입 중 놓침; 교정은 peg_round_8mm만)를 더한 것이고 pi05_droid_jointpos에서 시연 1355개(14 작업)로 full finetune했다.pi05-AssembleBench-12k로 공정 비교 (2) Long-WAM에도 같은 CG-DAgger 적용.scripts/experts/rl/takeover.py ExpertTakeover — grasp gate(닫힘+후퇴+펙이 stand 위, 12 tick 지속), insert gate(진전 없음), tilt gate(30° 이상). latch되면 episode 끝까지 scripted expert가 action을 덮어씀. HUD wire는 expert 채널을 싣지 않아 sim 프로세스 안에서 직접 녹화 필요.scripts/assemblebench/dagger_recorder.py: DaggerRecorder gym wrapper(ExpertTakeover 바깥). tick마다 front/wrist(320x180), state 8, eef_pos, policy_action, 적용 action, expert flag를 episode당 npz로 저장.env.py: AB_DAGGER_DIR 설정 시 recorder 적용. eval_longwam.sh: DAGGER=both, DAGGER_STEPS(기본 600), SEED 추가.scripts/assemblebench/dagger_takeover.py PickTimeoutTakeover: tick ≥ AB_PICK_TIMEOUT(=150)이고 펙이 아직 stand 위이면 regrasp로 인계.convert_dagger_to_longwam.py: Long-WAM v2.1(round_pegs와 동일 schema) + meta/loss_segments.jsonl. anchor 조건: [t, t+33)이 모두 expert tick(HG-DAgger, policy 구간은 history로만 사용).configs/longwam/{data,task}/assemblebench_dagger.yaml(round_pegs + $DAGGER_DATASET_DIR, dataset_uniform 1:1, pretrained_norm_stats를 BC run으로 고정 — 미고정 시 joint min/q01이 최대 0.05 rad 이동), train_longwam_b200.sh에 TASK 변수·PYTHONPATH 추가.| 모델 | 16mm | 12mm |
|---|---|---|
| Long-WAM 9670 | 0/30 | 0/30 |
| pi0.5 BC (12k) | 2/30 | 0/30 |
| pi0.5 BC+DAgger (r3) | 6/50 | 6/60 |
| 설정 | job | 결과 |
|---|---|---|
| 저자 grasp gate만 | 197166 | wave 0: 개입 1/5(tick 529). 3/5는 닫기 명령 없음, 최저 EE z 0.25~0.26 m vs 전문가 파지 0.20 m. wave 1: 4/5 latch(tick 203~225), 전문가 seat 3 |
| + pick-timeout 150 | 197231 | wave 0: 5/5 tick 149에 latch, 전문가 seat 2/5 (T=424, 446) |
LossSegmentRobotVideoDataset으로 "복구 구간에만 loss"를 지원하므로(one_leg handoff 때 구현) 새 학습 코드 없이 DAgger 1라운드를 돌릴 수 있다.dataset_uniform으로 round_pegs:dagger 1:1, 9670에서 이어 fine-tune → 재평가.