Index
2026-08-20 — Experiment

온라인 2-stage 실조작 — VLM이 계획하고, VLA가 조작하고, VLM이 기억한다

scene_bench | Task N14 | job 87852 (1×B200, mixv2-20k) | 실제 롤아웃 8편

TL;DR

8
실제 롤아웃 영상
0/8
조작 성공
0
노트 오기록
$0.14
VLM 비용

1무엇을 재는가 · 어떻게 도는가

로봇은 이미 작업 현장에 있고 지금부터 실제 조작을 한다. VLM은 goal 하나를 받아 매 턴 VLA에 넣을 subgoal 하나를 내고, 같은 콜에서 자기 메모리를 갱신한다. 에피소드가 길어지면 지난 프레임을 다 들고 갈 수 없으므로 그 메모리가 상태를 나르는 유일한 매체다.

[매 턴 루프] ① VLM 입력 : 직전 subgoal 실행 프레임 + 현재 시점(bench_exo_L + wrist) + 자기 노트 + goal + 물체/방 이름 어휘 ② VLM 출력 : {"note": "...", "next": {"skill": "pick_and_place", "category": "knife", "surface": "countertop"}} ← 1콜 ③ 하네스 : 이름 → sim 인스턴스 해석 → VLA task 생성 ④ VLA : "pick up the knife and place it on the countertop." 600 스텝 실행 ⑤ 프레임 : dense 캡처(매 2 물리스텝, exo+wrist) → 다음 턴 ①의 입력
VLA
mixv2-20k
정책 입력 카메라
zed2 (학습분포)
VLM 관측 카메라
bench_exo_L
subgoal horizon
600 steps

VLM 시스템 프롬프트 전문

You are the high-level controller of a household robot, and you are also its memory. You are given ONE goal. Each turn you decide the single next subgoal for the low-level policy to execute, and you update your own notes in the same reply. Each turn you receive: the frames captured while your previous subgoal was executing, your current view, your notes so far, the goal, and the object and room names used in this house. Skills: - navigate(category): move next to an object — manipulation only works within reach, so navigate to the target before picking it - pick(category): grasp and lift the object - pick_and_place(category, surface): one atomic unit — you cannot split pick and place into separate subgoals - open/close: DISABLED (not in this robot's training data — never choose them) - done: the goal is fully satisfied - abort: impossible to proceed (explain in reasoning) Rules: - Refer to objects and rooms by the names in the lists below the images — copy the spelling exactly. - The low-level policy fails often. Judge from the frames whether your previous subgoal actually worked, and retry it or move on accordingly. Nobody tells you whether it succeeded. Notes — this is the ONLY record you will have of earlier turns; you will not see those frames again: 1. Do NOT claim a subgoal completed unless the last frame clearly shows it. If the frames only show the action in progress, or the final state is unclear, describe only what you actually see — never assume success from what you were trying to do. 2. Prefix anything you are not certain about with "uncertain: ". 3. Record what you attempted, what visibly changed, and what is still left to do. 4. Write ONE new note line for this turn. Your earlier lines are kept automatically — do not repeat them. Output a single JSON object, nothing else: {"note": "...", "reasoning": "...", "next": {"skill": "...", "category": "...", "surface": "...", "room": "..."}} Use null for fields that do not apply.

2조작은 실제로 실행됐다 — 모션 측정

렌더 diff가 아니라 arm qpos 궤적으로 판정한다(260818 방법론). StubPolicy(제로모션)면 경로장이 정확히 0.00이다.

armqpos 경로장그리퍼 전이스텝결과
self-appendt=112.284600실패
self-appendt=34.280600실패
self-appendt=626.2826600실패
no-memoryt=11.470600실패
no-memoryt=20.380600실패
no-memoryt=45.950600실패
no-memoryt=65.774600실패
no-memoryt=70.350600실패
경로장이 0.35(거의 정지)에서 26.28(매우 적극적)까지 갈린다. 그리퍼 전이 26회짜리 시도도 있다 — 정책이 멈춘 게 아니라 집기에 실패하고 있다. N8/N10에서 확립한 실패 분류와 같은 양상이다.

3턴별 완전 추적 — self-append

각 턴은 ① VLM이 본 것 → ② VLA가 한 것(영상) → ③ VLM이 기억한 것 순서다.

t0 navi·knifet1 pick·knifet2 navi·knifet3 pick·knifet4 navi·knifet5 navi·knifet6 pick·knifet7 navi·knife
t=0 navigate(knife) 성공
① VLM이 본 것
t=0 관측
계획 근거 → I need to locate and move the knife, plate, and wine bottle to the countertop. Starting by navigating to the knife.
③ VLM이 기억한 것
Started goal to place knife, plate, and wine bottle on countertop; navigating to knife.
t=1 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=1 관측
계획 근거 → The robot has successfully navigated to the dining table where the knife is visible right in front of the gripper. Now executing pick_and_place for the knife to the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 12.28 · 그리퍼 전이 4회 · 600 스텝 (제로모션이면 경로장 0.00)
③ VLM이 기억한 것
Arrived at dining table facing knife; knife, vase, fork, and house plant visible; proceeding to place knife on countertop.
t=2 navigate(knife) 성공
① VLM이 본 것
t=2 관측
계획 근거 → The knife was not successfully picked up during the previous pick_and_place attempt and remains on the dining table next to the vase. Re-navigating to the knife to ensure proper positioning before attempting pick_and_place again.
③ VLM이 기억한 것
[t=2] Attempted pick_and_place of knife to countertop, but knife remains on dining table; re-navigating to knife.
t=3 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=3 관측
계획 근거 → The robot has navigated back to the knife on the dining table. The knife is within reach. I will now attempt to pick and place the knife onto the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 4.28 · 그리퍼 전이 0회 · 600 스텝 (제로모션이면 경로장 0.00)
③ VLM이 기억한 것
Navigated back to knife at dining table; knife is visible on table; attempting pick_and_place of knife to countertop.
t=4 navigate(knife) 성공
① VLM이 본 것
t=4 관측
계획 근거 → The pick_and_place attempt failed as the gripper missed the knife, which remains visible on the dining table in the gripper camera view. I need to navigate to the knife again to align properly before retrying.
③ VLM이 기억한 것
[t=4] Attempted pick_and_place of knife to countertop, but knife remains on dining table; re-navigating to knife.
t=5 navigate(knife) 성공
① VLM이 본 것
t=5 관측
계획 근거 → The pick_and_place attempt failed as the knife is still visible on the dining table in the gripper and primary views. I will navigate to the knife again to reset the robot's pose relative to the knife before trying pick_and_place again.
③ VLM이 기억한 것
[t=5] Attempted pick_and_place of knife to countertop, but knife remains on dining table; navigating to knife to retry.
t=6 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=6 관측
계획 근거 → In the previous turn, the robot navigated to the knife on the dining table. Looking at the current view and gripper view, the knife is visible on the dining table next to the vase. Now that the robot is positioned at the knife, I will issue the pick_and_place subgoal to move the knife to the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 26.28 · 그리퍼 전이 26회 · 600 스텝 (제로모션이면 경로장 0.00)
③ VLM이 기억한 것
Navigated near knife on dining table; knife remains on table; now attempting pick_and_place of knife to countertop.
t=7 navigate(knife) 성공
① VLM이 본 것
t=7 관측
계획 근거 → The pick_and_place action failed as the gripper did not secure the knife, leaving it on the dining table. I will re-navigate to the knife to reset the robot's stance and try again.
③ VLM이 기억한 것
Attempted pick_and_place of knife to countertop, but knife remains on dining table; navigating to knife to retry.
세 번의 조작 모두, 다음 턴의 노트가 정확히 실패로 기록했다. 오라클은 주지 않았으므로 이 판정은 전적으로 프레임에서 나온 것이다. 완료를 단정한 오기록은 0건.

4대조군 — no-memory

t0 navi·knifet1 pick·knifet2 pick·knifet3 navi·knifet4 pick·knifet5 navi·knifet6 pick·knifet7 pick·knife

노트가 없으니 매 턴 같은 장면을 처음 보는 상태다. 조작을 5회 시도했고 (t=1,2 / t=6,7은 재접근 없이 연속), self-append는 3회 시도 사이에 매번 재접근을 넣었다.

t=0 navigate(knife) 성공
① VLM이 본 것
t=0 관측
계획 근거 → To achieve the goal of putting the knife, plate, and wine bottle on the countertop, I need to locate and collect each object. I will start by navigating to the knife.
노트 없음 (no-memory arm)
t=1 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=1 관측
계획 근거 → The knife is directly within reach on the dining table. I will execute pick_and_place to move the knife to the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 1.47 · 그리퍼 전이 0회 · 600 스텝 (제로모션이면 경로장 0.00)
노트 없음 (no-memory arm)
t=2 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=2 관측
계획 근거 → The goal is to move the knife, plate, and wine bottle to the countertop. The knife is currently visible on the dining table near the robot arm. I will execute pick_and_place to move the knife to the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 0.38 · 그리퍼 전이 0회 · 600 스텝 (제로모션이면 경로장 0.00)
노트 없음 (no-memory arm)
t=3 navigate(knife) 성공
① VLM이 본 것
t=3 관측
계획 근거 → To fulfill the goal of placing the knife, plate, and wine bottle on the countertop, I need to start with one object. I will navigate to the knife first to ensure the robot is in reach to pick it up.
노트 없음 (no-memory arm)
t=4 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=4 관측
계획 근거 → The knife is visible on the dining table within reach of the gripper. I will pick up the knife and place it on the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 5.95 · 그리퍼 전이 0회 · 600 스텝 (제로모션이면 경로장 0.00)
노트 없음 (no-memory arm)
t=5 navigate(knife) 성공
① VLM이 본 것
t=5 관측
계획 근거 → The goal is to move the knife, plate, and wine bottle to the countertop. A knife is visible on the dining table in room_6. I will navigate to the knife first.
노트 없음 (no-memory arm)
t=6 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=6 관측
계획 근거 → The knife is directly below the gripper on the dining table and within reach. I will pick up the knife and place it on the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 5.77 · 그리퍼 전이 4회 · 600 스텝 (제로모션이면 경로장 0.00)
노트 없음 (no-memory arm)
t=7 pick_and_place(knife, countertop) 실패
① VLM이 본 것
t=7 관측
계획 근거 → The goal is to move the knife, plate, and wine bottle to the countertop. I will start by placing the knife on the countertop.
② VLA가 실제로 한 것 — 600 스텝
왼쪽 bench_exo_L · 오른쪽 wrist | 정책 프롬프트 Pick up the knife and place it in or on the countertop
qpos 경로장 0.35 · 그리퍼 전이 0회 · 600 스텝 (제로모션이면 경로장 0.00)
노트 없음 (no-memory arm)

5실패 사례

F1. knife pick_and_place 0/8 현재 최대 병목

여덟 번의 시도가 전부 실패했다. 팔은 움직인다(경로장 최대 26.28, 그리퍼 전이 26회) — 접근·파지 시도는 하는데 얇고 작은 물체를 집지 못한다. 이건 VLM이 아니라 VLA의 한계이고, N7/N8/N10에서 관측한 소형 물체 실패 계열과 같다. 대상 카테고리를 바꿔(bowl/plate 등) 재측정해야 메모리 축이 분리된다.

F2. 턴 예산이 knife 하나에 소진됐다

조작 1회 = 600스텝이라 8턴으로는 첫 대상도 못 넘어간다. StubPolicy(horizon 5) 라운드에서는 self-append가 t=4에 plate로 넘어갔는데, 이번엔 그럴 턴이 없었다. coverage 0.33은 메모리 차이가 아니라 예산 차이다 — 다음 라운드는 max_subgoals 16~20으로 올려야 한다.

F3. 반복 시도에 대한 전략이 없다

self-append는 실패를 정확히 기록하면서도 “retry”만 반복했다. “n회 실패하면 다음 대상으로” 같은 판단은 프롬프트에 넣지 않았다 — 조작 성공률이 0인 상태에서 그 규칙을 넣으면 규칙이 결과를 만들어버리기 때문이다. F1을 먼저 풀고 나서 다뤄야 할 항목.

F4. navigate 실패는 0건, 조작 실패는 8건

접근(teleport)은 8/8 성공했다. 즉 실패 지점이 정책 층위로 좁혀졌다 — 하네스·그라운딩· 카메라 문제가 아니다.

6다음