LeRobot documentation
LeKiwi
LeKiwi
В шагах ниже мы объясняем, как собрать мобильный робот LeKiwi.
Заказать компоненты
Следуйте этому README. В нём содержится список материалов со ссылками на источники для закупки деталей, а также инструкции по 3D-печати деталей. Также там есть советы, если вы печатаете впервые или у вас нет 3D-принтера.
Проводная версия
Если у вас wired версия LeKiwi, вы можете пропустить установку Raspberry Pi и настройку SSH. Кроме того, вы можете выполнять все команды непосредственно на вашем ПК как для скриптов LeKiwi, так и для скриптов ведущей руки, используемых для телеуправления.
Установка программного обеспечения на Pi
Теперь необходимо настроить удалённый ПК, который будет работать на роботе LeKiwi. Обычно это Raspberry Pi, но подойдёт любой ПК, работающий от 5 В и имеющий достаточное количество портов usb (2 или более) для камер и платы управления моторами.
Установка ОС
Для настройки Raspberry Pi и его SD-карты см.: Setup PI. Здесь описано, как скачать Imager для установки Raspberry Pi OS или Ubuntu.
Настройка SSH
После настройки вашего Pi следует включить и настроить SSH (Secure Shell Protocol), чтобы вы могли входить в Pi с ноутбука без необходимости подключать к нему экран, клавиатуру и мышь. Отличное руководство по выполнению этой задачи можно найти здесь. Войти в ваш Pi можно через командную строку (cmd) или, если вы используете VSCode, с помощью этого расширения здесь.
Установка LeRobot на Pi 🤗
Установите LeRobot на вашем Raspberry Pi, следуя нашей инструкции по установке
Помимо этих инструкций, вам необходимо установить поддержку моторов Feetech & ZeroMQ на вашем Pi:
pip install -e ".[lekiwi]"Установка LeRobot локально
Если LeRobot уже установлен на вашем ноутбуке/ПК, вы можете пропустить этот шаг; в противном случае выполните те же действия, что и на Pi.
Следуйте нашему Руководству по установке
Помимо этих инструкций, вам необходимо установить поддержку моторов Feetech & ZeroMQ на вашем ноутбуке/ПК:
pip install -e ".[lekiwi]"Отлично 🤗! Установка LeRobot завершена, и мы можем приступить к сборке манипуляторов SO100/SO101 и мобильной платформы 🤖.
Каждый раз, когда вы захотите использовать LeRobot, переходите в папку ~/lerobot, куда мы установили LeRobot, и выполните одну из команд.
Пошаговая инструкция по сборке
Сначала мы соберём две руки SO100/SO101. Одну мы прикреплём к мобильной базе, а другую используем для телеуправления. Затем мы соберём мобильную базу. Инструкции по сборке можно найти на этих двух страницах:
Найдите USB-порты, связанные с платой управления двигателем
Чтобы найти порт для каждого адаптера сервопривода шины, выполните этот скрипт:
lerobot-find-port
Пример вывода:
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081']
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 может потребоваться предоставить доступ к USB-портам, выполнив команду:
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Пример вывода:
Finding all available ports for the MotorBus.
['/dev/ttyACM0']
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/ttyACM0
Reconnect the USB cable.Найденный порт: /dev/ttyACM0, соответствующий вашей плате.
Настройка двигателей
Инструкции по настройке моторов можно найти в документации SO101. Помимо идентификаторов моторов руки, необходимо также задать идентификаторы моторов мобильной базы. Они должны быть в определённом порядке, чтобы всё работало. Ниже приведено изображение с идентификаторами моторов и местами их установки на мобильной базе. Обратите внимание, что на LeKiwi используется только одна плата управления моторами. Это означает, что идентификаторы моторов колёс — 7, 8 и 9.
Вы можете выполнить эту команду для настройки моторов LeKiwi. Сначала будут настроены моторы руки (id 6..1), а затем моторы колёс (9,8,7)
lerobot-setup-motors \
--robot.type=lekiwi \
--robot.port=/dev/tty.usbmodem58760431551 # <- paste here the port found at previous step
Диагностика проблем с коммуникацией
Если у вас возникают проблемы с подключением к LeKiwi, выполните следующие шаги для диагностики и устранения неполадки.
1. Проверьте конфигурацию IP-адреса
Убедитесь, что в командах или в вашем коде используется правильный IP-адрес Pi. Чтобы проверить IP-адрес Raspberry Pi, выполните (в командной строке Pi):
hostname -I
2. Проверьте, доступен ли Pi с ноутбука/ПК
Попробуйте отправить запрос ping на Raspberry Pi с вашего ноутбука:
ping <your_pi_ip_address>
Если ping не выполняется:
- Убедитесь, что Pi включен и подключен к той же сети.
- Проверьте, включена ли SSH на Pi.
3. Попробуйте SSH-подключение
Если вы не можете подключиться к Pi по SSH, возможно, он не подключен должным образом. Используйте:
ssh <your_pi_user_name>@<your_pi_ip_address>
Если вы получаете ошибку подключения:
- Убедитесь, что SSH включён на Pi, выполнив команду: Затем перейдите в раздел: Interfacing Options -> SSH и включите его.
sudo raspi-config
Калибровка
Теперь нам нужно откалибровать ведущее и ведомое звенья. Калибровка моторов колёс не требуется. Процесс калибровки очень важен, так как он позволяет нейронной сети, обученной на одном роботе, работать на другом.
Калибровка ведущего манипулятора (на мобильной базе)
Убедитесь, что манипулятор подключен к Raspberry Pi, и запустите этот скрипт или пример API (на Raspberry Pi через SSH), чтобы начать калибровку манипулятора-последователя:
lerobot-calibrate \
--robot.type=lekiwi \
--robot.id=my_awesome_kiwi # <- Give the robot a unique nameМы унифицировали метод калибровки для большинства роботов, поэтому шаги калибровки для манипулятора LeKiwi совпадают с шагами для Koch и SO101. Во-первых, необходимо переместить робота в положение, в котором каждый сустав находится в середине своего диапазона движения, затем нажать Enter. Во-вторых, мы перемещаем все суставы через их полный диапазон движения. Видео этого же процесса для SO101 в качестве примера можно найти здесь.
Проводная версия
Если у вас wired версия LeKiwi, выполните все команды на вашем ноутбуке.
Калибровка ведущего манипулятора
Затем, чтобы откалибровать ведущую руку (которая подключена к ноутбуку/ПК), выполните следующую команду из примера API на вашем ноутбуке:
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
--teleop.type=so100_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.so_leader import SO100LeaderConfig, SO100Leader
config = SO100LeaderConfig(
port="/dev/tty.usbmodem58760431551",
id="my_awesome_leader_arm",
)
leader = SO100Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()Телеуправление LeKiwi
Если вы используете Mac, возможно, потребуется предоставить Терминалу разрешение на доступ к клавиатуре для телеуправления. Перейдите в System Preferences > Security & Privacy > Input Monitoring и отметьте пункт для Terminal.
Для телеуправления подключитесь к вашему Raspberry Pi по SSH и выполните conda activate lerobot и эту команду:
python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi
Хост останавливается через --host.connection_time_s секунд (по умолчанию 30). Для более длительных сессий, например при записи набора данных, увеличьте это значение, например --host.connection_time_s=600.
Затем на вашем ноутбуке также выполните conda activate lerobot и запустите пример API, убедившись, что в examples/lekiwi/teleoperate.py указаны правильные значения remote_ip и port.
python examples/lekiwi/teleoperate.py
Теперь вы можете перемещать ведущую руку и использовать клавиатуру (w,a,s,d) для движения вперёд, влево, назад и вправо. Используйте (z,x), чтобы повернуть влево или вправо. Клавиши (r,f) позволяют увеличивать и уменьшать скорость мобильного робота. Доступно три режима скорости, см. таблицу ниже:
| Режим скорости | Линейная скорость (м/с) | Скорость вращения (град/с) |
|---|---|---|
| Быстро | 0.3 | 90 |
| Средний | 0.2 | 60 |
| Медленно | 0.1 | 30 |
| Ключ | Действие |
|---|---|
| W | Дальше |
| A | Переместить влево |
| S | Переместиться назад |
| D | Переместить вправо |
| Z | Поверните налево |
| X | Поверните направо |
| R | Повышение скорости |
| F | Снизить скорость |
Если вы используете другую клавиатуру, вы можете изменить клавиши для каждой команды в
LeKiwiClientConfig.
Проводная версия
Если у вас wired версия LeKiwi, выполните все команды на вашем ноутбуке.
Запись набора данных
Когда вы освоите телеуправление, вы сможете записать свой первый набор данных.
Мы используем возможности Hugging Face hub для загрузки вашего набора данных. Если вы ранее не пользовались Hub, убедитесь, что вы можете войти через cli с токеном, предоставляющим права на запись; этот токен можно сгенерировать в настройках Hugging Face.
Добавьте токен в CLI, выполнив эту команду:
hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credentialЗатем сохраните имя вашего репозитория Hugging Face в переменную:
HF_USER=$(hf auth whoami --quiet)
echo $HF_USERТеперь можно записать датасет. Чтобы записать эпизоды и загрузить датасет на хаб, выполните этот пример API, адаптированный для LeKiwi. Сначала убедитесь, что в скрипте указаны корректные значения remote_ip, HF_REPO_ID, port ведущей руки и TASK_DESCRIPTION. Чтобы записать больше или более длинные эпизоды, измените NUM_EPISODES, EPISODE_TIME_SEC и RESET_TIME_SEC, а также запустите хост с параметром --host.connection_time_s, покрывающим всю сессию.
python examples/lekiwi/record.py
Загрузка набора данных
Локально ваш набор данных хранится в этой папке: ~/.cache/huggingface/lerobot/{repo-id}. По завершении записи данных ваш набор данных будет загружен на вашу страницу Hugging Face под идентификатором HF_REPO_ID, который вы задали в скрипте (например, https://huggingface.co/datasets/${HF_USER}/lekiwi_test), и который можно получить, выполнив:
echo https://huggingface.co/datasets/${HF_USER}/lekiwi_testВаш набор данных будет автоматически помечен тегом LeRobot, чтобы сообщество могло легко его найти, а также вы можете добавить собственные теги (например, tutorial).
Вы можете найти другие наборы данных LeRobot на хабе, поискав по тегам LeRobot tags.
Советы по сбору данных
Когда вы освоите запись данных, можно создать более крупный датасет для обучения. Хорошей стартовой задачей является захват объекта в разных точках и размещение его в контейнере. Мы рекомендуем записать не менее 50 эпизодов, из них 10 на каждую точку. Держите камеры неподвижными и сохраняйте последовательное поведение при захвате на протяжении всей записи. Также убедитесь, что объект, с которым вы работаете, виден на камерах. Хорошее правило: вы должны быть способны выполнить задачу, глядя только на изображения с камер.
В следующих разделах вы будете обучать свою нейросеть. После того как вы добьётесь стабильного качества захвата, можно начать вводить больше вариаций при сборе данных, например, дополнительные точки захвата, различные техники захвата и изменение позиций камер.
Избегайте слишком быстрого добавления большого количества вариаций, так как это может ухудшить результаты.
Если вы хотите углубиться в эту важную тему, вы можете ознакомиться с нашей статьей в блоге о том, что делает датасет хорошим.
Устранение неполадок:
- В Linux клавиши управления потоком записи (стрелки, Escape) работают в сессиях X11, Wayland и headless/SSH, если запускать запись из интерактивного терминала (держите его в фокусе) — настройка
$DISPLAYне требуется; также работают буквенные эквивалентыn/r/q. Обратите внимание, что управление базой LeKiwi с клавиатуры работает иначе: оно опирается на глобальный бэкенд клавиатуры и поэтому функционирует только в сессии X11, на рабочем столе Windows или в macOS с предоставленными правами Accessibility/Input Monitoring — но не в Wayland или headless-средах. См. ограничения pynput.
Повторить эпизод
Чтобы воспроизвести эпизод, выполните пример API ниже, не забудьте изменить remote_ip, port, LeRobotDatasetId и индекс эпизода.
python examples/lekiwi/replay.py
Поздравляем 🎉, ваш робот готов самостоятельно обучаться задаче. Начните обучение с раздела о тренировке в этом учебнике: Начало работы с реальными роботами
Оценка вашей политики
Для оценки вашей политики запустите пример API evaluate.py, не забудьте изменить remote_ip, port, модель..
python examples/lekiwi/evaluate.py
Update on GitHubЕсли у вас есть вопросы или нужна помощь, напишите нам в Discord.