6 февр. 2026 г.
RoboticsLeRobotSO-100PlaybookChecklist
SO-100 + LeRobot: мой playbook перед каждым запуском
Короткий и жесткий чеклист: порты, ID, калибровка, запись, replay и минимальная валидация перед тем как трогать GR00T/π0.
Зачем так строго
Самые дорогие ошибки в робототехнике почти всегда процессные: пропущенная калибровка, нестабильные порты, шумные демо. Этот playbook экономит дни.
Полная история, мотивация и цифры из диплома: Я собрал SO-100 и попытался сделать его умным.
1) Источники (чтобы не гадать)
- LeRobot docs: https://huggingface.co/docs/lerobot/index
- SO-100 docs: https://huggingface.co/docs/lerobot/so100
- GR00T в LeRobot (N1.5): https://huggingface.co/docs/lerobot/main/groot
- GR00T N1.6-3B model card: https://huggingface.co/nvidia/GR00T-N1.6-3B
2) Pre-flight (я делаю это каждый раз)
- питание
12Vи кабели: без люфтов в разъемах; - моторы видны и отвечают на команды;
- калибровка актуальна;
- камера дает стабильный фрейм.
Если хотя бы один пункт красный, я не записываю данные.
3) Порты и моторы
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.usbmodem575E00317514) Калибровка
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_leader5) Запись демонстраций
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 (быстрый тест качества)
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=07) Если я трогаю GR00T/π0
Я делаю это только если:
- replay стабилен;
- контур не перегревается;
- датасет не "плывет" от сессии к сессии.
Playbook file (placeholder)
Локальный файл в /public, позже заменю на PDF
TXT • ~0.5 KB