1. 진행 이력 요약
[환경 전환]
- 1차 환경: WSL Ubuntu 22.04 (이전 PC) — lerobot 0.5.2, SO-101 조립·캘리브레이션·teleoperation 성공까지 진행
- PC 교체 → 2차 환경: 네이티브 Ubuntu 24.04 (airlab 데스크톱, RTX 5070 Ti, Blackwell) — lerobot 0.6.1로 재설치, PyTorch 2.7+/cu128로 재구성
[시도 순서 (날짜 기준)]
1차 (07-06)
- 데이터: pick_place_test, 10 에피소드
- 카메라: wrist 단일
- 학습: 30k 스텝
- 결과: grasp 실패, 고정 위치 근처에서만 반응
2차 (07-07)
- 데이터: black_tray_pickplace, 48 에피소드
- 카메라: wrist + front
- 학습: 30k 스텝 (chunk_size=100)
- 결과: 접근은 하나 grasp 실패
2차-변형 (07-07)
- 동일 데이터, chunk_size=30으로 재학습
- 결과: 오히려 악화 (그리퍼가 엉뚱한 위치로)
2차-보강 (07-07)
- 데이터: black_tray_grasp_focus_v1, 22 에피소드 (트레이 고정, 물체 위치만 변화)
- 학습: 20k 스텝
- 결과: 모터 통신 에러(id=4)로 테스트 중단, 결과 미확인
3차 (07-08)
- 데이터: pick_place_multicam, 48 에피소드 (물체 위치 다양화)
- 카메라: wrist + top-down
- 학습: 100k (+20k 추가) 스텝
- 결과: 접근은 개선됐으나 grasp 실패, 075k 근처가 그나마 최선
2. 가장 유력한 원인: 시연 중 사람이 카메라 화면 이외의 정보(실물 시야)를 사용함
이게 핵심 원인으로 판단된다.
- 시연(teleoperation) 시 Leader를 조작하면서 follower 팔/물체를 카메라 화면만 보고 조작한 게 아닌 직접 육안으로 보면서 움직였음.
- 사람은 3D 공간 정보(실제 그리퍼-물체 간 거리, 깊이감)를 눈으로 직접 받아 무의식적으로 보정하며 조작하지만, policy는 오직 2D 카메라 이미지만 보고 액션을 학습하기 때문에 여기에서의 정보 손실 발생 가능성 높음.
- 결과적으로 학습 데이터의 "이미지→액션" 매핑 자체에 사람만 알던 정보가 암묵적으로 섞여 들어가고, policy는 이 매핑을 있는 그대로 재현하려 하지만 이미지만으로는 그 미세한 보정을 재현할 수 없어진다.
- 실제 증상과 일치: 높이가 낮아질수록(그리퍼가 물체에 가까워질수록) 실제 물체 위치보다 살짝 어긋난 지점(뒤쪽)을 집으려는 경향이 관찰됨 — 이는 wrist camera의 장착 각도(그리퍼 위쪽 대각선)로 인한 시차(parallax)와, 사람이 실물을 보고 보정한 접근 경로가 결합된 결과로 추정된다.
커뮤니티 사례와의 일치: HuggingFace 블로그에 공개된 유사 사례(Sherry Chen, SO-101 + ACT)에서도 정확히 같은 원인이 보고됨 — "데이터 수집 중 follower 팔을 어깨너머로 직접 보면서 녹화했고, 이것이 카메라 영상만으로는 얻을 수 없는 정보를 policy 학습에 섞어 넣은 원인이었다." 해당 사례의 실패 양상("물체에 필요 이상으로 가깝게 접근하려 함")도 이번 관찰과 유사한 것을 확인했음.
3. 보조 원인: 과적합 (48 에피소드, 100k step)
- Training loss는 6.7 → 0.11대로 꾸준히 수렴했으나, checkpoint별 실제 로봇 성능은 075k 스텝 근처가 최선이었고 이후(080k~095k)로 갈수록 개선되지 않음.
- 이는 loss 감소와 실제 policy 성능 향상이 특정 지점 이후 괴리되는 전형적인 과적합 패턴과 일치했다.
- 48 에피소드는 커뮤니티 권장 기준(50~100 에피소드, 70~85% 성공률)에는 근접한 양이지만, 100k 스텝은 이 데이터 규모 대비 다소 과할 수 있음 — 각 에피소드를 지나치게 많이 반복 학습하면서 "일반화"보다 "암기"로 넘어갔을 가능성. (48개 에피소드로 100,000스텝을 도는 건, 처음 계획했던 30,000스텝 기준 약 11에폭에서 약 37에폭까지 같은 데이터를 반복해서 보는 셈이라 과적합 위험이 커짐)
- 다만 이것만으로는 grasp 자체의 실패를 설명하기 부족: 과적합은 보통 새로운(학습 데이터에 없던) 상황에서의 실패로 나타나는데, 이번 경우는 학습 데이터와 유사한 위치에서도 grasp이 정밀하게 되지 않는 문제였음. 즉 원인 2(사람의 시야 정보 개입)가 원인 3(과적합)보다 근본적일 가능성이 높음.
4. ACT의 구조적 한계 (데이터를 아무리 늘려도 완전히 해소되지 않는 부분)
grasp 실패는 데이터 문제와 ACT 자체의 구조적 한계가 겹쳐서 나타나는 현상으로 판단된다.
- 깊이(depth) 정보 부재: RGB 카메라만 사용하므로, 그리퍼와 물체 사이의 정확한 3D 거리를 정책이 픽셀 정보만으로 추정해야 함. 사람은 양안시차나 경험으로 거리감을 알지만, 단안(monocular) RGB에서 정확한 mm 단위 거리 추정은 원래 어려운 문제.
- 폐루프 반응성의 구조적 트레이드오프: chunk 단위로 예측하다 보니, "지금 이 순간 그리퍼가 물체에서 몇 mm 떨어졌는지"에 실시간으로 세밀하게 반응하기보다는 어느 정도 뭉뚱그려진 궤적을 따라가는 경향이 있음.
- 학계에서도 보고된 한계: 관련 논문(VITA)에 따르면 ACT와 Diffusion Policy는 "grasp처럼 밀리미터 단위 정밀도가 필요한 태스크"에서 구조적으로 약하다는 점이 지적됨. 해당 논문에서 ACT/DP가 정밀 태스크에서 약 40% 성공률을 보인 반면, 정밀도에 특화된 모델(VITA, Flow Matching 계열)은 80~90%의 성공률을 보였다고 보고됨.
- 정리하면: ACT로 100% 완벽한 grasp 정밀도는 구조적으로 기대하기 어려우나, 지금 상황(방향은 맞지만 못 잡는 단계)에서는 데이터를 늘리는 것만으로도 상당히 개선될 여지가 있음(커뮤니티 기준 50개=70~80%, 100개=85%+)
5. 검증되지 않은 나머지 가설 (참고용)
- Action chunk 타이밍/temporal ensembling 미설정: 이론적 가능성만 있고 직접 검증 안 함
- wrist camera 각도(시차) 단독 문제: 화면만 보고 조작하는 재현 테스트를 하지 않아 원인 2와 분리 검증되지 않음
6. 결론 및 다음 단계 참고사항
1) 가장 중요한 개선점: 다음에 데이터를 재수집할 경우, 반드시 카메라 화면만 보고(실물을 보지 않고) 시연할 것. 이게 안 되면 어떤 policy(ACT든 SmolVLA든)를 쓰든 동일한 문제가 재발할 가능성이 높음.
2) 데이터 규모 자체(48 에피소드, 2카메라)는 커뮤니티 표준 레시피와 거의 일치했으므로, 데이터 "양"보다 데이터 "수집 방식"이 문제였다고 보는 것이 합리적.
3) SmolVLA 등 사전학습된 비전-언어 백본을 쓰는 모델로 전환해도, 시연 방식 자체의 문제(원인 2)가 해결되지 않으면 유사한 실패가 재발할 수 있음. 전환과 별개로 재녹화 시 화면만 보고 조작하는 원칙을 지키는 것이 중요.
참고: SmolVLA는 Hugging Face가 만든 450M 파라미터 규모의 경량 VLA(Vision-Language-Action) 모델로, 이미지+로봇 상태 외에 자연어 지시까지 입력으로 받고, ACT의 CVAE 방식 대신 flow-matching 방식으로 행동을 생성하며, VLM 백본과 행동 실행을 분리하는 비동기 추론을 사용함. 3만 개 미만의 학습 에피소드로도 훨씬 큰 VLA 모델에 필적하는 성능을 낸다고 보고되어 있고, SO-100/SO-101 실제 로봇 작업에서 ACT 베이스라인을 능가한 사례가 있음(lerobot/smolvla_base로 사전학습 모델 제공).
4) 과적합 가능성을 고려해, 다음 학습에서는 checkpoint를 더 촘촘히 저장하고(예: 5k 간격) 각 checkpoint의 실제 성공률을 정량적으로(예: 5회 중 성공 횟수) 기록해두면 최적 지점 판단이 쉬워짐.
5) 데이터 수집 전략 참고: 그릇(목표 위치)은 고정하고 물체 위치만 다양화해서 먼저 "grasp 자체가 잘 되는지"부터 확인하는 것이 문제를 단순화하는 좋은 디버깅 전략이 될 수 있음. 위치 일반화(그릇 위치까지 다양화)는 grasp 정밀도가 먼저 확보된 다음 단계로 미루는 것도 방법.