Index
2026-09-30 — Progress

FurnitureBench one_leg 이식

EmbodiedSWE | assembly.furniture_one_leg

TL;DR

3/3
CW seated
46.8mm
seat (orig 46.875)
6/6
reach
unstable
off-nominal

1 배경 / 목적

FurnitureBench(Isaac Gym, 실제 SDF 나사산, ㄷ자 포켓으로 상판 고정)의 one_leg를 scene + robot + grader 구조로 옮겨 코딩 에이전트가 풀 수 있게 한다.

2 작업 내용

신규: scripts/vendor_furniture_bench_assets.py (OBJ → 꼭짓점 병합 → 강체+SDF(512) USD, 밀도×부피 질량) 신규: robobench/suites/assembly/scenes/furniture_one_leg.py (포켓 3개, low 랜덤화 ±1.5cm/±15°, seated()) 신규: robobench/suites/assembly/grader/furniture_one_leg.py (lifted → engaged → threaded) 등록: assembly.furniture_one_leg(.franka.{osc,impedance,diff_ik,pink_ik,joint})

3 결과

테스트결과
v1 일정 토크전부 폭주 — 23g 다리 관성 ~3.5e-6 kg·m², 테스트 설계 오류
v2 나사 방향 오가정입구에 걸림 → 메시 단면 분석: 나사는 -y 끝
v3 dt 1/240, 시계 -3.0/-1.546.8mm, 오차 0.6mm, seated=True
v4 반작용 상쇄 제거, 시계 -1.546.8mm seated=True
v3/v4 회전 0, 반시계발산 / 튕겨 나감
v5 dt 1/480누르기만 61.6mm 안정, 반시계 52.7mm, 시계는 4~6초에 튕겨 나감
Franka 도달 (구멍 4곳, 다리, 상판)6/6 (≤0.7mm, 0.1°)
스모크 / pytest5/5 모드, 15 passed
메시 검산: 나사 -56~-30mm, 구멍 깊이 27mm. 어깨가 상판 면에 닿는 위치 = 원본 조립 좌표 46.875mm.
불안정: 합성 외력(고정 위치 스프링)에서는 조건에 따라 결과가 달랐다. 실제 그리퍼로 확인해야 한다.

4 Takeaway

원본의 SDF 나사 조립이 Isaac Sim 5.1에서도 재현된다. 다만 안정성은 아직 확인되지 않았다. 교훈: 원본 좌표를 의심하기 전에 메시 형상부터 측정했어야 했다.

5 Next Steps

다음

Franka로 실제 다시 잡기(90°씩) 조임 테스트 → 불안정하면 SDF 256, depenetration 속도, 반복 횟수 조정. yaw 정렬 판정 추가 여부 결정. 에셋 HF 배포(메인테이너 권한).