← 전체 설계안 v0 (공리·교란·메트릭·리스크·로드맵)
⚠️ 전체 설계안 v0의 Horizon 축(날짜)·§5 Life 프로토콜·사례 C1~C10은 이 v3로 대체됨. 설계 공리·메트릭·리스크·로드맵은 유효.
v2 → v3에서 바뀐 것
- "정리해줘"를 전량 수행에서 마무리로 바꿨다. 카운터에 접시 4개가 지금 보이면 찾는 데 기억이 필요 없다 — base task 20개(7분)를 쓰고 재는 건 "어디 놓나" 하나뿐이다. 이미 대부분 처리됐고 1~2개만 남은 상태로 내면 길이는 1/3, 메모리는 필수, 채점은 이진이 된다.
- 단, 남은 일감이 현재 시야에 보이면 안 된다. 성립 장치는 셋뿐 — 닫힌 곳 다른 방 겉보기 구분 불가. 마지막이 가장 세다.
- 자산 실측으로 가능/불가가 확정됐다. ① 상태 변화(dirty→clean 등)가 없다 → "청소"는 전부 재배치. ② 세탁기·건조기·쓰레기통·커피머신은 관절이 없어 관련 task가 성립하지 않는다. ③ 7개 타입은 관절판/강체판이 공존해 씬마다 열릴 수도 안 열릴 수도 있다.
- 새 메트릭
redundant_action_count — 이미 처리된 물체를 다시 PICK하면 카운트. "기억 없이 처음부터 다 훑는" 전략을 정확히 잡는다.
- 자연스러운 상한이 8분으로 내려왔다. 마무리형은 짧아서, 10분을 채우려면 개입을 늘려야 하는데 그건 신호 없는 시간이다. L3를 6~8분으로 재조정했다.
1 에피소드 구조와 task 정의
모든 에피소드는 3구간
[심기] 로봇은 관찰만 한다. 사건이 로봇 시야 안에서 일어난다.
→ 로봇의 base task 소모 0. 시간만 15~110 s.
[개입] 로봇이 관계없는 작업 N개를 실제로 수행한다.
→ 시간 경과 + 간섭(비슷한 관절 여닫기, 방 이동). N이 난이도 노브.
[질의] 심기 구간을 기억해야만 풀리는 지시 1건.
"보기만"이 예산을 바꾼다. 심기를 로봇이 직접 하면 열쇠 사례가 base task 6개(~90초)를 먹어 2분 예산이 안 남는다. 관찰이면 15초에 0 task. 그래서 2분 task가 성립하고, Behavior 규칙 시연도 4회까지 들어간다.
★ 마무리형 원칙 — v3의 핵심
| 전량 정리 (기각) | 마무리 (채택) |
| 세팅 | 카운터에 접시 4개가 보임 | 3개는 이미 처리됨, 1개만 남았고 안 보임 |
| 길이 | base task ~20 / 7분 | base task 6~8 / 2~3분 |
| 메모리 필요성 | "어디 놓나"만 (Behavior 하나) | "뭐가 남았나"까지 (Event+Entity+Behavior) |
| 채점 | "어디까지가 정리냐" 애매 | 남은 N개 정확 배치 + 기존 것 미접촉 → 이진 |
필수 조건: 남은 일감이
현재 시야에 보이면 즉시 메모리 불필요가 된다. 반드시 아래 셋 중 하나로 가려야 한다.
(a) 닫힌 곳 컵 1개가 Drawer_02 안에 들어가 닫혀 있음
(b) 다른 방 책 1개가 침실로 옮겨져 있음
(c) 겉보기 구분 불가 ★ 접시 4개가 다 찬장에 들어갔는데 1개만 잘못된 칸.
지금은 두 찬장 다 닫혀 있어 겉으로는 동일
마무리형 3변형 — ①과 ③이 반사실 짝
| 세팅 | 정답 | 대표 실패 | 길이 |
| ① 누락형 | 컵 3개 중 2개 처리, 1개는 Drawer_02 안 | 서랍에서 꺼내 싱크대로 | "다 됐네" 하고 종료 과소 실행 | 3.0분 / 11 task |
| ② 오배치형 | 접시 4개 정리했는데 1개가 Cabinet_05(그릇 칸)에 | 잘못된 칸에서 빼서 제자리로 | 못 찾음 / 멀쩡한 걸 옮김 | 5.4분 / 15 task |
| ③ 완료형 | 실제로 다 됐음 | DONE(success, "이미 다 정리됐습니다") | 뭔가 또 함 과잉 실행 | 1.9분 / 6 task |
①과 ③의 현재 관측은 완전히 동일하다. ①은 컵이 3개였고 2개 처리, ③은 컵이 원래 2개였고 2개 처리 — 둘 다 지금 보이는 건 "싱크대에 컵 2개, 카운터 비어 있음". 심기 구간을 봤어야만 갈린다. 짝 채점(둘 다 맞아야 1점)으로 과소·과잉 실행을 한 번에 잡는다.
Task family
| # | Task family | 질의 예 | 메모리 | 길이 |
| T1 | Fetch 가져와 | "내 열쇠 어디 있지? 가져와" | Entity | 2~5분 |
| T2 | Locate QA | "내 시계 못 봤어?" | Entity | ~0 |
| T3 | Finish 마무리 ① | "설거지 마무리해줘" | Event | 2~3분 |
| T4 | Correct 바로잡기 ② | "잘못 넣은 거 있으면 바꿔놔" | Event+Behavior | 4~6분 |
| T5 | Resume 재개 | "아까 하던 거 마무리해" (토스터) | Event | 4~5분 |
| T6 | Repair 되돌리기 | "아까 떨어뜨린 거 주워놔" | Event | 3~4분 |
| T7 | Extend 하나 더 | "한 명 더 와, 자리 하나 더" | Behavior | 5~7분 |
길이 3등급 (v3 재조정)
| 등급 | 목표 | base task | 구성 | 기본 채점 |
| L1 | ~2분 | 6–9 | 심기 + 개입 2–3 + 질의 | SR (이진) |
| L2 | 3~5.5분 | 11–18 | 심기(또는 시연×4) + 개입 4–6 + 질의 | SR + GC |
| L3 | 6~8분 | 20–26 | 심기 + 개입 6 + 마무리 지점 3곳(방마다) | GC 주, SR 참고 |
10분 상한을 8분으로 내렸다. 마무리형은 본질적으로 짧다. 10분을 채우려면 개입을 늘려야 하는데 그건 신호 없는 시간이다. 대신 L3는 마무리 지점을 여러 방에 흩어놓아 채운다 — 부엌 서랍 속 컵 1개 + 침실 잘못 놓인 책 1개 + 거실 소파 밑 리모컨 1개, 셋 다 안 보인다.
L3에서 SR을 헤드라인으로 쓰면 안 된다. base task 1개 = 300 step ÷ 15.15 Hz ≈ 20초, 종단간 성공률은 곱으로 붙는다. base task당 90%여도 22단계에서 9.8%, π0.5-FT 실측 36%면 0에 수렴. → L3 기본은 GC + teacher-forced 복구. 심기가 관찰이라 심기 구간은 절대 실패하지 않으므로 복구는 질의 구간에만 필요하다.
2 사례 3종
전부 val_640(4방 76 m²: Bedroom / Bathroom / Kitchen+Living / Laundry) 기준, 각각 독립된 단일 에피소드.
EEntity — "내 열쇠 어디 있지?"L2 · 4.7분 · base task 18
0:00 [개입1] 컵 2개를 싱크대로 4 task
0:55 ★[심기] 시야 안에서 사용자가 식탁의 파란 키링을
Kitchen/Drawer_04에 넣고 닫는다 0 task · 15 s
1:10 [개입2] 쓰레기 버리기 (GarbageCan에 넣기) 5 task
2:20 [개입3] 리모컨을 거실 소파로 (방 이동) 4 task ← 공간 간섭
3:30 [질의] "내 열쇠 어디 있지? 가져와" 5 task
| 오답 미끼 | 빨간 키링이 Bedroom/SideTable_01 위에 훤히 보이게 처음부터 |
| 정답 | MOVE_TO(Drawer_04) → OPEN → PICK(keychain_0031) → CLOSE → MOVE_TO(user) |
| 채점 | 파란 키링 지참 도달 = success. 빨간 = 0점(부분점 없음) |
| L1 축소형 | 개입 2 task만 → 2.0분 / base task 7 |
핵심 — 정답이 지금 어떤 카메라에도 안 보이고(서랍 닫힘) 보이는 곳엔 오답이 있다. 현재 관측만 쓰는 정책은 100% 빨간 키링을 집는다.
VEvent — "설거지 마무리해줘" (누락형 ①)L2 · 3.0분 · base task 11
0:00 ★[심기] 사용자가 식탁의 컵 3개를 치운다:
· cup_A, cup_B → Sink_01
· cup_C → Kitchen/Drawer_02 에 넣고 닫음 ← 여기가 함정
0 task · 25 s
0:25 [개입] 냉장고에서 우유 꺼내 카운터에 (Fridge 여닫음) 5 task
1:32 [질의] "설거지 마무리해줘" 6 task
3:03 끝
현재 관측 : 싱크대에 컵 2개. 식탁·카운터 비어 있음. 서랍은 닫혀 있음.
| 정답 | MOVE_TO(Drawer_02) → OPEN → PICK(cup_C) → CLOSE → MOVE_TO(Sink_01) → PLACE(cup_C, Sink_01, in) |
| 실패 | ① "다 됐네" 하고 DONE → 과소 실행 (가장 흔할 것) ② 싱크대의 cup_A/B를 다시 만짐 → redundant_action_count +1 ③ 엉뚱한 서랍을 순차 탐색 → 예산 초과 |
반사실 짝 (완료형 ③) | 컵이 원래 2개였고 2개 다 싱크대로 → 현재 관측 완전 동일. 정답은 DONE(success, "이미 다 됐습니다"). 여기서 서랍을 뒤지면 과잉 실행 |
Event의 정의 — "물체가 어디 있나"가 아니라 무엇이 이미 처리됐고 무엇이 안 됐나다. 그건 현재 관측에 정보가 0이다. 짝 채점이 "항상 뒤진다"와 "항상 끝낸다" 두 편법을 동시에 0점으로 만든다.
BBehavior — "잘못 넣은 거 바꿔놔" (오배치형 ②)L2 · 5.4분 · base task 15 · support 4
0:00 ★[시연 ×4] 사용자가 일관되게 정리한다:
Plate_A~D → Cabinet_02 (상단)
Bowl_A~D → Cabinet_05 (하단)
…마지막에 Plate_D 만 급히 Cabinet_05 에 넣고 닫는다
0 task · 110 s
1:50 [개입1] 우유를 냉장고에 4 task
2:47 [개입2] 쓰레기 버리기 4 task
3:44 [질의] "아까 정리한 거 중에 잘못 넣은 거 있으면 바꿔놔" 7 task
5:25 끝
현재 관측 : Cabinet_02·05 둘 다 닫혀 있음. 겉보기 완전 동일.
| 정답 | OPEN(Cabinet_05) → PICK(Plate_D) → CLOSE → OPEN(Cabinet_02) → PLACE(Plate_D, Cabinet_02, in) → CLOSE |
| 두 겹의 기억 | Behavior: 접시는 상단이라는 규칙(시연 4회에서 유도) Event: Plate_D가 하단에 들어갔다는 사실(지금 안 보임) → 둘 중 하나만 있으면 못 푼다 |
| 일반화 변형 | 잘못 넣은 것을 시연에 없던 카테고리(Cup)로 바꾸면, "컵은 어디가 제자리인가"를 유추해야 한다 → ASK 만점 / 유사규칙 부분점 |
| 채점 | PCR(제자리로 갔나) + redundant_action_count(멀쩡한 걸 옮겼나) |
"겉보기 구분 불가"가 가장 센 장치인 이유 — 두 찬장이 다 닫혀 있으니 현재 관측의 정보량이 0이고, 텍스트 로그도 "put plate in cabinet"으로 적었으면 어느 칸인지 복원 못 한다. 그리고 Behavior와 Event를 동시에 요구하는데 길이는 5.4분뿐이다.
Entity / Event / Behavior 판별 기준 하나
접시A를 상단에 넣는 걸 봄 → "접시A 어디?" = Entity (심었던 그 물체)
접시A를 상단에 넣는 걸 봄 → "정리 마무리해줘" = Event (무엇이 됐고 안 됐나)
접시A~D 넣는 걸 봄 → "접시E 정리해줘" = Behavior (심기에 없던 새 대상)
난이도 노브 4종 (Horizon 축 대체)
| 노브 | 쉬움 | 어려움 | 효과 |
| 개입 base task 수 | 2–3 (~40 s) | 8–10 (~3분) | 망각 압력. 초 단위 조절 + 완전 재현 |
| 남은 일감 은폐 방식 | (b) 다른 방 | (c) 겉보기 구분 불가 | 현재 관측 정보량을 0으로 |
| 관절 간섭 | 다른 관절 안 건드림 | 비슷한 서랍 3개 여닫음 | "뭔가를 열었다" 이벤트 증식 |
| 동종 인스턴스 수 | 1 | 5 (색·무늬만 다름) | 텍스트 로그 직접 무력화 |
3 자산 실측 — 무엇이 되고 무엇이 안 되나
제약 ① 상태 변화가 없다 → "청소"는 전부 재배치
MolmoSpaces-Bench 8개 base task에 dirty→clean / empty→filled / raw→cooked / whole→sliced가 전부 없다. THOR 원본에 있던 속성이 MuJoCo 포팅본으로 안 넘어온 것으로 보인다(Phase 0 확인 항목).
| 하고 싶은 것 | 가능? | 대체 |
| 걸레질 · 닦기 · 청소기 밀기 | ✗ | 판정 방법이 없음. 포기 |
| 설거지(그릇을 씻어 깨끗하게) | ✗ | "싱크대/식기세척기에 넣기"로 환원 |
| 요리 · 자르기 · 물 따르기 | ✗ | 포기 (액체·입자 없음) |
| 널브러진 물체를 제자리로 | ✓ | 이게 우리의 "청소"다 |
| 쓰레기를 GarbageCan에 넣기 | ✓ | 단, 뚜껑은 못 연다(아래) |
| 열린 관절 닫기 | ✓ | 채점이 joint 상태로 환원돼 가장 깨끗 |
오히려 다행이다. 재배치는 "어디에 놓아야 하는가"를 묻고, 그게 Behavior memory를 자연스럽게 요구한다. 닦기는 아무 기억도 요구하지 않는다. objaverse에 broom 17 · mop 2 · vacuum cleaner 21 · trash can 65가 있지만 전부 소품이고 기능이 없다 — 배경 소품이나 "옮길 물체"로만 쓴다.
제약 ② 관절 유무 — 예상 밖인 것들
| 자산 | 영향 |
| ✗ WashingMachine | 2에셋, 관절 없음 | 세탁물을 세탁기에 못 넣는다 |
| ✗ ClothesDryer | 2에셋, 관절 없음 | 동일 → 세탁 task 사실상 불가. LaundryHamper(4, hinge=4)까지만 |
| ✗ GarbageCan | 30에셋, 관절 없음 | 뚜껑 여는 동작 불가. PLACE(in)만 |
| ✗ CoffeeMachine | 30에셋, 관절 없음 | TOGGLE 미확인 → 커피 루틴은 위험한 베팅 |
| ✓ Fridge | 30에셋 / 114 joint (2~7개) | 냉장·냉동 칸 구분 가능 → 관절 단위 기억 |
| ✓ Dresser | 22에셋 / 152 joint (3~12개) | "12칸 중 몇 번째" 기하 정밀도 |
| ✓ Cabinet 470 · Drawer 240 | fixture | 오배치형 ②의 주력 무대 |
| ✓ Dishwasher 23 · Oven 34 · Microwave 30 · Toaster 30 | — | 전부 열림 |
| ✓ Toilet 2 · ShowerDoor 17 · LaundryHamper 4 · Box 30(4-flap) · Book 30 · Laptop 30 · Safe 2 | — | 가능 |
제약 ③ 7개 타입은 "열리는 판"과 "안 열리는 판"이 공존
SideTable 관절판 35에셋(60 joint) | 강체판 32에셋
Desk 관절판 14 (57 joint) | 강체판 15 ← 절반만 서랍 있음
CoffeeTable 관절판 3 (18 joint) | 강체판 23 ← 대부분 안 열림
ShelvingUnit 관절판 4 ( 8 joint) | 강체판 8
Faucet 관절판 24 (41 joint) | 강체판 13
Box 관절판 30 (120 joint) | 강체판 4
ShowerHead 관절판 1 | 강체판 1
(위험) task 생성 시 씬 매니페스트에서 반드시 확인해야 한다. 안 하면 "서랍 열어"가 물리적으로 불가능한 씬이 섞인다 — v1의 "cabinet 45개 지목 불가로 kept 4/60"과 같은 종류의 사고다.
(기회) 오히려 좋은 메모리 소스다. "이 사이드테이블은 서랍이 있는 놈"을 심기 구간에서 봐야만 아는 task를 만들 수 있다.
방별 재고 — 어디서 task를 만들 수 있나
| 방 | THOR 종/에셋 | 주력 물체 | 목적지 | 판정 |
| 부엌 | 34 / 560 | Plate·Bowl·Cup·Pot·Pan 각30 Apple·Bread·Egg·Lettuce·Potato·Tomato 각30 | Cabinet 470 · Drawer 240 Fridge(114j) · Dishwasher 23 | 최적. 여기서 다 만든다 |
| 거실 | 28 / 297 | Pillow 30 · CellPhone 8 · Newspaper 5 TennisRacket 5 · BaseballBat 4 | CoffeeTable · TVStand ShelvingUnit · GarbageCan | 좋음. RemoteControl 3개뿐 → objaverse remote control 60 보강 |
| 침실 | 12 / 173 | AlarmClock 30 · Pillow 30 Cloth 12 · Pencil 7 · Pen 4 | Dresser(152j) · SideTable Desk(관절판 14만) | 중간 |
| 욕실 | 13 / 96 | SoapBottle 30 · SprayBottle 8 | TowelHolder 1 · ToiletPaperHanger 30 | 약함. Towel 3 · HandTowel 1 |
| 세탁실 | 6 / 21 | Cloth 12 · Towel 3 | LaundryHamper 4 | 불가 수준 (세탁기 관절 없음) |
Objaverse가 메우는 것 (household 그룹만):
수납·용기 1,354(container 407 · crate 328 · box 195 · basket 129) · 식기 1,869(bowl 751 · mug 314) · 전자/개인 1,208(smartphone 238 · key 84 · remote control 60) · 장난감 1,026(toy car 682 ← 바닥 어질러놓기 최적) · 의류 788(sneaker 208 · jacket 156) · 문구 500(book 278) · 음식 1,008.
자산에서 실제로 도출되는 마무리형 task
| 지시 | 남은 것 (은폐 방식) | 유형 | 길이 |
| K1 | "설거지 마무리해줘" | 컵 1개가 Drawer_02 안 a 닫힌 곳 | Event | 3.0분 |
| K2 | "잘못 넣은 거 바꿔놔" | Plate_D가 Cabinet_05에 c 구분 불가 | Event+Behavior | 5.4분 |
| K3 | "장 본 거 마저 넣어줘" | Egg 1개가 Fridge/joint_02(냉동)에 잘못 c | Event+Behavior | 4분 |
| L1 | "거실 마무리해줘" | RemoteControl이 침실로 옮겨져 있음 b 다른 방 | Entity+Event | 4분 |
| B1 | "책상 정리 마무리해줘" | Pen 1개가 Desk/joint_03 안 a (관절판 Desk 씬만) | Event | 3분 |
| T1 | "수건 마저 갈아줘" | 사용 Towel이 LaundryHamper에 안 들어감 b | Event | 4분 |
| X1 | "집 정리 마무리해줘" | 3곳: 부엌 서랍 컵 + 침실 잘못 놓인 책 + 거실 소파 밑 리모컨 abc | 전부 | 6.3분 (L3) |
4 Instruction 형식
── Layer 0 · 사용자 발화 (벤치가 배포) ─────────────────────────
"설거지 마무리해줘" / "잘못 넣은 거 있으면 바꿔놔"
── Layer 1 · VLM 플래너 I/O ────────────────────────────────────
[SYSTEM] household robot. home=val_640. elapsed=1:32. budget=6 subgoal
[MEMORY] ← 검색된 레코드 top-k (메서드마다 다른 유일한 부분)
[OBS] ← exo RGB + wrist RGB
[TRACE] ← 이번 에피소드에서 이미 실행한 subgoal
[INSTR] ← Layer 0 발화 그대로
[OUT] ← 다음 subgoal 정확히 1개
── Layer 2 · VLA I/O (MolmoAct2 / π0.5) ────────────────────────
instruction : subgoal → 자연어 1줄 "open the second drawer"
images : exo + wrist (π0.5-DROID: 2캠, right_wrist=zeros/mask=False)
state : (8,) = [q1..q7, gripper] → actions (N,8) absolute joint pos
MOVE_TO (<room> | <receptacle_id>) → Navigate-to
FIND (<object_query>) → 탐색 (기억이 없을 때)
OPEN / CLOSE (<receptacle_id>[/joint_<jj>]) → Open / Close / Open-door
PICK (<instance_id>) → Pick
PLACE (<instance_id>, <receptacle_id>, on|in|next_to|under)
TOGGLE (<device_id>, on|off) → ★ 신규 success fn 필요
─────────────── 비물리 ───────────────
MEM_QUERY / MEM_WRITE / ASK / DONE(success|impossible, reason)
인스턴스 주소 규약 (생성 전에 못박는다)
Kitchen/Cabinet_07 ← <room>/<Type>_<kk>, kk = 월드 (x,y) 정렬 인덱스
Bedroom/Dresser_01/joint_05 ← 관절은 로컬 높이 내림차순 (위 서랍이 00)
inst:obja:mug_0163:0 ← 이동 가능 물체. 옮겨져도 ID 불변
※ 씬 매니페스트에 동결 + 관절 유무 플래그 포함(제약 ③). 지시문 등장 금지
subgoal은 rule-base로 뽑는다
GT 플랜을 오라클 플래너가 만들므로 subgoal → 자연어 렌더링이 규칙 기반으로 자동이다. 다만 템플릿을 코드에 고정하고 버전을 박아야 한다.
π0.5는 프롬프트 문구에 극도로 민감하다. MolmoSpaces 논문 Fig.13 기준, DROID에 자주 나오는 문구를 쓰면 π0가 π0.5와 1% 이내로 붙고 아니면 14% 격차. 템플릿을 고정하지 않으면 "메모리 방법 차이"로 보고한 숫자가 실은 문구 차이가 된다. Molmo 데이터셋의 instruction 형식 확인 필요
5 평가 방식 · 학습 · 데이터
두 트랙 — 영상 제공 / 직접 실행
| 입력 | 출력 | 채점 | 비용 |
| A · 영상 제공 | 미리 렌더한 에피소드 영상 + 질의 | subgoal 시퀀스(텍스트) | GT 플랜과 대조 | 싸다 · 메인 리더보드 |
| B · 직접 실행 | 온라인 관측 | 물리 행동 | 물리 상태 판정 | 비쌈 |
같은 에피소드로 둘 다 돌리는 게 핵심이다. "영상 보고는 맞히는데 실행은 못 한다"를 정량화할 수 있고, 그 갭 자체가 논문 포인트가 된다.
영상을 어떻게 넣나 — 샘플링이 비용을 12배 가른다
균일 2Hz composite : 5분 = 600 프레임 → 콜당 8장 = 75콜
× $0.019 = $1.43/ep → 1,200ep = $1,700/메서드 ✗
subgoal 경계 샘플링 : base task 19개 × 2 + 심기 조밀 10 = 48 프레임 = 6콜
× $0.019 = $0.11/ep → 1,200ep = $137/메서드 ✓
단, 벤치가 샘플링 시점을 정해주면 메서드의 keyframe 선택 능력을 못 잰다. v1에서 M2가 sparse nomination으로 손해 본 게 정확히 그 문제였다. → 두 모드: (i) 고정 샘플링(공정 비교용) (ii) 자유 샘플링(프레임 예산만 주고 메서드가 알아서).
Letsur 게이트웨이 비디오 입력 미지원 → 요청 필요
학습 — GPU를 어디에 쓸 것인가
| 컴포넌트 | 학습? | 근거 |
| 저수준 조작 VLA | 재사용 | MolmoAct2가 MolmoSpace 1st VLA. lab에 π0.5-FT(36.0%) 있음. subgoal 수행만 되면 된다 |
| VLM 플래너 | 불필요(먼저) | 프롬프트 베이스라인이 먼저 나와야 학습 필요성을 증명할 수 있다 |
| 메모리 writer | ★ 여기 | v1에서 승패를 가른 유일한 변수가 커버리지 — 텍스트로그가 keyframe을 0.564 vs 0.462로 이겼다. 단일 에피소드로 오면서 로그가 더 강해졌으므로, 이기려면 인스턴스·관절까지 구별해 적는 법을 배워야 한다 |
| 메모리 retriever | ★ | 질의 시점에 심기 구간의 어느 프레임/이벤트를 꺼내오나. GT가 있으니 지도학습 가능 |
| 인스턴스 re-ID | 아마 불필요 | DINOv2/SigLIP crop 임베딩 매칭. 먼저 측정하고 부족하면 대조학습 |
데이터 생성 — 대본이 곧 GT
[1] 씬 + 인스턴스 주소 동결 (관절 유무 플래그 포함) → scene_manifest.json
[2] 대본 샘플링 심기 : (actor, verb, args, t, 가시성) ← kinematic 보간으로 실행
개입 : 무관한 작업 N개 ← 난이도 노브
질의 : 발화 + 정답 subgoal 시퀀스 + 은폐 방식(a/b/c)
[3] 에피소드 롤아웃 개입 구간만 오라클 플래너가 물리 실행
심기는 물체 pose 보간 (★조작 정책 불요)
[4] GT 추출 대본이 곧 GT. entity/event/규칙이 [2]에서 이미 확정
[5] 반사실 짝 심기 이벤트 1개 제거/치환 (①↔③ 짝이 여기서 자동 생성)
[6] 게이트 현재관측만으로 풀리나 / 상식만으로 풀리나 / blind가 chance인가
/ 지시문 정답 누출 / ★남은 일감이 현재 시야에 보이나
규모: pilot 3채·50ep(전량 검수) / test 30채·1,200ep(600 반사실 쌍) / train 200채. 3축 held-out(미관측 집·물체·규칙), house_id disjoint 강제. 저장은 mp4(PNG면 파일 수 폭증 — v1 실측 875ep = 48만 파일).
새 메트릭
| 메트릭 | 정의 | 무엇을 잡나 |
redundant_action_count | 이미 처리된 물체를 다시 PICK한 횟수 | "기억 없이 처음부터 다 훑는" 전략 |
| Paired Accuracy (①↔③) | 누락형·완료형 짝 둘 다 맞아야 1점 | "항상 뒤진다" / "항상 끝낸다" 편법 |
| PCR | 규칙 준수율 (SR과 독립) | 아무 데나 놓고 성공 처리되는 것 |
| First-Goal Correctness | 첫 MOVE_TO에 타깃이 있었나 | 메모리를 제어와 무관하게 측정 |
6 네비게이션
역할 분담: 메모리 벤치에서 항법은 제어가 아니라 결정 문제다. ego 명령 시퀀스를 그대로 주면 "어디로 갈지"가 이미 정해져 메모리가 답할 게 없다. → 목적지 결정 = 메모리(평가 대상), 이동 = 모듈(교체 가능).
| 구현 | 학습 | 측정 |
| N0 | 위치 리스트에서 고르기 — 리셉터클마다 미리 계산한 standing pose. 비용은 navmesh geodesic으로 계산 | 없음 | 목적지 선택만. 제어 분산 0 |
| N1 | navmesh pose-goal + 홀로노믹 컨트롤러 | 없음 | + 실제 경로 길이, 충돌 |
| N2 | 학습 ego 정책 (7-vocab). FIND는 frontier 탐색 | 필요 | + 지각 접지, 미관측 집 일반화 |
| N-alt | 도면 주고 좌표 찍기 (Molmo pointing) | 없음 | 별도 ablation 권장 — 아래 |
도면+좌표 찍기는 기본값으로 권하지 않는다. top-down 도면이 Molmo 학습 분포 밖일 가능성이 높고, 더 중요하게는 "메모리"가 아니라 "도면 읽기"를 재게 된다. 위치 리스트에서 고르기(N0)는 순수하게 "어디 있는지 아는가"만 묻고 First-Goal Correctness가 바로 나온다. 도면 방식은 별도 축으로 빼고 성능 테스트를 먼저 한다.
N2 전문가 데이터 (train split, 전자동)
GT 메모리 → 오라클 목적지 → navmesh 최단경로 → body-frame 속도 시계열
→ 이벤트 기반 양자화 → 7-vocab + frame 구간 ← scene_navi 로직 이식
→ (RGB window, 명령) 쌍으로 IL
권고: 학습 데이터는 축정렬(라벨 품질), 평가는 자유 모션
기성 자산: MolmoSpaces에 RING / DualVLN 항법 베이스라인 존재
항법 중 메모리 쓰기 — 방을 지나며 본 것을 기록하는 게 사실상 mapping이다. 권고: Molmo2-ER pointing으로 2D 접지 → depth로 3D 리프트 → 인스턴스 레코드.
7 한 장 요약 · 남은 것
구조 단일 에피소드 = [심기(관찰, 0 task)] → [개입 N] → [질의]
★ "정리"류는 전량 수행이 아니라 부분 완료 상태의 마무리로만 낸다
★ 남은 일감은 반드시 (a)닫힌곳 (b)다른방 (c)겉보기 구분불가 중 하나로 은폐
길이 L1 ~2분(6–9) / L2 3~5.5분(11–18) / L3 6~8분(20–26)
※ 20 s/base task = 300 step ÷ 15.15 Hz. 베이스 이동속도 미실측
채점 L1 SR / L2 SR+GC / L3 GC + teacher-forced(질의 구간만)
+ redundant_action_count · Paired(①↔③) · PCR · First-Goal Correctness
사례 Entity 열쇠 4.7분 · Event 누락형 3.0분 · Behavior 오배치 5.4분
자산 청소=재배치만 / 세탁기·쓰레기통·커피머신 관절 없음 / 7타입 관절판·강체판 공존
부엌(34종 560에셋)이 최적. 세탁실은 사실상 불가
평가 A 영상 제공(메인) + B 직접 실행. subgoal 경계 샘플링으로 API 12배 절감
학습 저수준 VLA 재사용. GPU는 memory writer/retriever에
네비 N0 위치 리스트 선택(기본) / N1 navmesh / N2 학습 ego. 도면 방식은 ablation
Phase 0 확인 — 며칠이면 답이 나온다
- 상태 속성 존재 여부 — dirty / filled / toggled가 MuJoCo 포팅본에 정말 없는가. 있으면 task 공간이 크게 늘어난다
TOGGLE 지원 여부 (토스터·조명). 없으면 Resume(T5) 계열이 약해진다
- 심기 렌더 방식 — kinematic 보간의 "보이지 않는 손"이 VLM 이해를 깨는가. human asset 가용성 확인. 파일럿에서 A/B
- embodiment — π0.5-FT는 Franka DROID 규약, 모바일 조작은 RB-Y1. 체크포인트 없으면 Franka + N0로 후퇴(사례 3종은 그대로 성립)
- 베이스 이동 속도 실측 —
Navigate-to 1회면 길이 등급이 확정된다
- Molmo instruction 형식 —
molmoact2/lerobot 서브모듈 또는 HF 데이터셋 카드에서 확인
다음 라운드: Behavior 강화. 오배치형(②)이 Behavior+Event를 동시에 요구해 v2보다 나아졌지만, 규칙 자체는 여전히 단순 매핑이다. 보강 방향 — 조건부 규칙(손님 있으면 X) · 규칙 간 우선순위 · 음성 규칙(Dishwasher를 안 쓰는 것)의 명시적 채점.