Руководство по настройке SO-101

От деталей до первого сбора данных. Примерное время: ~3–4 часа (не считая времени 3D-печати).

1

Сборка

~60 мин + время печати

SO-101 — это продукт с полностью открытым исходным кодом. Все детали либо напечатаны на 3D-принтере, либо доступны в виде готового оборудования, указанного в спецификации LeRobot на HuggingFace.

Детали, которые вам нужны

  • 6 серводвигателей Feetech STS3215
  • Структурные детали, напечатанные на 3D-принтере (файлы STL в репозитории SO-101 на GitHub)
  • Кабель-адаптер USB-последовательный порт (чип CH340 или CP2102)
  • Источник питания 12 В (минимум 3 А)
  • Сервокабели и соединительное оборудование (согласно спецификации)

Контрольный список сборки

  • Распечатайте все структурные компоненты (основание, звенья, рабочий орган)
  • Установите сервоприводы STS3215 в соответствующие корпуса звеньев.
  • Проложите сервокабели через печатные кабельные каналы.
  • Сервоприводы последовательно подключаются в правильном порядке (идентификаторы 1–6 от основания к кончику)
  • Перед включением питания закрепите базу на устойчивой поверхности.
  • Прочтите страница безопасности перед подачей питания
Где взять файлы спецификации и STL: Полная спецификация материалов и деталей для печати хранится в репозитории HuggingFace LeRobot. Найдите «СО-101» на ЛеРобот GitHub.

3D-печать деталей

Время печати ~8–16 часов

Все структурные компоненты SO-101 можно распечатать по технологии FDM с использованием стандартных настольных принтеров. Файлы STL организованы в отдельные файлы для каждой руки, что упрощает нарезку.

Рекомендуемые настройки слайсера

Параметр Ценить
Материал НОАК+
Диаметр сопла 0,4 мм (или 0,6 мм)
Высота слоя 0,2 мм (0,4 мм для сопла 0,6 мм)
Плотность заполнения 15%
Поддерживает Повсюду; игнорировать уклоны >45°
Адгезия кровати Стандартный клей-карандаш на полиэтилене или стекле.
Протестированные принтеры Prusa MINI+, Creality Ender 3, серия Bambu Lab A/P/X

Файлы 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 манометров из STL/Gauges/ и проверьте их на кирпиче Lego или сервоприводе STS3215. Правильная установка манометра подтверждает точность калибровки вашего принтера. При необходимости отрегулируйте масштаб, прежде чем переходить к полной печати.
У вас нет принтера? См. Руководство 3DPRINT.md в репозитории SO-ARM100 для опций службы печати. Предварительно распечатанные комплекты также можно приобрести на сайте ПартаБот (НАС), Сид Студия (международный) и Автообнаружение (ЕВРОСОЮЗ).
2

Установка программного обеспечения

~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)
3

Обнаружение и калибровка портов

~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
Повторную калибровку после любой повторной сборки. Данные калибровки хранятся локально. Если вы разбираете и собираете соединения, повторите калибровку, чтобы восстановить точные нулевые положения.
4

Первый тест движения

~15 мин.

Запустите сценарий телеуправления в режиме одной руки, чтобы убедиться, что все суставы реагируют правильно, прежде чем подключать ведущую руку.

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0

Что проверить

  • Все 6 суставов реагируют на команды, не пропуская
  • В терминале нет предупреждений о остановке сервопривода или перегрузке.
  • Захват открывается и закрывается на весь диапазон
  • Отсутствие зацепления кабеля в любом положении соединения
Аварийная остановка Отсоедините USB-кабель, чтобы немедленно отключить связь с рукой. Держите руки подальше от рабочего места во время работы от электросети.
5

Телеоперация

~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
Бимануальная установка: SO-101 можно использовать в качестве ведомого рычага с ведущим рычагом DK1. Оба являются родными для LeRobot и обмениваются данными через последовательный порт USB. См. страница ДК1 для получения полной информации о бимануальной настройке.
6

Сбор данных

Непрерывный

Записывайте демонстрации, используя 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 для структурированного перехода от настройки к развертыванию модели.

Настройка завершена?

Присоединяйтесь к сообществу, чтобы делиться результатами и получать помощь по расширенным конфигурациям.