Preparing for the LeRobot Global Hackathon 2025 meant building a complete SO-ARM100 stack—from 3D-printed parts all the way to learning-enabled manipulation demos. This guide distills what worked for me into a reusable playbook. It leans on the internal project notes in the fullstack-manip repository and should help you bring up your own SO-ARM, extend it to other manipulators, and plan a month-long sprint from research to evaluation.


Content Outline


1. SO-ARM101 at a glance

SO-ARM100 (and its refreshed SO-ARM101 variant) is an open-source 6-DOF serial manipulator from The Robot Studio. Each joint is driven by a FEETECH smart servo, and the entire arm can be fabricated with off-the-shelf 3D printing. The platform ships as a leader–follower pair for teleoperation, but you can operate a single follower arm as a standalone manipulator.

Community momentum exploded during the LeRobot Global Hackathon: the arm now anchors an end-to-end learning framework, attracts third-party simulation assets, and keeps receiving hardware upgrades. The goal of this post is to highlight how to:


2. Full-stack architecture

The internal architecture notes (see docs/04-architecture.md) break the system into modular layers so components can be swapped without rewriting everything:

Keeping the stack modular is what makes it possible to start with SO-ARM and later retarget the same software to UR-series or custom manipulators.


3. Hardware stack

The official build guide is on GitHub, but the project requirements document (docs/02-requirements.md) adds practical details you can act on.

3.1 Mechanical fabrication

3.2 Actuation and electronics

Component Notes
FEETECH STS3215 servos Follower arm uses six identical servos (7.4 V/20 Nm or 12 V/30 Nm). Leader arm gears: 3 × 1/147 (C046), 2 × 1/191 (C044), 1 × 1/345 (C001).
Servo bus adapter Waveshare Serial Bus Servo Driver Board with USB-UART bridge.
Debug tools Official FEETECH Windows software, FT_SCServo_Debug_Qt, and the ROS2 driver.
Power 7.4 V–12 V DC supply, sized for peak current (~6 A per arm). Match barrel jack polarity (5.5/2.1 mm or 5.5/2.5 mm).

3.3 Sensing and peripherals

3.4 Compute, networking, and safety

3.5 Calibration and troubleshooting


4. Digital twins and modeling assets

You’ll need consistent meshes and joint definitions across tools.

Pipeline tip: keep a single source-of-truth CAD assembly, regenerate STEP → mesh exports when you tweak hardware, and version all generated assets alongside scripts.


5. ROS2 integration workflow

Bringing the arm into ROS2 is a three-step routine:

  1. Robot description: Publish the URDF/XACRO via robot_state_publisher and verify joint limits in RViz2. Leverage the control-specific configs from ros2_so_arm100.
  2. Motion planning: Use the MoveIt Setup Assistant to define planning groups (arm, wrist, gripper), tweak OMPL planners, and generate launch files. Plan to run move_group locally with RViz2 for interactive validation.
  3. ROS2 Control bridge: Map FEETECH servos to hardware interfaces. The so_arm_100_hardware package implements custom ros2_control hardware handles; you can adapt it if you use different bus adapters.

Add dedicated launch files for simulation-only, teleop, and real-hardware sessions. That lets you flip between modes without editing YAML every time.


6. Simulation pipelines

Simulation is the low-risk sandbox to iron out kinematics, controllers, and scene layouts before turning on the real servos.


7. Control and learning tracks

The project splits control into model-based and learning-based streams (docs/09-model-based-stack.md and docs/10-learning-based-stack.md).

7.1 Model-based stack

7.2 Learning-based stack


8. Experiments, evaluation, and documentation

Capture videos and annotated plots for each milestone; they make hackathon demos and retrospectives far more compelling.