Skip to main content

Packages

soarm_sdk — stable​

Python SDK for the Feetech STS/SCS serial bus servo protocol — port handling, packet framing, batch calibration planning (ID reassignment, limits, torque, baud rate), and the tick↔radian conversion layer everything else builds on. Ships a 7-tab Viser browser dashboard with live 3-D FK for homing, PID tuning, and monitoring. Its guided calibration workflow now also tracks each servo's own EEPROM angle limits (refusing to connect if they drift from what a calibration recorded), and can recentre a joint whose travel straddles the encoder's 4095/0 wrap directly from the dashboard.

imu_sdk — stable​

Transport + firmware for M5StickC/ESP32 IMU boards (MPU6050/6500/6886/9250, 6- or 9-axis). Firmware streams JSON over serial at ~100 Hz with on-device gyro bias calibration; orientation itself is computed host-side by m5teleop's error-state Kalman filter.

m5teleop — active​

The integration point: a 50 Hz real-time loop wiring IMU → ESKF → cascade orientation controller → IK (pink/pinocchio) → the arm over lerobot's SO100Follower, with a parallel Viser sim and full Rerun logging. --record optionally streams frames into soarm_lerobot.

soarm_lerobot — active​

Dataset recording and imitation-learning training. TeleopRecorder detects episode boundaries and writes LeRobotDataset episodes; dataset.py loads them into normalized, chunked torch datasets for ACT and Diffusion Policy. Operates purely on recorded data — decoupled from how it was captured.

camera_calibration — stable​

Standalone camera intrinsics and ArUco tooling: chessboard calibration, live detection monitor, marker generation, webcam parameter estimation — a unified CLI, Rerun for all visualization (no cv2.imshow, works headless). Not wired into the teleop pipeline; built for future eye-in-hand and workspace-calibration work.

soarm_mjlab — in progress​

RL training of SO-ARM100 in MuJoCo via mjlab, targeting deployment through soarm_sdk.RobotInterface — the same interface real hardware uses, so a trained policy won't care whether it's driving sim or the physical arm. The "Reach" task end to end, a CI-safe test pyramid (32 tests), and two-job CI/CD are done (Phases 0–3). Tooling for a real training run is ready (Phase 4): a step-by-step rented-GPU guide with Weights & Biases tracking, and scripts/push_to_hub.py to publish a promoted checkpoint to the Hugging Face Hub — the run itself and sim2real deployment (Phase 5) are still ahead. See the roadmap.

soarm_tamp — on hardware​

Long-horizon task-and-motion planning on long_tamp/HPP, driving the physical SO-101 through soarm_sdk's own ServoRobot. Planning (inside an HPP container) and execution (on the host) deliberately never share a process — a waypoint manifest on disk is the entire contract between them. First task, pick-and-place, has run end to end on hardware (TCP within 7.0 mm / 2.2° of the commanded pose); see TAMP planning & execution, step by step for the full pipeline and the safety/execution work that came out of running it for real.

SO-ARM100 — vendored, read-only​

The hardware vendor's repo (TheRobotStudio), tracked as-is: URDF/MJCF robot descriptions consumed by soarm_sdk's dashboard and m5teleop's IK solver, plus CAD, 3D-print notes, and BOM/assembly docs for the physical arm.