store_ok 칸은 fixture당 1~2개 → 한 칸에 여러 개 넣기(multi-insert)가 전제. 칸 크기는 충분(서랍 칸에 사과 4·계란 9). ② "목적지가 아닌 fixture의 닫힌 칸"은 거의 없다 → 숨김 상자 주입.final.npz 를 편집하므로, 그때 수납처 위 증거 물체를 숨김 상자로 치운다. 하네스 변경 0.axes.n_rules). 아래 §2의 칸 용량·multi-insert 문제는 닫힌 수납처를 안 쓰므로 소멸. §4 제안 중 숨김 상자 주입만 유효.docs/ROUTINE_TASK_PLAN.md v1 로 전면 개정. 영상은 아직 없다(생성기 미실행, 첫 영상 = 파일럿 쌍둥이 1짝).일회용 스크립트(tmp/routine_examples_v2.py)가 게이트 통과 train 카드에서 뽑았다. 지시문의 {src}는 카드의 실제 상면, 목적지는 클래스 낱말만 준다(어느 인스턴스인지 말하지 않음). 물체 이름은 inventory/asset_bench.json의 carry 등급 에셋이다.
| 유닛 | 규칙 | 지시 (로봇이 실제로 수행) | 물체 · 출발 |
|---|---|---|---|
| U1 | R1 | "Put the apple on the counter in the fridge." | Apple_9 · Kitchen |
| U2 | R2 | "Put the cell phone on the tv stand in the dresser drawer." | Cellphone_1 · LivingRoom |
| U3 | R1 | "Put the potato on the sofa in the fridge." | Potato_6 · LivingRoom |
| U4 | R2 | "Put the remote on the dining table in the dresser drawer." | Remote_3 · Kitchen |
| U5 | R1 | "Put the egg on the dining table in the fridge." | Egg_29 · LivingRoom |
| U6 | R2 | "Put the cell phone on the bed in the dresser drawer." | Cellphone_4 · Bedroom |
| 유닛 | 규칙 | 지시 | 물체 · 출발 |
|---|---|---|---|
| U1 | R1 | "Put the apple on the dining table in the dresser drawer." | Apple_9 · LivingRoom |
| U2 | R2 | "Put the cell phone on the counter in the laundry basket." | Cellphone_1 · Kitchen |
| U3 | R1 | "Put the potato on the sofa in the dresser drawer." | Potato_6 · LivingRoom |
| U4 | R2 | "Put the remote on the bed in the laundry basket." | Remote_3 · Bedroom |
| U5 | R1 | "Put the egg on the tv stand in the dresser drawer." | Egg_29 · LivingRoom |
| U6 | R2 | "Put the cell phone on the dining table in the laundry basket." | Cellphone_4 · Kitchen |
| 유닛 | 규칙 | 지시 | 물체 · 출발 |
|---|---|---|---|
| U1 | R1 | "Put the apple on the dining table in the fridge." | Apple_9 · LivingRoom |
| U2 | R2 | "Put the cloth on the dining table in the dresser drawer." | Cloth_11 · Kitchen |
| U3 | R1 | "Put the potato on the bed in the fridge." | Potato_6 · Bedroom |
| U4 | R2 | "Put the cloth on the dining table in the dresser drawer." | Cloth_3 · Bedroom |
| U5 | R1 | "Put the egg on the side table in the fridge." | Egg_29 · Kitchen |
| U6 | R2 | "Put the cloth on the sofa in the dresser drawer." | Cloth_12 · LivingRoom |
| 유닛 | 규칙 | 지시 | 물체 · 출발 |
|---|---|---|---|
| U1 | R1 | "Put the apple on the bed in the fridge." | Apple_9 · Bedroom |
| U2 | R2 | "Put the cloth on the tv stand in the dresser drawer." | Cloth_11 · LivingRoom |
| U3 | R1 | "Put the potato on the dining table in the fridge." | Potato_6 · Kitchen |
| U4 | R2 | "Put the cloth on the counter in the dresser drawer." | Cloth_3 · Kitchen |
| U5 | R1 | "Put the egg on the sofa in the fridge." | Egg_29 · LivingRoom |
| U6 | R2 | "Put the cloth on the bed in the dresser drawer." | Cloth_12 · Bedroom |
| fixture 클래스 | store_ok 칸 0 | 1 | 2 | 3 | 4+ | 비고 |
|---|---|---|---|---|---|---|
| Dresser | 318 | 243 | 313 | 11 | 92 | 서랍장 977개 (790채) |
| Fridge | 174 | 166 | 201 | 110 | 104 | |
| SideTable | 50 | 145 | — | — | — | 서랍 1칸 |
| Desk | 20 | 43 | 26 | — | — | |
| ShelvingUnit | 1 | 78 | — | — | — |
계획서는 k=3 증거 + 홀드아웃을 칸 단위로 가정했다. 칸 ≥4인 fixture 두 종류를 가진 집은 12채, ≥3은 26채, 클래스 합산 ≥3도 44채뿐이다. 따라서 한 칸에 여러 개 넣기(multi-insert)가 전제여야 한다.
| fixture 칸 | 폭 × 높이 × 깊이 (중앙, cm) | 사과 (11×11×12) | 계란 (8×8×8) | 컵 (13×13×15) |
|---|---|---|---|---|
| Dresser 서랍 | 37 × 21 × 42 | 4개 · ≥3 가능 72% | 9개 · 89% | 2개 · 46% |
| Fridge | 43 × 21 × 27 | 2개 · 46% | 8개 · 95% | 1개 · 42% |
| Desk 서랍 | 37 × 17 × 36 | 8개 · 100% | 12개 · 100% | 3개 · 81% |
| SideTable 서랍 | 46 × 19 × 22 | 3개 · 69% | 4개 · 69% | 0개 · 11% |
fixture_open.insert_into_slot_gen 반복)는 type2 바구니에서 검증됐지만, fixture 칸에 이미 든 물체와의 충돌은 검증된 적 없다. 파일럿 1순위.집의 concealing fixture는 보통 Dresser와 Fridge뿐이라 둘 다 목적지로 쓰면 숨길 곳이 사라진다(예시 3채 전부 해당). 대안: 뚜껑 있는 Laundry_Hamper_1_1(hinge 0~90°, 닫힌 채 옴, 삽입 IK 82/83 검증) 또는 뚜껑 Box 에셋(31종)을 숨김 상자로 하나 더 주입해 홀드아웃·미끼를 넣어 두고 컨텍스트에서 절대 열지 않는다. 열린 상면 + spot_visibility 예측기는 폴백.
| 조합 | 집 수 | routine 가능? |
|---|---|---|
| Dresser + Fridge + 3번째(SideTable/Desk/Shelf) | 126 | 가능 |
| Dresser + Fridge | 298 | 가능 (합계 424) |
| Dresser + 3번째 (냉장고 없음) | 55 | R1 값 후보 조정 시 |
| Fridge + 3번째 (서랍장 없음) | 59 | R2를 Hamper로만 |
| 닫힌 클래스 1종 | 197 | Hamper 주입으로 2종 확보 가능 |
| 없음 | 55 | 불가 |
Dresser+Fridge만 있는 집에서 두 규칙의 값을 단순히 맞바꾸면 한 클래스가 반드시 냉장고로 간다(첫 버전에서 "soap bottle → fridge"가 나왔다). 아래 구조는 네 조합 전부 그럴듯하고 두 규칙의 목적지가 항상 다르다.
| R1 FOOD | R2 CLOTH / GADGET | |
|---|---|---|
| 기본 편 (seed 짝수) | fridge | dresser drawer |
| 쌍둥이 (seed 홀수) | dresser drawer | laundry basket (주입) |
상식(blind)은 음식을 냉장고에 넣으므로 기본 편은 맞추고 쌍둥이에서 틀린다 → 짝 채점(A6)이 상식 찍기를 걸러낸다. Hamper는 TidyBot의 laundry basket/storage box와 같은 역할이라 논문 서사와도 맞는다. 단, Hamper 뚜껑을 g_store_in 경로로 닫는 것은 미검증(type2는 뚜껑을 열어 못 박고 시작).
| 절 | 현재 | 제안 |
|---|---|---|
| §2-1 (6) | 목적지에 빈 칸이 남아야 함 | 칸 ≥1 + multi-insert (한 칸에 k=3 + 홀드아웃). 칸 크기 게이트로 사전 검사 |
| §3-1 | FOOD·DISH·GADGET·TOILETRY·CLOTH | DISH 제외(용량). TOILETRY는 눕힘 검증 후 |
| §3-2 | 클래스 쌍은 두 값이 양쪽 후보에 있는 쌍 | R1 FOOD Fridge↔Dresser · R2 {CLOTH, GADGET} Dresser↔Hamper(주입) 고정 구조 |
| §4-1 / §4-3 | 홀드아웃은 목적지 아닌 fixture의 닫힌 칸 | 숨김 상자 주입(뚜껑 Hamper/Box, 절대 안 엶) 1순위, 예측기 상면 폴백 |
| §4-1 | 출발 상면 = 도달 가능 열린 상면 | (선택) 식탁·조리대·책상·사이드테이블로 제한 |
| §11-3 | 미확인 목록 | multi-insert 충돌을 1순위로, Hamper 뚜껑 닫힘 2순위 |
수정 제안 확인 → 계획서 반영 → 구현 계획(writing-plans). 파일럿 첫 실험은 서랍 칸 하나에 사과 3개 + 토마토 1개 넣고 닫기(multi-insert 충돌)와 Hamper 뚜껑 닫기 두 가지다. 둘 다 카메라 없이 수 분이면 된다.