LeRobot Arms (SO-100/SO-101)

Open-source low-cost research robot arms developed collaboratively by HuggingFace and TheRobotStudio

LeRobot Arms (SO-100/SO-101)

Home > Hardware > Arms > LeRobot Arms


Overview

LeRobot SO-100/SO-101 is an open-source robot arm jointly developed by HuggingFace and TheRobotStudio. With parts costing approximately $130 and a 3D printing-based design, it provides an accessible robotics research platform for everyone.

ItemDetails
DevelopmentHuggingFace + TheRobotStudio
LicenseApache 2.0
TypeLow-cost 3D printed robot arm
DoF6 (Base, Shoulder, Elbow, Wrist Flex, Wrist Roll, Gripper)
Parts Cost~$130 (single arm) / ~$230 (Leader-Follower pair)
Release DateSO-100: 2024, SO-101: May 2025

Key Significance

Democratization of Robotics Research

The most important contribution of LeRobot SO-100/SO-101 is dramatically lowering the barrier to entry for robotics research.

  1. Ultra-low-cost Hardware: While existing research robot arms cost thousands to tens of thousands of dollars, this can be completed for $130
  2. Fully Open Source: CAD files, BOM, firmware, and learning framework all publicly available
  3. 3D Printing Based: Manufacturable with standard FDM printers without industrial equipment
  4. Community Ecosystem: Dataset/model sharing through HuggingFace Hub

This enables university research labs, startups, and individual researchers to participate in VLA (Vision-Language-Action) research. Especially with SmolVLA integration, end-to-end robotics learning is possible even on consumer-grade GPUs.


Detailed Comparison: SO-100 vs SO-101

ItemSO-100SO-101
Release2024May 2025
StatusDeprecatedCurrently recommended version
WiringWire breakage issues at Joint 3Improved wiring prevents breakage
AssemblyGear removal requiredNo gear removal, simplified assembly
Leader Arm MotorsSame gear ratio usedOptimized gear ratios per joint
Range of MotionLimited due to wiringLimitations resolved with wiring improvements
RL SupportLimitedLeader can follow Follower (for RL intervention)
Code Compatibility-Compatible with SO-100 code

Key Improvements in SO-101

  • Wiring Stability: Complete resolution of cable breakage issues at Joint 3
  • Ease of Assembly: Can assemble directly without gear removal
  • Leader Arm Optimization: Differentiated gear ratios per joint for self-weight support and manipulation ease
  • Reinforcement Learning Support: Leader arm can follow Follower arm in real-time for human intervention

Hardware Specifications

Source and Verification Date: Specifications below are based on Feetech Official Specifications and LeRobot SO-101 Documentation (verified May 2025). Check official documentation for latest information.

STS3215 Servo Motor Specifications

Item7.4V Version12V Version
Stall Torque16.5 kg.cm (6V) / 19.5 kg.cm (7.4V)30 kg.cm
Rated Torque5 kg.cm-
Encoder12-bit magnetic encoder (0-4096)12-bit magnetic encoder
Rotation Range360-degree continuous rotation, multi-turn support (±7 turns)Same
CommunicationTTL Serial Bus (bidirectional)TTL Serial Bus
GearboxMetal gearsMetal gears
FeaturesDaisy chain connection, overcurrent protection, temperature/voltage/current feedbackSame

Leader Arm Motor Configuration (SO-101)

JointMotor IDGear RatioPurpose
Base (Shoulder Pan)11/191Base rotation
Shoulder Lift21/345Shoulder lift
Elbow Flex31/191Elbow bend
Wrist Flex41/147Wrist bend
Wrist Roll51/147Wrist rotation
Gripper61/147Gripper open/close

Follower Arm Motor Configuration

All 6 motors use STS3215 with 1/345 gear ratio (uniform high-torque configuration)


Bill of Materials (BOM)

Pricing Information: Prices below are based on SO-ARM100 GitHub BOM and Seeed Studio (verified May 2025). May vary by exchange rate and supply conditions.

Leader + Follower Pair (Dual Arm Configuration)

PartQuantityUS PriceEU PriceNotes
STS3215 Servo (7.4V, various gear ratios)12$166.68€146.46 Leader + 6 Follower
Motor Control Board2$21.20€22.81 per arm
USB-C Cable (2 pack)1$7.00€7.00
Power Supply (5V)2$20.00€31.4Standard Edition
Table Clamp (4pc)1$9.00€9.7
Screwdriver Set1$6.00€9.00Star driver needed
Total-~$230~€2263D printing cost separate

Single Follower Arm

PartQuantityUS Price
STS3215 Servo (7.4V, 1/345)6$83.34
Motor Control Board1$10.60
USB-C Cable1$3.50
Power Supply1$10.00
Miscellaneous (clamps, driver)1$15.00
Total-~$122

Where to Buy

  • US: PartaBot (includes assembled products)
  • Global: Seeed Studio ($220 motor kit, 3D printed parts +$35)
  • Other: WowRobo, RobotShop

Assembly and Build

3D Printing Requirements

ItemRecommended Specs
MaterialPLA+ (basic), PETG or Nylon (high-temp environments)
Nozzle0.4mm (0.2mm layer) or 0.6mm (0.4mm layer)
Infill15% or more (35% or more for load-bearing areas)
SupportFull, except for slopes over 45 degrees
Bed SizeMinimum 205×250mm (Prusa) or 220×220mm (Ender)

Recommended Printers: Prusa MINI+, Creality Ender 3, Bambu Lab series

Outsourcing Cost Reference (EU):

  • Follower arm only: ~€50
  • Leader + Follower pair: ~€105

Assembly Process

  1. Motor Pre-setup: Set unique ID and baudrate for each motor
  2. Leader Arm Assembly: Sequential assembly of joints 1-6, motor horn attachment
  3. Follower Arm Assembly: Same process, motor installation order important
  4. Wiring Connection: Connect motors in daisy chain method
  5. Calibration: Set center point and range of motion for each joint
  6. Camera Mounting (optional): Camera mount on Follower arm

Power Supply Notes

EditionLeader ArmFollower Arm
Standard5V5V
Pro5V12V

Warning: Mixing up Leader and Follower voltages risks servo motor damage

Calibration

Calibration is essential for transfer learning of neural networks. For policies learned on one robot to work on another, they must return the same values at the same physical positions.

# Follower arm calibration
lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower

# Leader arm calibration
lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader

LeRobot Ecosystem

LeRobot Framework

LeRobot is a PyTorch-based robotics learning framework developed by HuggingFace.

# Install from PyPI (includes Feetech SDK)
pip install "lerobot[feetech]"

# CLI commands (default settings)
lerobot teleoperate --robot.type=so101
lerobot record --robot.type=so101 --repo-id=your-username/your-dataset
lerobot train --policy.type=act --dataset.repo_id=your-username/your-dataset

# Explicit port/camera specification (when multiple devices or defaults don't work)
lerobot teleoperate --robot.type=so101 --robot.port=/dev/ttyACM0
lerobot teleoperate --robot.type=so101 \
    --robot.port=/dev/ttyACM0 \
    --robot.cameras="{'cam': {'type': 'opencv', 'index': 0}}"

Note: --robot.port can be verified with lerobot-find-port command. Specify index with --robot.cameras if there are multiple cameras.

Installation Method 2: Source Build (for development/customization)

# Clone and install from source
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[feetech]"

# Run scripts directly
python lerobot/scripts/control_robot.py teleoperate \
    --robot.type=so101 \
    --robot.cameras="{'cam': {'type': 'opencv', 'index': 0}}"

python lerobot/scripts/control_robot.py record \
    --robot.type=so101 \
    --repo-id=your-username/your-dataset

python lerobot/scripts/train.py \
    --policy.type=act \
    --dataset.repo_id=your-username/your-dataset

HuggingFace Hub Integration

  • Dataset Sharing: 487+ community datasets public with lerobot tag
  • Model Sharing: Upload/download trained policy models
  • 10M+ Frames: Diverse environment data used for SmolVLA pretraining

Supported Policy Architectures

  • ACT (Action Chunking with Transformers): Basic Imitation Learning
  • Diffusion Policy: Diffusion model-based policy
  • SmolVLA: Vision-Language-Action model
  • TDMPC: Model-based RL

VLA Research Applications

SmolVLA Integration

SmolVLA is a lightweight Vision-Language-Action model with 450M parameters, providing optimized integration with SO-100/SO-101.

ItemDetails
Parameters450M
Training Data10M frames (487 community datasets)
Hardware RequirementsConsumer-grade GPU, MacBook support
Inference Speed30% improvement with async inference, 2x throughput

Performance on SO-100/SO-101

SmolVLA’s community dataset pretraining improved success rate from 51.7% to 78.3% on SO-100 physical robot benchmarks.

Source: SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics (arXiv:2506.01844, June 2025). The figures report 51.7% success rate with task-specific training only, 78.3% with community dataset pretraining added.

# SmolVLA fine-tuning example
from lerobot.common.policies.smolvla import SmolVLAPolicy

policy = SmolVLAPolicy.from_pretrained("lerobot/smolvla_base")
# Fine-tune with custom dataset

Research Use Cases

  1. Imitation Learning: Demo data collection via Leader-Follower teleoperation
  2. Reinforcement Learning: Human-in-the-loop RL with Leader following Follower functionality
  3. Sim2Real: Transfer from Isaac Sim/Lab simulation learning to real robot
  4. Multimodal Learning: End-to-end learning of camera + language commands + actions

Dual Arm Mobile Robot Configuration

ComponentQuantityPurpose
SO-101 Arms2Bimanual manipulation
LeKiwi Base1Mobile platform
Anker 300Wh Battery1Power
Wrist RGB Cameras2Visual feedback
Head Depth Camera (2-DoF neck)1Environment perception
Total Cost-~$660

Troubleshooting

Common Issues

ProblemSolution
Motor not recognizedCheck power/USB cables, set Waveshare board to ‘B’ channel jumper
Calibration failedMove each joint slowly through full range of motion
Insufficient torqueUpgrade Follower to 12V power supply (Pro edition)

USB serial device access permission issues are best resolved by adding to the dialout group:

# Add user to dialout group (recommended, permanent, safest)
sudo usermod -aG dialout $USER
# Log out and log back in for changes to take effect

Using udev Rules (Alternative)

For more fine-grained control over specific devices, you can use udev rules:

# 1. Check USB adapter Vendor/Product ID
lsusb

# Or check with actual device path (replace ttyUSB0, ttyACM0 with your device)
udevadm info -a -n /dev/ttyUSB0 | grep -E "idVendor|idProduct"
# Or
udevadm info -a -n /dev/ttyACM0 | grep -E "idVendor|idProduct"

# 2. Create udev rule (dialout group ownership, 0660 permissions)
# CH340 adapter example (1a86:7523) - replace with your adapter ID
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", GROUP="dialout", MODE="0660"' | \
  sudo tee /etc/udev/rules.d/99-lerobot-serial.rules

# 3. Apply rules
sudo udevadm control --reload-rules
sudo udevadm trigger

Note:

  • MODE="0666" or chmod 666 makes devices writable by all users and is not recommended for security reasons.
  • udev rules with GROUP="dialout" require user to be in dialout group for access. Run the usermod -aG dialout command above first.

Common USB-Serial Adapter IDs:

  • CH340/CH341: 1a86:7523
  • CP210x: 10c4:ea60
  • FTDI: 0403:6001

Finding USB Ports

lerobot-find-port
# Follow prompts to disconnect/connect cables to identify ports

References

Official Documentation

SmolVLA

Where to Buy

Community


See Also