LeRobot documentation

SO-101

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SO-101

SO-101 SO-101

В шагах ниже мы объясняем, как собрать наш флагманский робот SO-101.

Заказать компоненты

Следуйте этому README. В нём содержится список материалов со ссылками на источники для закупки деталей, а также инструкции по 3D-печати деталей. Также там есть советы, если вы печатаете впервые или у вас нет 3D-принтера.

Установка LeRobot 🤗

Чтобы установить LeRobot, следуйте нашему Руководству по установке

Помимо этих инструкций, вам необходимо установить Feetech SDK (если вы установили LeRobot из PyPI, выполните pip install 'lerobot[feetech]'):

pip install -e ".[feetech]"

Пошаговая инструкция по сборке

Следующая рука использует 6 моторов STS3215 с передаточным числом 1/345. Лидер же использует три мотора с различными передаточными числами, чтобы обеспечить возможность удерживать собственный вес и перемещаться без приложения значительных усилий. Какой мотор требуется для каждого сустава показано в таблице ниже.

Ось «рука-манипулятор»MotorПередаточное число
Base / Shoulder Pan11 / 191
Подъём плеч21 / 345
Сгибание в локте31 / 191
Сгибание запястья41 / 147
Wrist Roll51 / 147
Гripper61 / 147

Настройка двигателей

1. Найдите USB-порты, связанные с каждой рукой

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

lerobot-find-port
Mac
Linux

Пример вывода:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.

[...Disconnect corresponding leader or follower arm and press Enter...]

The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.

Найденный порт: /dev/tty.usbmodem575E0032081, соответствующий ведущей или ведомой руке.

2. Установите идентификаторы и скорости передачи данных для двигателей

Каждый двигатель идентифицируется уникальным id на шине. В заводском состоянии двигатели обычно имеют id по умолчанию 1. Чтобы обеспечить корректную связь между двигателями и контроллером, сначала необходимо задать каждому двигателю уникальный, отличный от других id. Кроме того, скорость передачи данных по шине определяется baudrate. Чтобы контроллер и все двигатели могли обмениваться данными, их необходимо настроить на одинаковый baudrate.

Для этого нам сначала необходимо подключить контроллер к каждому мотору по отдельности, чтобы установить эти параметры. Поскольку мы будем записывать эти параметры в энергонезависимую область внутренней памяти моторов (EEPROM), это нужно будет сделать только один раз.

Если вы используете двигатели от другого робота, вам, скорее всего, также потребуется выполнить этот шаг, так как идентификаторы и скорость передачи данных, вероятно, не будут совпадать.

Видео ниже демонстрирует последовательность шагов для установки идентификаторов двигателей.

Видео по настройке моторов

Подписчик

Подключите USB-кабель от компьютера и блок питания к контроллерной плате манипулятора. Затем выполните следующую команду или запустите пример API с портом, полученным на предыдущем шаге. Также необходимо указать имя манипулятора с помощью параметра id.

Команда
Пример API
lerobot-setup-motors \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem585A0076841  # <- paste here the port found at previous step

Вы должны увидеть следующую инструкцию

Connect the controller board to the 'gripper' motor only and press enter.

Как указано в инструкции, подключите мотор захвата. Убедитесь, что это единственный мотор, подключённый к плате, и что сам мотор пока не соединён последовательно с другими моторами. При нажатии [Enter] скрипт автоматически установит id и baudrate для этого мотора.

Troubleshooting

Если на этом этапе возникает ошибка, проверьте кабели и убедитесь, что они правильно подключены:

  • Питание
  • USB-кабель между вашим компьютером и контроллерной платой
  • 3-контактный кабель от платы контроллера к мотору

Если вы используете контроллерную плату Waveshare, убедитесь, что два перемычки установлены на канале B (USB).

Затем вы должны увидеть следующее сообщение:

'gripper' motor id set to 6

За ним следует следующая инструкция:

Connect the controller board to the 'wrist_roll' motor only and press enter.

Можно отсоединить 3-контактный кабель от контрольной платы, но на другом конце можно оставить его подключённым к мотору захвата, так как он уже будет в нужном месте. Теперь подключите другой 3-контактный кабель к мотору вращения запястья и соедините его с контрольной платой. Как и в случае с предыдущим мотором, убедитесь, что это единственный мотор, подключённый к плате, и что сам мотор не подключён ни к какому другому.

Повторите операцию для каждого мотора, следуя инструкциям.

Проверяйте подключение кабелей на каждом этапе перед нажатием Enter. Например, кабель питания может отсоединиться при манипуляциях с платой.

Когда вы закончите, скрипт просто завершится, после чего моторы будут готовы к использованию. Теперь можно подключить 3-контактный кабель от каждого мотора к следующему, а кабель от первого мотора (‘shoulder pan’ с id=1) — к контроллерной плате, которую теперь можно закрепить на основании руки.

Лидер

Выполните те же шаги для ведущей руки.

Команда
Пример API
lerobot-setup-motors \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem575E0031751  # <- paste here the port found at previous step

Очистить части

Удалите все поддерживающие материалы с 3D-отпечатанных деталей. Самый простой способ сделать это — использовать маленькую отвёртку, чтобы поддеть материал поддержки снизу.

Рекомендуется установить один 3-контактный кабель в двигатель после их размещения, прежде чем продолжать сборку.

Совместное 1

  • Установите оба моторных рожка. Закрепите верхний рожок винтом M3x6mm. Для нижнего рожка винты не требуются.
  • Установите первый мотор в основание.
  • Закрепите мотор четырьмя винтами M2x6mm (самыми маленькими винтами). Два сверху и два снизу.
  • Наденьте скобу на первый держатель мотора и закрепите её двумя винтами M2x6mm (по одному с каждой стороны).
  • Прикрепите плечевую часть.
  • Закрепите плечевую часть четырьмя винтами M3x6mm сверху и четырьмя винтами M3x6mm снизу
  • Добавьте держатель мотора плеча.

Совместное 2

  • Установите оба моторных рожка. Закрепите верхний рожок винтом M3x6mm. Для нижнего рожка винты не требуются.
  • Вставьте второй мотор сверху.
  • Закрепите второй мотор четырьмя винтами M2x6 мм.
  • Прикрепите верхнюю часть руки с помощью 4 винтов M3x6mm с каждой стороны.

Совместный 3

  • Установите оба моторных рожка. Закрепите верхний рожок винтом M3x6mm. Для нижнего рожка винты не требуются.
  • Установите мотор 3 и закрепите его с помощью 4 винтов M2x6mm.
  • Подключите предплечье к мотору 3, используя по 4 винта M3x6mm с каждой стороны.

Совместное 4

  • Установите оба моторных рожка. Закрепите верхний рожок винтом M3x6mm. Для нижнего рожка винты не требуются.
  • Слайд-держатель мотора 4.
  • Сдвиньте мотор 4.
  • Закрепите двигатель 4 четырьмя винтами M2x6 мм.

Совместный 5

  • Вставьте мотор 5 в держатель запястья и закрепите его с помощью 2 передних винтов M2x6mm.
  • Установите только один роторный ротор на запястный мотор и закрепите его винтом M3x6mm.
  • Закрепите запястье на моторе 4 с помощью 4 винтов M3x6mm с обеих сторон.

Захват / Ручка

Подписчик
Лидер
  • Прикрепите захват к мотору 5, установите его на шкив мотора на запястье с помощью 4 винтов M3x6mm.
  • Вставьте мотор захвата и закрепите его с каждой стороны двумя винтами M2x6mm.
  • Установите оба моторных рожка на мотор захвата. Закрепите верхний рожок винтом M3x6mm; для нижнего рожка винты не требуются.
  • Установите захват-щипцы и закрепите его с обеих сторон четырьмя винтами M3x6mm.

Калибровка

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

Подписчик

Выполните следующую команду или пример API для калибровки руки-последователя:

Команда
Пример API
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem58760431551 \
    --robot.id=my_awesome_follower_arm

Видео ниже показывает, как выполнить калибровку. Сначала необходимо переместить робота в положение, в котором все суставы находятся в середине своих диапазонов. Затем, после нажатия клавиши Enter, нужно пройтись каждым суставом по всему его диапазону движения.

Видео калибровки

Лидер

Выполните те же шаги для калибровки ведущего манипулятора, запустив следующую команду или пример API:

Команда
Пример API
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem58760431551 \
    --teleop.id=my_awesome_leader_arm

Поздравляем 🎉, ваш робот готов самостоятельно обучаться задаче. Начните обучение, следуя этому руководству: Начало работы с реальными роботами

Если у вас есть вопросы или нужна помощь, напишите нам в Discord.

Update on GitHub