3결과 (수치)
pilot1 (40 ep, seed 100–139, 평균 79 s/ep)
| trigger | n | 회복 후 안착 | 전체 조립 | 변환기 통과 | 인계→안착 step |
|---|
| no_upright | 14 | 11 (79%) | 8 | 7 | 353 |
| released (빗나간 채 놓음) | 18 | 6 (33%) | 3 | 2 | 555 |
| fell | 1 | 1 | 0 | 0 | 780 |
- released 실패 12 ep 로그:
grasp missed 32회, nothing upright in hand 14회. 넘어진 leg 재파지 시 EE–leg 수평 거리가 5–27 cm (35회 중 24회가 5 cm 초과). no_upright 성공 ep는 15회 모두 1.1 cm 이하. - 원인(영상 s109, s118): 놓친 leg가 작업대 오른쪽 끝/장애물 벽으로 굴러가 팔 작업 공간 경계에 도달 → scripted를 고쳐도 해결 불가.
pilot2 (pre_release, 40 ep 최종)
| 구분 | n | 회복 (안착) | 비고 |
|---|
| pre_release 전체 | 30 | 26 (87%) | 인계→안착 평균 53 step |
| lateral ≤3.5 mm | 8 | 7 | 37–62 step |
| 빗나감 3.5–20 mm | 16 | 15 | 43–70 step |
| 크게 빗나감 >20 mm | 4 | 2 | 대부분 depth −20 mm |
| no_upright | 5 | 5 | |
| fell | 3 | 1 | |
- 학습 사용 가능(회복 후 안착 ∧ seat ≤768): 29/40. 변환 시 pilot1 12 ep(9,906 frame, anchor 6,476)에서 pilot2 약 27 ep로 증가.
- policy_success 7 → 2: 거의 안착(≤3.5 mm)에서 놓으려던 8건도 미안착 판정으로 인계되었기 때문. 조금 더 밀어 넣고 놓는 데이터가 되어 오히려 유용하다고 판단.
- crash 1건:
v2_putdown_aside가 v2["home_xy"]=None을 읽음 → reset 직후 leg 위치를 저장해 인계 시 채우도록 수정, seed 102–104 재실행(196422)에서 2/3 회복.
scale1 (p48, seed 1000–1599, 600 ep, 1-GPU job 60개)
| trigger | n | 회복 성공 |
|---|
| pre_release | 357 | 335 |
| no_upright | 158 | 113 |
| fell | 24 | 8 |
| released | 9 | 3 |
| policy_success | 52 | – |
변환(--allow-unassembled 40): 421 ep 채택 (drop: not_seated 89, seat_too_late 38, no_failure 52), 280,787 frames, 181,386 anchors(64.6%). 단위 테스트 pass(pilot2 29 ep: 16,233 frame, anchor 9,568, 무작위 4 샘플 action chunk가 scripted와 일치).
- fine-tune(own, 4 GPU, 3000 step, global batch 128, lr 5e-5):
lwam_fb_handoff_ft(원래+handoff 1:1, 196991), lwam_fb_handoff_ctrl(원래만, 196992). 0.17 step/s, 02:18→07:03 UTC에 완료. 평가 결과는 261017-handoff_ft_eval_videos 참조.
4Takeaway
"실패한 뒤 회복"이 아니라 "실패 직전 인계"가 scripted 한계를 우회한다. 도달 불가 위치로 굴러간 leg를 줍는 대신 아직 손에 있을 때 정렬을 고쳐 주므로 회복률 33→86%, 소요 53 step.
채택된 421 ep는 pre_release(335) 편중이다. 학습되는 행동은 "놓기 전 물러나 재정렬"이며, 넘어진 leg를 세우는 회복은 no_upright 113 ep뿐이다. 평가 결과(handoff v1은 대조군보다 나쁨)와 연결해 해석해야 한다.