LeRobot documentation
OMX
OMX
Заказ и сборка компонентов
Сначала соберите аппаратную часть OMX, следуя официальному руководству по сборке.
Сборка OMX: https://ai.robotis.com/omx/assembly_guide_omx.html
Роботы OMX поставляются с завода с готовой конфигурацией. Идентификаторы двигателей, параметры связи и смещения суставов уже настроены, поэтому перед использованием LeRobot не требуется дополнительная настройка или калибровка двигателей.
Установка LeRobot 🤗
Чтобы установить LeRobot, следуйте нашему Руководству по установке
Помимо этих инструкций, вам необходимо установить поддержку моторов Dynamixel:
pip install -e ".[dynamixel]"Подключите робота
Чтобы найти порт для каждого адаптера сервопривода шины, выполните этот скрипт:
lerobot-find-port
This command runs and when prompted, disconnect the USB cable from either the leader or follower arm and press Enter. The output will show ‘The port of this MotorsBus is [port]’. This identifies the port for the disconnected arm. Repeat for the other arm to identify both ports.
Пример вывода на macOS:
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, соответствующий ведущей или ведомой руке.
На Linux мы настоятельно рекомендуем использовать правила udev для назначения постоянных и понятных человеку имён устройств ведущему и ведомому манипуляторам OMX. Это позволяет избежать проблем, при которых имена устройств, такие как ttyACM0 и ttyACM1, изменяются при отключении и повторном подключении робота или при перезагрузке системы.
1. Найдите серийные номера ваших устройств
Вы должны были получить номера портов, например ../../ttyACM?, для лидера и последователя с помощью lerobot-find-port. Вы можете сопоставить эти результаты с серийными номерами, используя команду ls -l /dev/serial/by-id/.
Для создания правил udev вам нужен уникальный серийный номер для каждого устройства OMX. Самый простой способ — получить список устройств по пути:
ls -l /dev/serial/by-id/Вы увидите вывод, похожий на следующий:
usb-ROBOTIS_OpenRB-150_228BDD7B503059384C2E3120FF0A2B19-if00 -> ../../ttyACM0 usb-ROBOTIS_OpenRB-150_67E1ED68503059384C2E3120FF092234-if00 -> ../../ttyACM1
В каждой строке серийный номер — это длинная строка после usb-ROBOTIS_OpenRB-150_ и перед -if00.
Серийный номер Follower: 228BDD7B503059384C2E3120FF0A2B19
Серийный номер лидера: 67E1ED68503059384C2E3120FF092234
2. Создайте правило udev
Создайте новый файл правила udev:
sudo nano /etc/udev/rules.d/99-omx.rulesВставьте следующие строки, заменив серийные номера на значения, найденные выше:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="228BDD7B503059384C2E3120FF0A2B19", SYMLINK+="omx_follower"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="67E1ED68503059384C2E3120FF092234", SYMLINK+="omx_leader"Сохраните файл и перезагрузите правила udev:
sudo udevadm control --reload-rules
sudo udevadm triggerТеперь отключите и снова подключите оба устройства один раз.
3. Проверьте символьные ссылки
Проверьте, что имена постоянных устройств существуют:
ls -l /dev/omx_follower /dev/omx_leaderВы должны увидеть, что они указывают на устройства ttyACM*:
/dev/omx_follower -> ttyACM* /dev/omx_leader -> ttyACM*
Эти имена остаются стабильными при перезагрузках и переподключениях.
Телеуправление
После определения правильных портов можно напрямую телеуправлять ведомым манипулятором с помощью ведущего манипулятора.
Управление телепортом без камеры
lerobot-teleoperate \ --robot.type=omx_follower \ --robot.port=<your_follower_port> \ --robot.id=omx_follower_arm \ --teleop.type=omx_leader \ --teleop.port=<your_leader_port> \ --teleop.id=omx_leader_arm
В ходе телеуправления движения ведущей руки в реальном времени зеркально воспроизводятся ведомой рукой. OMX уже настроен, телеуправление можно начать сразу, без каких-либо этапов калибровки.
Управление с камерой
Вы также можете включить ввод с камеры во время телеуправления, предоставив конфигурацию камеры для ведомой руки.
lerobot-teleoperate \
--robot.type=omx_follower \
--robot.port=<your_follower_port> \
--robot.id=omx_follower_arm \
--robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
--teleop.type=omx_leader \
--teleop.port=<your_leader_port> \
--teleop.id=omx_leader_arm \
--display_data=trueКогда камера включена, видеопоток отображается в реальном времени и синхронизирован с состоянием робота. Такая конфигурация полезна для визуального мониторинга и может быть переиспользована позже для записи демонстраций и обучения с подражанием.
Управление телепортом без камеры
lerobot-teleoperate \ --robot.type=omx_follower \ --robot.port=/dev/omx_follower \ --robot.id=omx_follower_arm \ --teleop.type=omx_leader \ --teleop.port=/dev/omx_leader \ --teleop.id=omx_leader_arm
В ходе телеуправления движения ведущей руки в реальном времени зеркально воспроизводятся ведомой рукой. OMX уже настроен, телеуправление можно начать сразу, без каких-либо этапов калибровки.
Управление с камерой
Вы также можете включить ввод с камеры во время телеуправления, предоставив конфигурацию камеры для ведомой руки.
lerobot-teleoperate \
--robot.type=omx_follower \
--robot.port=/dev/omx_follower \
--robot.id=omx_follower_arm \
--robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
--teleop.type=omx_leader \
--teleop.port=/dev/omx_leader \
--teleop.id=omx_leader_arm \
--display_data=trueКогда камера включена, видеопоток отображается в реальном времени и синхронизирован с состоянием робота. Такая конфигурация полезна для визуального мониторинга и может быть переиспользована позже для записи демонстраций и обучения с подражанием.
Поздравляем 🎉, ваш робот готов самостоятельно обучаться задаче.
Update on GitHubЕсли у вас есть вопросы или нужна помощь, напишите нам в Discord.