Skip to content

feat: validate mobile dual-SO101 sim-to-real stack - #49

Closed
Alpenj wants to merge 40 commits into
pro/mujoco-shoe-mission-01from
pro/mujoco-shoe-followup-01
Closed

Alpenj wants to merge 40 commits into
pro/mujoco-shoe-mission-01from
pro/mujoco-shoe-followup-01

Conversation

@Alpenj

@Alpenj Alpenj commented Sep 3, 2026 •

Copy link
Copy Markdown
Owner

변경

  • 실측 박스·양팔 SO-101·TurtleBot3에서 오른팔 뚜껑 open/hold와 왼팔 파지 경로 검증
  • 위치 근접 대신 bilateral contact, 접촉 법선 반대성, friction-only lift로 파지 fail-closed
  • 현행 장비 역할을 2ARM_ROBOT/config/hardware_roles.json으로 고정
  • 전면 Astra S, top-view HP-ASC-H201, 좌우 wrist RGB와 stable alias 분리
  • 저장소 전체 JDcobot/Astra Pro 문서를 현행/legacy로 분류하고 legacy 실행 경로 기본 차단
  • MuJoCo episode에 전면 RGB/depth, workspace RGB/depth, 좌우 wrist RGB 동기 저장
  • 공개 ±3° 시험에 timing, velocity/load/current, STS3215 profile register read 추가
  • motion 시 좌우 calibration·exact token·operator-present·distinct device·시작 health 강제
  • 동작 종료 후 torque 해제와 Torque_Enable=0 read-back을 기록하고 불일치 시 실패
  • raw log에 witnessed/write attempted/motion completed/time/calibration SHA-256 provenance 기록
  • raw smoke trace HTML에 provenance와 torque/status/moving/temperature/voltage 종료 상태 표시
  • exact approval과 Git-ignored 경로를 강제하는 USB 전후 snapshot 도구 추가
  • 기존 ±3° evidence를 user_witnessed=false로 정정하고 SHA-256 동기화
  • 양측 접촉 법선 내적 <= -0.5를 요구해 윗면+옆면 직교 접촉을 차단
  • 접촉 수치의 CPU별 경계 차이는 안전 실패로 유지하고 법선 판정은 결정적 단위시험으로 분리
  • LeRobot STS3215 필수 control-table 레지스터를 serial connect 전에 검증
  • fake bus에서 dual_so101_smoke 실제 main() 전체 경로와 완전한 raw record 검증
  • 좌우 calibration이 같은 해석 경로면 serial connect 전에 거부
  • read-only ROS 2 snapshot도 VISIBLE_ROS2_SNAPSHOT_READONLY·Git-ignored 새 경로 없이는 graph 접속 전 거부
  • 무동작 SO-101 health도 VISIBLE_DUAL_SO101_READONLY·--operator-present 없이는 serial connect 전 거부
  • Astra poll/viewer도 VISIBLE_ASTRA_READONLY_STREAM·--operator-present 없이는 stream open 전 거부
  • udev alias 설치도 VISIBLE_INSTALL_DAPIER_UDEV_RULES 없이는 local rule·sudo 접근 전 거부
  • SO-101 motion은 exact token이 있어도 interactive TTY가 아니면 bus 생성 전 거부
  • 오래된 파지 실패 설명을 CPU별 접촉 경계와 opposing-contact 부재 근거로 정정

검증

  • 최신 head: 53c0547
  • mobile_dual_so101: 170/170 PASS
  • shoe_sorting_data: 104/104 PASS, optional ML 환경 5 skip
  • legacy 표기 미분류 문서: 0건
  • 최신 Actions 33748876050: PASS
  • Actions 33743066799는 CPU별 MuJoCo 접촉 경계 차이를 발견한 예상 밖 실패였고, 원인 분리 후 재현성 수정
  • 이후 runs 33743394099, 33743762756, 33744380523, 33745038287, 33745666974, 33746130128, 33746668097, 33747127041, 33748076549, 33748512312, 33748876050: PASS

현행 장비 역할

  • left/right arm: 동일한 SO-101, controller serial + per-arm calibration으로 구분
  • hub downstream 1/2: left/right wrist RGB
  • hub downstream 3/4: left/right SO-101
  • workspace RGB-D: HP-ASC-H201 3438:0173, tower top view
  • front SLAM RGB-D: Astra S 2bc5:0402, TurtleBot3 front bracket
  • Pi4: 경량 I/O·health·watchdog 우선
  • laptop: perception·IL·LLM 우선; Visual SLAM은 실측 비교 후 배치
  • LiDAR: 현재 active path 제외

Fail-closed / 미완료

  • 사용자가 화면으로 확인한 실물 구동은 아직 없음
  • 과거 ±3° trace는 사용자 입회 commissioning 근거가 아님
  • fixed/moving 접촉은 CPU에 따라 1/1 또는 1/0 경계에 있지만 opposing contact가 없어 box-shoe full sequence는 실패
  • step target 불연속으로 acceleration/jerk gate 실패
  • 실제 4-camera FPS/drop/USB 대역폭과 Pi4 부하 미검증
  • CameraInfo/depth unit/extrinsic, STS3215 profile, joint sign/zero는 현장 계측 필요
  • 소스 control-table 검증은 실제 컨트롤러 firmware 응답을 증명하지 않음
  • 전체 실물 sequence는 승인하지 않음

내일 공개 시험

사용자가 현장에 있고 전원·외관·E-stop·화면을 확인한 뒤에만:
USB baseline → alias 확인 → camera 동시 화면/FPS → calibration 없는 raw health → 좌우 calibration 대조 → VISIBLE_DUAL_SO101_3DEG + --operator-present → ±3° 왕복 → torque-off read-back/사후 health → USB after → HTML trace/SIM 비교.

현재 전원 OFF이며 serial/camera/motor 접근은 없었습니다. hardware_execution=false.

Require bilateral finger contact and friction-only lift evidence, preserve three-camera simulation contracts, and record the current hardware role aliases plus unresolved Astra S color-driver findings.

Verified: 152/152 mobile_dual_so101 tests pass with hardware_execution=false; install_hardware_aliases.sh passes bash -n; git diff --check passes.
Run official ColorReaderPoll or non-UVC SimpleViewer with the packaged OpenNI2 2.3.0.86 libraries instead of the Ubuntu 2.2 runtime. Record the loader pitfall and pending hardware validation.

Verified: launcher bash syntax passes; check mode resolves all runtime files; disconnected mode exits with code 3.
Align the Astra S with the TurtleBot3 front camera bracket, replay the measured 20 Hz shoulder-pan smoke continuously in MuJoCo, and record the non-passing dynamics gate. Verified with 157 MuJoCo tests.
@Alpenj Alpenj changed the title fix: require bilateral contact for box-shoe grasp feat: validate mobile dual-SO101 sim-to-real stack Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant