Index
2026-09-30 — Experiment

FurnitureBench one_leg — Franka 한 대 조립 해법

EmbodiedSWE | assembly.furniture_one_leg.franka.diff_ik

TL;DR

11/11
seeds
46.82mm
seat (46.875)
~15분
wall / episode
540°
6 turns

1 배경 / 목적

이식한 one_leg 태스크가 실제 Franka 조작으로 풀리는지 검증한다. 요청: 실제 조이기 테스트, solve.py, 워커 영상.

2 작업 내용

파일: experiments/furniture_one_leg_franka/solution/solve.py (diff_ik + 남는 자유도 보정 제어기를 set_controller로 교체) 단계: PUSH(상판을 포켓 모서리로) → PICK → STAND(관절 공간, Q_STAND) → INSERT(나사 끝 조준, 기울기 보정, 3회 재시도) → RELEASE(높은 곳에서 손 뒤집기) → SCREW(90° × 6, 다시 잡기) 제출: sbm "bash tmp/one_leg_seed.sh <seed> [record]" --qos=extra --gres=gpu:1 -c 8 --mem 180GB 렌더링: --container=docker.io/nvidia/opengl:1.2-glvnd-runtime-ubuntu22.04 + tmp/gl_libs (libGLU, libOpenGL, libgomp)

3 결과

평가결과
최종 버전 seed 0~1011/11 성공, 46.82mm, 117~122초 sim
공식 verify_solution.pysuccess: true
직전 버전 (다시 잡는 위치 12mm 위)5/6 (seed 5 실패)

디버깅 경과 (발췌)

#증상원인수정
1허공을 쥠diff_ik 이동 속도 (5mm 요청 → 0.46mm/스텝)속도 상한 상향
3다시 잡기 전 멈춤q5 2.9 / q6 3.75 한계앞쪽 위에서 세우기, 높은 곳에서 뒤집기
6조일 때 상판이 끌려감 (영상)상판 고정 없음포켓 모서리 밀기
7seed 2 세우기 48°에서 멈춤q6 한계관절 공간 세우기 (Q_STAND)
9전 seed 회귀기울기 3.6° → 나사 끝 5mm 어긋남기울기만 보정 + 나사 끝 조준
10seed 5 첫 사이클에서 기울어짐막 걸린 나사 + 긴 지렛대다시 잡는 위치 낮춤, 누르기 1mm
—공식 채점 7초 만에 실패워커 이미지에 libgomp.so.1 없음libgomp를 LD_LIBRARY_PATH로 연결
seed0
seed 0 성공 영상 12프레임: 밀기 → 집기 → 세우기 → 꽂기 → 조이기

4 Takeaway

이식한 one_leg는 Franka 한 대로 끝까지 조립 가능하다. 에이전트가 부딪힐 핵심 난관은 Franka 손목 해의 분기(q5/q6 한계), 상판 고정, 나사 끝 기준 조준이다.

5 Next Steps

한계

Q_STAND 하드코딩(med/high 랜덤화에 일반화 안 됨), 에피소드당 약 15분, IKEA 4다리 해법 없음.