← 목록

goal image Phase 0 — 결과 정리

2026-09-17 · jobs 131979 · 132188 · API $0
기억에서 꺼낸 사진을 VLA의 goal로 먹이면 원위치에 놓을 수 있는가
결론 — 배선은 전부 작동한다. 그러나 측정이 성립하지 않는다. 이유가 둘이고 서로 묶여 있다. ① 데이터셋 exo 카메라가 로봇에 실려 있어 goal로 쓸 만한 프레임이 거의 없다. ② goal이 좋은 두 칸을 골라 다시 돌렸더니 둘 다 pick에서 실패했다.
12
총 롤아웃
6
채점 가능(물체 보유)
1
세 조건 다 갖춘 칸
0.995
카메라↔로봇 상관
$0
API 비용

그래서 place는 성공하나

질문답
place 단계까지 가긴 하나6 / 12 — 나머지 6회는 그 전의 pick에서 실패
맞는 가구 위에 올려놓나3 / 6
원래 그 자리(15 cm 이내)에 놓나 — 데이터셋의 실제 합격 기준0 / 6 · 거리 0.36 / 0.37 / 0.61 / 0.68 / 0.76 / 0.99 m
goal 이미지가 도움이 되나판정 불가 — place까지 간 칸은 goal 사진이 로봇 팔 사진이었고, goal 사진이 제대로인 칸은 pick에서 막혔다

성공 3회는 전부 5~12스텝 만에 그리퍼를 열고 끝(하네스가 팔을 가져다 놓은 자리에 그대로 놓음), 실패 3회는 전부 300스텝을 다 쓰고 물체를 떨어뜨림. 지금 VLA place는 “정밀 배치”가 아니라 “바로 놓거나, 헤매다 떨어뜨리거나”다.

성공·실패 예시 영상

한 줄 = 한 롤아웃. 왼쪽부터 ① VLA pick → ② 하네스가 팔을 preplace로 → ③ VLA place → ④ 최종 상태.

remote control → bed · oracle 성공: 침대 위 · 5스텝 원위치까지 0.357 m

① pick
③ place
④ 최종 상태

soap bottle → sofa · oracle 성공: 소파 위 · 12스텝 원위치까지 0.679 m

① pick
② preplace 접근
③ place
④ 최종 상태

soap bottle → sofa · off 성공: 소파 위 · 11스텝 원위치까지 0.614 m

① pick
② preplace 접근
③ place
④ 최종 상태

soap bottle → sofa · wrong 실패: 300스텝 후 떨어뜨림 원위치까지 0.759 m

① pick
② preplace 접근
③ place
④ 최종 상태

bowl → chest of drawers · off 실패: 300스텝 후 떨어뜨림 원위치까지 0.368 m

① pick
② preplace 접근
③ place
④ 최종 상태
“성공”의 뜻에 주의. 위 성공 3건은 맞는 가구 위에 올려놓은 것이다. 원위치 15 cm 이내라는 데이터셋 기준으로는 세 건 모두 불합격(0.36~0.68 m). 영상에서 보이듯 정책은 팔이 놓인 자리에서 곧바로 그리퍼를 연다.

1 무엇을 재려 했나

restore 질의(“원래 있던 자리에 되돌려 놔”)의 정답은 좌표다. 데이터셋 README가 채점을 state goal, 원위치에서 r_place = 0.15 m 이내로 규정해 놓고 채점기는 만들지 않았다. MolmoBot 쪽에는 goal-image 조건화가 학습·평가까지 끝나 있고 이득이 크다(hand-off 실측):

조건replace@5cm@10cm거리 중앙값
goal on35.4%63.8%6.7 cm
goal off4.6%13.8%25.6 cm
틀린 goal2.3%7.7%43.2 cm

질문: 그 goal을 기억에서 꺼낸 프레임으로 줘도 이득이 남는가. 세 조건(oracle / off / wrong)을 같은 칸에서 돌려 replace@{5,10,15}cm로 잰다. VLM을 부르지 않아 API $0.

2 결과 — 전 행

train_2853__2:q03 — soap bottle → sofa 전형 · goal 물체 0.49%

조건pickplace 진입 시 보유goal 도달place 스텝d_xy표면 판정
oracle✓✓✓120.679 m✓
off✓✓—110.614 m✓
wrong✓✓✓3000.759 m✗

train_7385__0:q00 — remote control → bed 전형 · goal 물체 0.30%

조건pickplace 진입 시 보유goal 도달place 스텝d_xy표면 판정
oracle✓✓✓50.357 m✓
off✗✗—3004.573 m✗pick 실패 · 채점 불가
wrong✓✓✓3000.987 m✗

train_6242__1:q05 — bottle → countertop goal 좋음 · goal 물체 2.70%

조건pickplace 진입 시 보유goal 도달place 스텝d_xy표면 판정
oracle✗✗—3007.193 m✗pick 실패 · 채점 불가
off✗✗—3007.221 m✗pick 실패 · 채점 불가
wrong✗✗—3007.191 m✗pick 실패 · 채점 불가

train_9026__1:q03 — bowl → chest of drawers goal 좋음 · goal 물체 1.62%

조건pickplace 진입 시 보유goal 도달place 스텝d_xy표면 판정
oracle✗✗—3004.633 m✗pick 실패 · 채점 불가
off✓✓—3000.368 m✗
wrong✗✗—3004.470 m✗pick 실패 · 채점 불가
12행 중 채점 가능한 건 6행이고, 세 조건을 모두 갖춘 칸은 1개(2853__2:q03)뿐이다. 그 칸에서 oracle 0.679 / off 0.614 / wrong 0.759 — goal 효과 없음. 데이터셋 기준 r_place(0.15 m)의 4~5배 밖.
방향만 보면 7385__0:q00에서 oracle 0.357 < wrong 0.987로 기대한 순서다. 그러나 off가 pick 실패로 비어 있어 비교가 성립하지 않는다. n=1짜리 관찰이지 증거가 아니다.

3 원인 ① — 영상에 goal로 쓸 프레임이 없다

exo_camera_1의 월드 포즈(cam2world_gl)가 로봇 베이스와 상관계수 0.995다. 카메라가 방에 고정된 게 아니라 로봇에 실려 같이 움직인다. 그래서:

20칸 각각의 “가능한 최선” 프레임(두 exo 카메라 × 원위치 구간 전 프레임 중 물체 픽셀 최대). 20장 전부에서 로봇 팔이 화면을 지배한다.
최선 프레임의 물체 크기칸 수
프레임의 1% 이상2
0.5 ~ 1%5
0.5% 미만13

학습 때 goal은 goal_source = clip_end, goal_camera = randomized_zed2_analogue_1 — 정책 자신의 관측 카메라로, 배치가 끝난 순간, 물체가 크게 잡힌 이미지였다. 종류 자체가 다르다.

실제로 먹인 goal(2853__2:q03) — 전 5,359프레임 중 최선, 1,507px(0.49%). 팔만 보인다
드물게 쓸 만한 경우(6242__1:q05) — 8,280px(2.70%). 병이 선명하다. 그런데 이 칸은 pick이 안 된다(§4)

4 원인 ② — goal이 좋은 칸은 pick이 실패한다

“영상이 문제라면 goal이 좋은 칸에서는 되겠지”를 확인하려고 20칸 중 goal 품질 상위 2칸을 골라 다시 돌렸다. 결과는 6회 중 5회가 pick 단계에서 실패였다(bottle 0/3, bowl 1/3). 유일하게 pick이 된 bowl·off 조건은 d_xy 0.368 m.

6242__1:q05 pick 시도 — 300스텝 동안 집지 못한다
navigate(bottle) 직후 로봇 위치
정정 — “goal 좋은 조건 = pick 어려운 조건” 가설은 틀렸다. goal 품질은 원위치가 어떻게 찍혔느냐의 문제이고, pick은 물체의 현재 위치에서 일어난다. 두 장소는 다르다(bottle: goal=countertop / pick=sofa z 0.40, bowl: goal=chest of drawers / pick=sink 안 z 0.97). 두 칸이 다 pick 실패한 건 서로 무관한 우연이다.

pick 실패는 navigation(선 자리) 때문인가 — 12회 대조

pick 성공 6회pick 실패 6회
navigate 후 물체까지 거리 (중앙값)0.60 m0.53 m
로봇 정면에서 벗어난 각도 (중앙값)25°11°

실패한 쪽이 오히려 더 가깝고 더 정면이다. 가장 선명한 반례는 bowl 칸 — 3 cm 차이의 같은 자리에서 한 번은 105스텝에 성공, 한 번은 300스텝 실패. 반면 soap bottle은 제각각인 자리 3곳에서 3/3 성공, bottle은 어디서든 0/3. 지금 보이는 패턴은 “선 자리”보다 물체·배치 + VLA 자체의 확률성이다(n=12, 단정 불가).

navigate는 학습 분포 밖에 세우나 — 아니다

학습 datagen우리 navigate
물체로부터 거리0.0 ~ 0.7 m0.0 ~ 0.7 m (nav0.py가 의도적으로 복사)
안전 반경0.150.15
물체 방향 기준 회전±45°실측 −43° ~ +45°

남는 차이는 분포 안에서 무작위로 서느냐, 정해진 자리에 서느냐다. 자리를 고정하면 조건 간 비교는 확실히 깨끗해지지만 (지금은 oracle과 off가 서로 다른 자리에서 시작한다), 성공률 자체가 오를지는 위 대조표상 불확실하다.

함의. pick 성패는 이 실험이 재려는 것(goal → 배치 정밀도)과 무관한 잡음이고, 같은 칸 안에서도 조건별로 분모를 바꾼다. hand-off 벤치가 pick을 expert에게 시키고 place만 정책에 넘긴 이유가 이것이다. 프로브도 오라클 grasp(물체를 쥐여준 상태에서 시작)으로 바꾸면 goal 좋은 칸에서 place만 깨끗이 잴 수 있다.

5 tagmem은 저장을 했나

했다. 다만 그 사진 속 물체가 너무 작다.

항목값
편당 tagmem 저장 이미지 (중앙값)49장
그중 원위치 구간 안20장
원위치 구간에 그 물체를 정확히 이름으로 태깅한 이미지가 있는 칸11 / 20
그 11칸에서 물체 최대 크기 (중앙값)301 px = 0.10%

나머지 9칸은 원위치 구간 이미지는 있으나 writer가 그 물체를 언급하지 않았다(soap bottle·spray bottle·ladle 등). 예외도 있다 — 6242__1:q05는 소스에 8,280px 프레임이 있는데 tagmem은 414px짜리를 저장했다. 일부 칸에선 저장·선택도 병목이다.

6 중간에 고친 내 진단

“하네스가 배치 좌표를 정해서 문제”라고 했던 것은 틀렸다. hand-off에서도 preplace는 expert(=하네스)가 정한다. 거기선 정책이 goal을 보고 그 자리에서 횡이동해 25.6 → 6.7 cm로 좁혔고, 틀린 goal이면 43 cm로 더 멀어졌다. 즉 VLA가 학습한 능력은 “어디에 놓을지 처음부터 정하기”가 아니라 “주어진 자리에서 goal 쪽으로 보정하기”다. 우리 실험에서 보정이 안 일어난 건 보정해 갈 목표가 이미지에 없었기 때문이다.
분석 코드 오류 3건(전부 내 것). ① "remotecon" 부분문자열 검색 → 태그는 "remote control"이라 “0개”로 오보. ② "bottle" in "soapbottle"이 참 → 다른 물체를 target으로 세어 11칸을 13칸으로 부풀림. ③ obj 태그를 38자로 잘라 출력해 “태그에 없다”고 오독. 본 리포트의 수치는 정확 일치·전문 출력으로 재집계한 것이다.

7 만들어 둔 것 (전부 테스트·리뷰 통과)

산출물상태
replace@r 채점기 — 데이터셋이 규정만 하고 안 만든 그것✓ 8 tests
오라클 goal 프레임 선택(tracked_obj_pixels 기반)✓ 6 tests + 실데이터 검증
정책 클라이언트 set_goal_image (uint8 검증 포함)✓ 20 tests
orchestrator 훅 — place 서브골에만 goal, 미도달 시 assert✓ 79 + 199 tests
MolmoBot goal 정책 websocket 서빙 분기✓ hydra dry-run (실기동 미검증)
프로브 러너 — VLM 미호출, 조건 간 qvel 영점화, --query-ids✓ 실기동 확인
사전 등록 판정(probe_verdict)✓ 7 tests

전체 유닛 스위트 980 통과. 리뷰가 잡은 결함 6건은 전부 “크래시 없이 틀린 수치를 만드는” 부류였다 (조건 간 속도 이월, goal_image_used 거짓 기록, n=1에서 wrong 자기짝, dtype 미검증, resume 키 누락, 판정 테스트의 탈락 사유 미구별).

MolmoBot goal 모델은 아직 한 번도 안 돌렸다. 위 결과는 전부 pi0.5 goal v2다. MolmoBot은 hand-off에서 2.3배(@10cm 63.8% vs 27.4%)였다.

8 남은 선택지

방향답하는 질문비용
정책 카메라로 goal 렌더 — 물체를 원위치에 놓고 randomized_zed2_analogue_1로 찍음 “메커니즘이 우리 씬에서 작동하긴 하는가” (기억이 아니므로 진단용)GPU만
pick을 오라클로 — 물체를 그리퍼에 쥐여주고 place만 측정 pick 실패를 분모에서 제거. hand-off와 같은 조건구현 + GPU
데이터셋에 고정 카메라 추가근본 해결. 기억에 goal 품질 프레임이 생김데이터 재생성
여기서 종결“현 데이터셋으로는 측정 불가”를 결론으로0