Руководство по настройке SO-101
От деталей до первого сбора данных. Примерное время: ~3–4 часа (не считая времени 3D-печати).
Сборка
~60 мин + время печатиSO-101 — это продукт с полностью открытым исходным кодом. Все детали либо напечатаны на 3D-принтере, либо доступны в виде готового оборудования, указанного в спецификации LeRobot на HuggingFace.
Детали, которые вам нужны
- 6 серводвигателей Feetech STS3215
- Структурные детали, напечатанные на 3D-принтере (файлы STL в репозитории SO-101 на GitHub)
- Кабель-адаптер USB-последовательный порт (чип CH340 или CP2102)
- Источник питания 12 В (минимум 3 А)
- Сервокабели и соединительное оборудование (согласно спецификации)
Контрольный список сборки
- Распечатайте все структурные компоненты (основание, звенья, рабочий орган)
- Установите сервоприводы STS3215 в соответствующие корпуса звеньев.
- Проложите сервокабели через печатные кабельные каналы.
- Сервоприводы последовательно подключаются в правильном порядке (идентификаторы 1–6 от основания к кончику)
- Перед включением питания закрепите базу на устойчивой поверхности.
- Прочтите страница безопасности перед подачей питания
3D-печать деталей
Время печати ~8–16 часовВсе структурные компоненты SO-101 можно распечатать по технологии FDM с использованием стандартных настольных принтеров. Файлы STL организованы в отдельные файлы для каждой руки, что упрощает нарезку.
Рекомендуемые настройки слайсера
Файлы STL — что печатать
Предварительно подготовленные отдельные файлы доступны для кроватей стандартных размеров:
- Станина 220х220 мм (Эндер 3):
- Последователь:
STL/SO101/Follower/Ender_Follower_SO101.stl - Лидер:
STL/SO101/Leader/Ender_Leader_SO101.stl
- Последователь:
- Станина 205х250 мм (Пруса/УП):
- Последователь:
STL/SO101/Follower/Prusa_Follower_SO101.stl - Лидер:
STL/SO101/Leader/Prusa_Leader_SO101.stl
- Последователь:
STL/Gauges/ и проверьте их на кирпиче Lego или сервоприводе STS3215. Правильная установка манометра подтверждает точность калибровки вашего принтера. При необходимости отрегулируйте масштаб, прежде чем переходить к полной печати.
Установка программного обеспечения
~15 мин.SO-101 изначально поддерживается HuggingFace LeRobot. Никакого дополнительного плагина не требуется — просто установите LeRobot.
Установить ЛеРобот
# Using pip
pip install lerobot
# Or with uv (recommended)
uv pip install lerobot
Разрешения последовательного порта Linux
В Linux последовательные порты под /dev/ttyACM* требовать от пользователя присутствия в dialout группа. Запустите это один раз, выйдите из системы и снова войдите:
sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout
Предварительные условия
- Питон 3.10+
- Linux (рекомендуется Ubuntu 22.04) или macOS
- Установлен драйвер USB-to-serial (драйвер CH340 в macOS; обычно предварительно установлен в Linux)
Обнаружение и калибровка портов
~20 мин.Найдите правильный последовательный порт USB для манипулятора, затем запустите сценарий калибровки LeRobot, чтобы установить нулевые положения сервопривода.
Найдите последовательный порт
python lerobot/scripts/find_motors_bus_port.py
Подключите и отсоедините USB-кабель при появлении соответствующего запроса. Скрипт определяет, к какому порту подключен рычаг. Типичные значения:
# Linux: /dev/ttyACM0 (or ttyUSB0 for CH340 adapters)
# macOS: /dev/tty.usbmodem* or /dev/tty.usbserial-*
Запустите калибровку
При появлении соответствующего запроса переместите руку в полный диапазон движений:
python lerobot/scripts/calibrate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Первый тест движения
~15 мин.Запустите сценарий телеуправления в режиме одной руки, чтобы убедиться, что все суставы реагируют правильно, прежде чем подключать ведущую руку.
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Что проверить
- Все 6 суставов реагируют на команды, не пропуская
- В терминале нет предупреждений о остановке сервопривода или перегрузке.
- Захват открывается и закрывается на весь диапазон
- Отсутствие зацепления кабеля в любом положении соединения
Телеоперация
~30 мин.SO-101 работает как автономная рука или как ведомая рука с ведущей рукой для дистанционного управления. Использование второй руки в качестве лидера обеспечивает более качественные демонстрации имитационного обучения.
Автономный режим (клавиатура/программный)
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
С руководителем (например, лидером DK1)
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--teleop.type=so101 \
--teleop.port=/dev/ttyACM1
Сбор данных
НепрерывныйЗаписывайте демонстрации, используя record.py. Данные сохраняются в формате LeRobot и могут быть отправлены непосредственно в HuggingFace Hub для обучения.
Базовая запись
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
С USB-камерой
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--robot.cameras.top.type=opencv \
--robot.cameras.top.index=0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
Запись лучших практик
- Запишите не менее 50 демонстраций каждого задания перед тренировкой.
- Меняйте положение и ориентацию объектов в разных эпизодах.
- Используйте описательные
--dataset.taskимена для последующей фильтрации - Камеры OAK-D или Intel RealSense хорошо подходят для сбора данных с поддержкой глубины.
- Проверьте загрузку набора данных в HuggingFace Hub после каждого сеанса.
Следующие шаги
После сбора данных обучите модель ACT или политики распространения, используя сценарии обучения LeRobot. Читать полностью Путь обучения SO-101 для структурированного перехода от настройки к развертыванию модели.