← Index
2026-10-04 · EmbodiedSWE

FurnitureBench cabinet — Franka 한 대 scripted solve

'불가능' 판정 번복 · 문 5/6 → top 단독 3/3 → 전체 1/6

TL;DR

1/6
전체 성공 (cb23)
5/6
문 2개 (cb14+cb16)
3/3
top 단독
~3/6
몸통 세우기

1배경/목적

FurnitureBench 8종 중 cabinet은 처음에 "불가능"으로 분류됐다(261003 리포트: 스냅핏). 근거가 된 테스트는 누운 몸통에 문을 미는 것이었고 중력 때문에 결과가 왜곡됐다. 재확인 결과 top plate의 문 영역이 뚫려 있었고, 몸통을 세워 문을 떨어뜨리면 기둥을 따라 123mm → 41/61mm까지 내려갔다.

cabinet real 데모는 Google Drive 할당량 때문에 받지 못해 FurnitureBench scripted policy(cabinet_door.py, cabinet_top.py)를 참고했다. 순서: 누운 몸통에 문을 수평 슬라이드 → 몸통 세움 → top 나사 체결.

2작업 내용

대상: experiments/furniture_bench_franka/solution/solve.py (동결본 solution_cb1 … solution_cb24).

문짝 _cabinet_door

몸통 세우기 _cabinet_stand

top _cabinet_top · 문 닫기 _cabinet_close_door

Scene (robobench/suites/assembly/scenes/furniture_bench.py)

DATUM_FIX: 왼쪽 문 기준 x -0.02275 -> -0.0275 (원래 값은 몸통에 2.86mm 파고듦, 허용오차 5mm 대비 여유 0.25mm) hinge_parts / hinge_damping=20: PhysX에 관절 마찰이 없어 문의 끌림을 각감쇠로 대체

3결과

단계결과
문 2개 (cb16 + cb14)5/6 (오차 0.5–1.7mm)
top 단독 (cb6/cb7/cb11, seed 0/2/4)3/3 (오차 0.1–0.3mm, cos 0.99+)
몸통 세우기~3/6 (공중 3cm 뜸, 넘어짐, IK 끊김)
전체 (cb23)1/6 (seed 2): 문 1.5/1.0mm, top 0.2mm, cos 0.999
실패한 시도: 문 5mm 띄움 → 진입 시 걸림 / 0.5mm 띄움 → 팔 처짐 걸림 / 몸통 3mm 밀림에서 중단 → 진입 즉시 중단 / 손잡이 잡아 닫기 → IK 자세 없음 / 감쇠 없이 밀어 닫기 → 문이 91° → 161°로 더 열림.

4Takeaway

cabinet도 단일 팔 scripted solve로 풀림(첫 성공). 261003의 "강체 시뮬레이션에서 불가" 결론은 누운 자세 테스트의 중력 왜곡에 의한 오판.

해석

세 하위 단계 중 문(5/6)과 top(3/3)은 안정적이고, 몸통 세우기(~3/6)가 전체 1/6의 지배적 병목이다.

5Next Steps