Физический 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. Бюджетное решение для реальной робототехники

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

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

Настоящая проблема не в том, чтобы купить робота. Проблема в том, чтобы научить его делать что-то новое без пятилетнего 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 перестал быть магией. Он стал инженерной задачей. А с этим можно работать.

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