Физический AI на ROS2 и LeRobot: конвейер imitation learning за 30 тыс. | AiManual
AiManual Logo Ai / Manual.
16 Мар 2026 Гайд

Сборка Physical AI-конвейера на ROS2 и LeRobot за 30 тыс. рублей: end-to-end imitation learning на манипуляторе SO-101

Практический гайд по сборке end-to-end конвейера imitation learning на манипуляторе SO-101 с ROS2 и LeRobot v0.7.2. Бюджетное решение для реальной робототехники

Реклама
partv2

Зачем еще один робот? Потому что все остальные лгут

Откройте ленту новостей. Видите? Очередной робот от крупной компании, который 'революционизирует автоматизацию'. Цена - как у скромного особняка. Архитектура - черный ящик. Код - проприетарный. Это не решение, это реклама.

Настоящая проблема не в том, чтобы купить робота. Проблема в том, чтобы научить его делать что-то новое без пятилетнего PhD и бюджета Пентагона. Imitation learning (обучение с подражанием) обещал быть выходом: записал действия оператора, обучил модель, запустил. В теории.

На практике получается это: три недели настройки среды, пять разных форматов данных, драйверы, которые падают при первом движении, и модель, которая прекрасно работает в симуляции, а в реальности не может поднять даже чашку. Знакомо?

Стандартный подход разбивается о простой факт: между записью демонстрации и выполнением задачи лежит пропасть из несогласованных инструментов. ROS2 для связи, свой скрипт для записи, свой формат для обучения, свой API для развертывания. Каждый слой - новая точка отказа.

Кирпичи и раствор: что сломает голову, а что - бюджет

Физический AI-конвейер - это не одна супертехнология. Это мост между мирами. С одной стороны - железо (манипулятор, датчики). С другой - софт (нейросети, планирование). Мост должен быть прочным и дешевым. ROS2 - это арматура. LeRobot - это бетон.

Почему именно этот стек? ROS2 Humble (или актуальная версия на март 2026) дает распределенную коммуникацию, управление жизненным циклом и драйверы для сотен устройств. LeRobot (возьмем последнюю v0.7.2) - это библиотека от команды Hugging Face, которая упаковывает сбор данных, обучение и развертывание политик imitation learning в единый pipeline. Она знает, как говорить с ROS.

Железная основа - манипулятор SO-101. Это не самый совершенный робот на рынке, но его главное преимущество - предсказуемость. За примерно 18-20 тыс. рублей вы получаете 4-5 степеней свободы, контроллер с Ethernet-интерфейсом и драйверы, которые (с некоторыми плясками) работают с ROS2. Это основа, которую не жалко.

💡
Если вы уже собирали мобильного робота по моему предыдущему гайду за 20 000 рублей, то SO-101 покажется вам логичным апгрейдом. Это следующий шаг: от передвижения к манипуляции.

1Разборка на запчасти: бюджет 30 000 рублей

КомпонентПримерная цена (март 2026)Комментарий
Манипулятор SO-101 (или аналог)18 000 - 20 000 руб.Ищите комплект с контроллером. Без него подключение к ROS2 превратится в кошмар.
RGB-D камера (типа Orbbec Astra 2)6 000 - 8 000 руб.RealSense D435 - эталон, но дорог. Orbbec дешевле и с ROS2 драйверами (после правок) работает.
Мини-ПК (Intel NUC или аналогичный)Уже есть / 15 000+ руб.Если нет - выходим за бюджет. Предполагаем, что у вас есть хотя бы старый ноутбук с Ubuntu 22.04.
Крепеж, кабели, блок питания1 000 - 2 000 руб.Не экономьте на блоке питания для манипулятора. Слабый БП = дрыгание вместо движения.

Итог: если есть компьютер, укладываемся в 30 000. Если нет - придется искать б/у варианты или использовать Raspberry Pi 5, но с ним могут быть сложности с ROS2 и камерой. В статье про подготовку к хакатону AMD есть детали по работе с этим железом.

2Базовая прошивка: ROS2 и драйверы

Не пытайтесь установить ROS2 с официальной инструкции. Она сломается на третьем шаге из-за конфликта версий библиотек. Используйте готовый Docker-образ или скрипт.

# Установка ROS2 Humble (или актуальной LTS версии на 2026) через Docker - самый чистый способ
# 1. Установите Docker и NVIDIA Container Toolkit (если есть GPU)
# 2. Скачайте образ с ROS2 и базовыми инструментами
docker pull ros:humble-ros-base-jammy

# 3. Запустите контейнер с доступом к USB (для контроллера SO-101 и камеры)
docker run -it --network host --device /dev/ttyUSB0 --device /dev/video0 \
  -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY \
  ros:humble-ros-base-jammy bash

Драйверы для SO-101. Вот где начинается 'веселье'. Производитель может поставить SDK для ROS1 или сырой C++ код. Вам нужно найти или написать (это час работы) простой ROS2-узел, который читает данные из сокета или последовательного порта и публикует их в топики /joint_states и принимает команды в /joint_trajectory. Не пытайтесь сделать идеально. Сделайте работающе.

3Сердце конвейера: установка LeRobot v0.7.2

LeRobot на март 2026 - это уже не просто набор скриптов, а полноценный фреймворк. Он умеет записывать данные прямо из ROS-топиков, аугментировать их, обучать разные архитектуры (от простых MLP до трансформеров) и экспортировать политику обратно в ROS-узел. Магия.

# Внутри ROS2-контейнера или в отдельном Python-окружении
pip install lerobot==0.7.2
# Важно: проверьте совместимость версий PyTorch и CUDA (если есть GPU)
# LeRobot v0.7.2, вероятно, требует PyTorch 2.3+

# Дополнительно установите пакет для работы с ROS2
pip install lerobot-ros2
# Этот пакет появился в v0.6.0 и сейчас стабилен

После установки проверьте, видит ли LeRobot вашу ROS2-сеть. Запустите манипулятор и камеру, чтобы были данные в топиках.

# В одном терминале: запуск ROS2 демона и ваших драйверов
# В другом терминале, внутри окружения LeRobot:
lerobot_ros2 check --topics /joint_states /rgb_image /depth_image
# Должен показать, что топики доступны и их формат распознан

4Запись демонстраций: как не сойти с ума

Теперь самый человеко-затратный этап. Нужно физически показать роботу задачу 20-50 раз. Например, 'возьми кубик со стола и положи в коробку'. Включите запись и управляйте манипулятором через джойстик или teach-режим.

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

# Команда для запии одной демонстрации (эпизода)
lerobot_ros2 record --task pick_and_place \
  --state-topics /joint_states \
  --obs-topics /rgb_image /depth_image \
  --action-topic /command \
  --output-dir ~/robot_demos/demo_01

# После записи каждого эпизода он сохраняется в отдельную папку.
# Запись останавливается автоматически через 30 секунд или по Ctrl+C.
💡
Не записывайте 50 демонстраций подряд. Сделайте 5, проверьте данные, убедитесь, что все топики записались и нет артефактов (например, размытия из-за движения). Потом еще 5. Иначе рискуете потратить день, а потом обнаружить, что во всех записях пропущен топик с усилием.

5Обучение политики: где ждать подвоха

Когда набрали 30-50 демонстраций, можно обучать. LeRobot использует алгоритмы типа Behavioral Cloning (BC) или более продвинутые, как Diffusion Policy. На старте хватит BC.

# Сначала создайте датасет из записанных демонстраций
lerobot dataset create --path ~/robot_demos --format rosbag \
  --output ~/lerobot_datasets/so101_pick_place

# Затем обучение. Это займет от нескольких часов до суток на CPU.
lerobot train --dataset ~/lerobot_datasets/so101_pick_place \
  --policy bc \
  --output_dir ~/lerobot_policies/bc_model \
  --steps 50000 \
  --batch_size 32 \
  --lr 3e-4

Что может пойти не так? Все. Самая частая проблема - переобучение. Модель идеально повторяет траектории из демонстраций, но если кубик сдвинуть на сантиметр, она промахивается. Решение - аугментация данных прямо в конвейере LeRobot (добавление шума к изображениям и состояниям) и сбор более разнообразных демонстраций (кубик в разных местах).

Не ждите 100% успешности. Если обученная политика выполняет задачу в 60-70% случаев - это отличный результат для начала. Остальные 30% - пространство для улучшений: больше данных, другой алгоритм, настройка гиперпараметров.

6Развертывание и запуск в реальном времени

Обученная модель - это файлы с весами. LeRobot может обернуть их в ROS2-узел, который подписывается на топики с наблюдениями (/rgb_image, /joint_states) и публикует предсказанные действия в /command.

# Экспорт модели в формат ONNX (опционально, для ускорения)
lerobot export ~/lerobot_policies/bc_model --format onnx

# Запуск ROS2-узла с политикой
lerobot_ros2 run --policy ~/lerobot_policies/bc_model \
  --obs-topics /rgb_image /depth_image /joint_states \
  --action-topic /command \
  --rate 10  # Частота предсказаний (Гц)

Узел запустится и начнет 'слушать' мир и отправлять команды. Манипулятор должен ожить и попытаться выполнить задачу. Первый запуск всегда страшный. Держите руку на кнопке аварийной остановки.

Где собака зарылась: ошибки, которые съедят ваше время

  • Часовые пояса данных: Убедитесь, что временные метки в ROS-топиках синхронизированы. Если изображение приходит с задержкой в 100 мс относительно состояния суставов, модель получит неконсистентный снэпшот мира. Используйте message_filters в ROS2 для синхронизации при записи.
  • Калибровка камеры: Глубинная камера должна быть откалибрована. Искажения испортят любые надежды на точность. Используйте camera_calibration пакет ROS2.
  • Дрейф нуля у манипулятора: Дешевые энкодеры могут 'плыть'. После каждого включения делайте homing (возврат в нулевое положение) по концевикам или по калибровочной позе.
  • Память, память, память: Запись видео и глубины съедает гигабайты. На 50 демонстраций по 30 секунд может уйти 100+ Гб. Заранее очистите диск.

А что дальше? Конвейер - это только начало

Вы собрали конвейер. Робот научился одной задаче. Самое время для следующего шага - дообучения в реальном времени. Техники, вроде тех, что описаны в методе Physical Intelligence, позволяют роботу адаптироваться к небольшим изменениям, исправляя свои ошибки без полного переучивания.

Или можно заменить простую BC на что-то более сложное, например, на архитектуру Cosmos Reason 2, которая явно моделирует физику сцены. Но это уже для следующего бюджета.

Главное, что у вас теперь есть работающий конвейер: от реального железа через ROS2 к нейросетевой политике и обратно. Это не черный ящик. Это инструмент. Вы можете менять компоненты, дебажить, улучшать. Вы не зависите от единственного поставщика.

Физический AI перестал быть магией. Он стал инженерной задачей. А с этим можно работать.

Подписаться на канал