Introduction
This guide walks you from an unboxed SO-101 robot arm to a policy you trained yourself running on it. It is written for students who are new to robot learning: every step is a command you can copy, and every chapter ends with something you can see move.
It exists because the official documentation is excellent but assumes you already know where you are going. Here, the order is the order you will actually do things in, and the mistakes that cost us hours are written down so they cost you minutes.
What is LeRobot?
LeRobot is Hugging Face's open-source library for real-world robot learning. It gives you, in one Python package:
- Robot and teleoperation drivers for low-cost arms such as the SO-100/SO-101 and Koch, plus mobile robots like LeKiwi.
- A dataset format (
LeRobotDataset) that stores camera video, joint states, and actions together, with versioning on the Hugging Face Hub. - A recording pipeline that turns your teleoperation into demonstrations.
- Policies: from-scratch imitation learning (ACT, Diffusion Policy, VQ-BeT) and pretrained vision-language-action models (SmolVLA, π0, π0.5, GR00T) that you fine-tune on your own data.
- Evaluation on the real robot, and in simulation through benchmarks such as LIBERO and Meta-World.
The whole library is driven from a handful of command-line tools — lerobot-calibrate, lerobot-teleoperate, lerobot-record, lerobot-train, lerobot-eval — and this guide is organized around them.
The hardware you will use
| Item | What it is | Why you need it |
|---|---|---|
| SO-101 follower arm | 5 revolute joints + gripper, six Feetech STS3215 servos, 3D-printed | The robot that executes demonstrations and, later, your policy |
| SO-101 leader arm | Same geometry, lighter servos, no gripper motor load | You move it by hand; the follower mirrors it. This is how demonstrations are recorded |
| Two USB cameras | One fixed view of the workspace, one mounted on the wrist | The policy sees what you saw when you demonstrated |
| A Linux computer with an NVIDIA GPU | Ubuntu 24.04 in our setup | Serial ports and cameras work natively; training needs the GPU |
Each arm connects over one USB-to-serial adapter. The two arms are kinematically identical, which is what makes leader–follower teleoperation a simple joint-to-joint mapping.
LeRobot can run on Windows and inside WSL2, but USB cameras and serial ports are far less painful on native Linux. If you have a spare machine, put Ubuntu on it. If you don't, a dual-boot is worth the hour it takes.
The workflow
Everything in this guide follows the same pipeline. Each step is one chapter and one command:
- Install LeRobot in a virtual environment and verify the GPU is visible.
- Find the ports your arms are on —
lerobot-find-port. - Calibrate both arms so that "joint at 0°" means the same thing on the leader and the follower —
lerobot-calibrate. - Teleoperate: move the leader, watch the follower copy it —
lerobot-teleoperate. - Record a dataset of demonstrations with cameras —
lerobot-record. - Train a policy on that dataset —
lerobot-train. - Evaluate it on the arm, and read the results honestly —
lerobot-record --policy.path=…. - Simulate: run the same policies in LIBERO and understand what a simulator can and cannot tell you.
By the end of step 7 you will have a robot that picks up an object because you showed it how, not because anyone programmed the motion.
How this guide is organized
| Chapter | Status |
|---|---|
| Introduction | you are here |
| Hardware overview and assembly checks | coming soon |
| Software installation | coming soon |
| Finding ports and calibrating the arms | coming soon |
| Teleoperation | coming soon |
| Recording your first dataset | coming soon |
| Training ACT | coming soon |
| Evaluating a policy on the real arm | coming soon |
| Simulation with LIBERO | coming soon |
| Troubleshooting | coming soon |
Conventions
-
Commands are shown in
bashblocks and assume Ubuntu 24.04 with LeRobot installed in a virtual environment at~/lerobot-venv. Activate it before anything else:source ~/lerobot-venv/bin/activate -
Placeholders look like
/dev/ttyACM0ormy_follower_arm. Replace them with your own values — the chapter that introduces each one tells you how to find it. -
Anything in a note is context. Anything in a warning cost us real time.
LeRobot changes its command names and dataset format between releases. This guide targets LeRobot 0.6.x (dataset format v3.0). If a command here is not found, check pip show lerobot before assuming the guide is wrong.
Before you start
- Both arms assembled, servos wired in a daisy chain, ID stickers visible
- Two USB-to-serial adapters and two cameras
- A computer running Ubuntu 24.04 with an NVIDIA driver installed
- A free Hugging Face account for hosting datasets and models
- About two hours for the first session
Next up: the hardware overview.