Skip to main content

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​

ItemWhat it isWhy you need it
SO-101 follower arm5 revolute joints + gripper, six Feetech STS3215 servos, 3D-printedThe robot that executes demonstrations and, later, your policy
SO-101 leader armSame geometry, lighter servos, no gripper motor loadYou move it by hand; the follower mirrors it. This is how demonstrations are recorded
Two USB camerasOne fixed view of the workspace, one mounted on the wristThe policy sees what you saw when you demonstrated
A Linux computer with an NVIDIA GPUUbuntu 24.04 in our setupSerial 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.

Windows users

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:

  1. Install LeRobot in a virtual environment and verify the GPU is visible.
  2. Find the ports your arms are on — lerobot-find-port.
  3. Calibrate both arms so that "joint at 0°" means the same thing on the leader and the follower — lerobot-calibrate.
  4. Teleoperate: move the leader, watch the follower copy it — lerobot-teleoperate.
  5. Record a dataset of demonstrations with cameras — lerobot-record.
  6. Train a policy on that dataset — lerobot-train.
  7. Evaluate it on the arm, and read the results honestly — lerobot-record --policy.path=….
  8. 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​

ChapterStatus
Introductionyou are here
Hardware overview and assembly checkscoming soon
Software installationcoming soon
Finding ports and calibrating the armscoming soon
Teleoperationcoming soon
Recording your first datasetcoming soon
Training ACTcoming soon
Evaluating a policy on the real armcoming soon
Simulation with LIBEROcoming soon
Troubleshootingcoming soon

Conventions​

  • Commands are shown in bash blocks 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/ttyACM0 or my_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.

Versions move fast

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.