JN

LeRobot SoArm Build

Notes from assembling and wiring the LeRobot SoArm with STS3215 servos.

#Robotics#ROS2#DIY

Building the LeRobot SoArm

I set out to build an accessible, desk-friendly manipulator for quick prototyping, and LeRobot's SoArm design checked the right boxes: compact footprint, easily sourced parts, and a software stack that works with ROS 2 or the LeRobot Python API. This post summarizes the hardware I picked, how I wired the STS3215 servos, and the initial motion tests.

Fully assembled LeRobot SoArm on the workbench
The completed SoArm with cable routing along the spine.
Close-up of the SoArm gripper with rubber pads
Rubber pads on the gripper fingers increased friction for light objects.

Electronics and Wiring

The STS3215 bus runs daisy-chained with short JST-SM leads tucked inside the spine. I flashed unique IDs before installing each joint to avoid confusion later. The Teensy handles the UART bus and publishes joint states over USB; the mini-PC runs ROS 2 nodes and low-rate planning.

# STS3215 IDs after flashing
servo_map = {
    "base": 1,
    "shoulder": 2,
    "elbow": 3,
    "wrist_pitch": 4,
    "wrist_roll": 5,
    "gripper": 6,
}
STS3215 servo wired and labeled before installation
Each STS3215 labeled by joint and flashed with the final baud rate.