Встраиваем AI в ROS 2: от камеры до управления

На борту робота восприятие и управление часто живут в разных контурах — из-за этого линия встаёт на ровном месте. Мы разрабатываем ROS AI интеграцию под ключ: собираем оба контура в единый граф, настраиваем режимы работы и передаём решение в эксплуатацию с регламентами. Один подрядчик вместо набора разрозненных модулей.
Часто задаваемые вопросы

Где рассыпается ROS AI интеграция на борту робота

Модуль восприятия уверенно находит объект на тестовой записи, а на борту робота всё рассыпается: команда в контур управления уходит по координатам, которые успели устареть. Дело не в качестве модели, а в стыке — в ROS 2 восприятие и управление живут в разных узлах и общаются через очереди сообщений, и именно на этой границе теряется время.

Первый типовой разрыв — рассинхрон контура управления по времени. Метки времени ставятся разными источниками: драйвер камеры, узел детекции, планировщик траектории. Расхождение часов даёт сдвиг на кадр-два, и манипулятор едет за объектом, которого там уже нет: потеря объекта выглядит как ошибка модели, хотя причина в синхронизации.

Второй — замерший узел. Процесс жив, но публикация кадров прекратилась, и без контроля живости контур продолжает считать по последнему кадру, пока робот не упрётся в ограничитель или не сорвёт операцию. Возврат в работу — руками: остановка цикла, перезапуск, повторная калибровка, простой участка.

Задержка отклика и потеря объекта на этих участках складываются в один класс отказов, который не виден при отладке на столе. Ниже разбираем, как это закрывается: где ставить контроль живости узлов, как свести время к одному источнику и что делать при потере объекта — без переписывания контура управления. Тогда ROS AI интеграция перестаёт зависеть от того, кто первым заметил сбой.

Что даёт единый граф ROS: восприятие и управление в одном контуре

Единый граф ROS 2 — это когда детектор, трекер, планировщик и драйверы приводов обмениваются сообщениями в одном контуре, а не живут изолированными сервисами со своими часами и буферами. У каждого топика задан профиль качества связи: командам приводу — надёжная доставка, видеопотоку — отказ от повторной передачи устаревших кадров. Наблюдаемость сквозная — по журналу видно, на каком узле кадр превратился в цель и где цель потерялась.

Первый эффект — устранённый класс отказов «робот не увидел объект». Он рождался на стыке: рассинхрон метки времени, потерянный кадр, очередь, которую модуль управления разгребал уже неактуальными данными. В общем графе метки времени приходят из одного источника, а переполнение буфера видно диагностическим сообщением до того, как робот встанет.

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

Такая сборка опирается на зрелую экосистему драйверов и инструментов записи: инцидент воспроизводится на логах, а не угадывается по поведению железа. Поэтому интеграцию моделей ведём как инженерный процесс с проверяемым результатом.

Режимы работы модуля восприятия: борт, станция, внешний контур

Размещение вычислений в контуре восприятия — это выбор границы отказа: что робот продолжит делать, если канал до станции пропал. От него зависят размер модели, укладывающийся в требуемое время реакции, и объём данных, уходящих с борта.

Режимов работы три: бортовой контур, вынесенный на станцию и гибридная схема. В каждом по-своему настраивается транспорт ROS 2 и распределяются роли между нодами.

Режим Когда подходит Ограничения режима
Бортовой контур Автономная работа, движение вне зоны устойчивой связи, предсказуемая реакция Потолок по числу и размеру моделей, тепловой бюджет, обновление модели — с перезапуском нод
Вынесенный контур Тяжёлые модели, дообучение на реальном потоке, несколько роботов на общем пуле Зависимость от канала: неравномерная задержка, потери, переподключение
Гибридная схема Быстрая реакция плюс семантика: на борту — безопасность, на станции — распознавание и планирование Согласование версий моделей, синхронизация времени, два набора конфигураций

Отдельно решаем, что публикуется наружу: сырой видеопоток и облака точек через канал не идут — прореживание и сжатие остаются на борту. Команды управления передаём с подтверждением доставки и короткой очередью, поток кадров — без повторов, иначе робот реагирует на устаревшие данные.

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

Этапы внедрения: от обследования стенда до передачи в эксплуатацию

Работу начинаем с обследования стенда: снимаем карту узлов ROS 2, частоты публикации топиков, доступные вычислители и то, где сейчас теряется время — на захвате кадра, инференсе или передаче команды исполнительному механизму. По этой карте видно, что можно переиспользовать, а что придётся переписывать; без неё любая оценка превращается в догадку.

  1. Обследование стенда. Инвентаризация узлов, топиков и сервисов, замер реальных частот и задержек, проверка питания и вычислителей, список ограничений площадки.
  2. Схема графа. Проектируем граф: кто публикует и кто подписывается, где ставятся буферы и политики доставки сообщений, как разводятся контуры восприятия и управления, чтобы падение одного узла не останавливало платформу.
  3. Настройка узлов. Собираем и конфигурируем компоненты, выносим параметры в файлы, включаем запись телеметрии и режим воспроизведения — на нём отлаживаем без выезда на объект.
  4. Проверка на полигоне. Прогоняем сценарии с повторяемыми условиями, замеряем задержку от кадра до команды и долю срабатываний, ловим деградацию при засветке, вибрации и потере связи.
  5. Опытная эксплуатация. Система работает на объекте под присмотром инженера: разбираем каждый отказ по логам, правим пороги и логику переключений.
  6. Передача в эксплуатацию. Схема графа, конфигурации, регламент запуска и восстановления, обучение смены и согласованный план отката на предыдущую конфигурацию.

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

Пакет передачи: конфигурации, схемы графа, регламенты и доступы

Проект на ROS 2 сдаётся не демонстрацией работающего робота, а набором артефактов, по которым ваша команда сможет эксплуатировать систему без нас. Если передача сводится к архиву с исходниками, через пару месяцев никто не вспомнит, почему узел управления двигателем публикует команды с такой задержкой и что будет, если поменять порог срабатывания. Ниже — что именно остаётся у заказчика.

  • Конфигурации узлов — файлы параметров по каждому узлу: частоты публикации, размеры очередей, пороги срабатывания, привязка к топикам и пространствам имён. Рядом — комментарии, какие значения менялись под нагрузкой и почему.
  • Схемы графа — диаграмма узлов, топиков и сервисов с профилями качества связи и точками, где поток данных с камеры расходится с потоком команд управления.
  • Регламенты эксплуатации — порядок штатного запуска и остановки, реакция на потерю связи с камерой или контроллером, признаки инцидента и действия оператора до приезда инженера.
  • Инструкции для службы сопровождения — как читать журналы, что означают диагностические сообщения, какие метрики снимать при замедлении отклика.
  • Права доступа — модель ролей: кто может менять конфигурацию, кто только наблюдать, у кого есть права на перезапуск узлов и доступ к журналам.
  • Процедура отката — версионирование конфигураций и способ вернуть предыдущий рабочий набор параметров одной командой.
  • Матрица трассируемости — связь требований с узлами и проверками, чтобы при доработке было видно, что именно затрагивается.

Пакет считаем принятым, когда ваш инженер самостоятельно разворачивает систему, запускает её и выводит из работы по документам, не обращаясь к нам за пояснениями.

Кейс: как линия перестала останавливаться из-за сбоя восприятия

На линии с машинным зрением детектор дефектов работал в контуре ROS 2 и на каждой смене ошибался на восприятии: блик от металла и смена освещения читались как брак. Линия вставала по ложной тревоге, оператор шёл к пульту и вручную подтверждал кадры, которые система не смогла разобрать.

Из десяти остановок за смену семь приходились на восприятие, а не на реальный дефект. Восстановление цикла занимало до двенадцати минут простоя, ручных вмешательств набиралось больше двадцати за смену.

Что изменили

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

Что стало

Метрика До После
Остановки линии по вине восприятия, за смену 6–8 0–1
Время восстановления цикла до 12 мин до 2 мин
Ручных вмешательств оператора за смену 20+ 2–3

Оператор перестал быть обязательным звеном цикла — вмешательство осталось для настоящих дефектов. Спорные кадры теперь копятся в наборе для дообучения модели, поэтому порог уверенности и калибровка уточняются по факту, без остановки линии.

Что делать, если свой модуль восприятия уже развёрнут?

Работающий модуль восприятия — это актив, а не помеха: мы не переписываем его с нуля, а достраиваем вокруг него связку. Первым делом фиксируем контракт: в каком виде модуль отдаёт результат (сообщение, набор координат, метка объекта), в какой системе координат, с какой частотой и какой задержкой. Именно здесь чаще всего вскрывается причина рассинхронизации — узлы формально совместимы, но живут в разных системах отсчёта и разном времени.

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

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

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

Сомнения перед стартом: разбираем технические риски

Большинство вопросов перед стартом — не про модель, а про то, как узел ROS 2 уживётся с уже работающим контуром. Это и есть основные технические риски: совместимость, поведение при сбоях, задержки в контуре.

Придётся ли менять датчики и контроллеры?

Нет. Узел подписывается на уже публикуемые топики и отдаёт команды в привычном формате сообщений, поэтому драйверы и датчики остаются на месте. Если у сенсора нет готового драйвера, пишем адаптер — проверка связки идёт на вашем железе, а не на стенде.

Что будет при потере связи или сбое узла?

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

Как вы проверяете задержки в контуре?

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

Что происходит после передачи?

Отдаём документацию по диагностике сбоев: какие метрики смотреть, где лежат журналы событий, что означает каждая ошибка. Сопровождение после передачи включает разбор инцидентов и уточнение регламента — вы не остаётесь один на один с контуром после запуска.

Обсудим задачу и вернёмся с оценкой и планом работ

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

Что прислать для оценки:

  • описание платформы: вычислительный модуль, ускоритель, установленная ветка ROS 2;
  • состав сенсоров с интерфейсами и частотами публикации: камеры, лидар, инерциальный блок, одометрия;
  • текущий граф узлов — какие топики и сервисы уже есть, кто публикует и кто подписан;
  • требования к реакции контура: допустимая задержка, частота управления, поведение при потере кадров;
  • сценарии, которые решение обязано отработать, включая сложные — плохой свет, перекрытия, динамические препятствия;
  • записи стендовых прогонов и логи, если они ведутся.

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

Опишите задачу и пришлите материалы — вернёмся с оценкой, порядком этапов и условиями запуска.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142