Feb 6, 2026
RoboticsLeRobotSO-100PlaybookChecklist

SO-100 + LeRobot: my pre-run playbook

A short, strict checklist: ports, IDs, calibration, recording, replay, and baseline validation before touching GR00T/π0.

Full story and thesis numbers: I Built an SO-100 and Tried to Make It Smart.

1) References (so I do not guess)

Temporary image from the open-source repo (I will replace it later)

2) Pre-flight (every session)

  • 12V power and cables: no loose connectors;
  • motors respond;
  • calibration is up to date;
  • camera stream is stable.

If any of these is red, I do not record data.

3) Ports and motor setup

lerobot-find-port
 
lerobot-setup-motors \
  --robot.type=so100_follower \
  --robot.port=/dev/tty.usbmodem585A0076841
 
lerobot-setup-motors \
  --teleop.type=so100_leader \
  --teleop.port=/dev/tty.usbmodem575E0031751

4) Calibration

lerobot-calibrate \
  --robot.type=so100_follower \
  --robot.port=/dev/tty.usbmodem58760431551 \
  --robot.id=my_follower
 
lerobot-calibrate \
  --teleop.type=so100_leader \
  --teleop.port=/dev/tty.usbmodem58760431551 \
  --teleop.id=my_leader

5) Record demonstrations

python -m lerobot.record \
  --robot.type=so100_follower \
  --robot.port=/dev/tty.usbmodem585A0076841 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30}}" \
  --teleop.type=so100_leader \
  --teleop.port=/dev/tty.usbmodem58760431551 \
  --teleop.id=my_leader \
  --display_data=true \
  --dataset.repo_id=${HF_USER}/so100_pickplace_v1 \
  --dataset.num_episodes=50 \
  --dataset.single_task="Pick the block and place it into the bin"

6) Replay (cheap quality test)

python -m lerobot.replay \
  --robot.type=so100_follower \
  --robot.port=/dev/tty.usbmodem585A0076841 \
  --robot.id=my_follower \
  --dataset.repo_id=${HF_USER}/so100_pickplace_v1 \
  --dataset.episode=0

7) Before I touch GR00T/π0

I only proceed if:

  • replay is stable;
  • thermals are under control;
  • the dataset does not drift between sessions.

Playbook file (placeholder)

Local /public file; I will replace it with a real PDF

TXT~0.5 KB