RoboMaster: Интеллектуальный метод построения траекторий для роботов-манипуляторов
Проект реализован при поддержке Фонда содействия инновациям в рамках программы «Студенческий стартап» мероприятия «Платформа университетского технологического предпринимательства» федерального проекта «Технологии»
![]()
Цель проекта - создать приложение с алгоритмом планирования траекторий для роботизированных манипуляторов с использованием методов глубокого обучения.
Область применения приложения: промышленность, медицина, сервисные услуги.
Приложение протестировано в условиях, близким к реальным. В данный момент приложение готово к внедрению для проведения тестирования в реальных условиях эксплуатации.
Приложение состоит из:
- решения для браузера (пользователь выполняет все опекрации в браузере);
- решения с планированием, где проводятся все расчеты.
Пользовательский интерфейс приложения для построения траекторий роботом-манипулятором
Цель работы: разработать пользовательский интерфейс, который был позволял пользователям управлять роботом-манипулятором из браузера.
Результат работы: в результате создано приложение с использованием фреймворков Angular (для фронтенда) и Spring (для бекенда). Приложение открывается в браузерах Google Chrome, Mozilla Firefox, Яндекс Браузер.
Информация о созданных разделах приложения приведена в таблице 1.
Таблица 1 — Разделы приложения
|
Название раздела |
Описание |
Поддерживание функции |
|
Шапка приложения |
Верхняя часть приложения с навигацией и важными опциями |
Переключение моделей роботов, переход в другие разделы приложения |
|
Позы робота |
Вывод информации о приложении и подключенных опциях |
Получение состояний робота, публикация состояний робота, получение данных с виртуальной камеры rViz, сохранение поз робота в базу данных, архивирование поз робота, экспорт поз робота, ползунки и кнопки для правления отдельными джоинтами робота |
|
Сцены |
Управление препятствиями на сцене |
Выбор режимов создания препятствий (вручную или по данным сенсоров), создание кубов, выбор мешей, сохранение созданных препятствий в базу данных, выбор готовых сцен (наборы геометрических форм препятствий), создание групп препятствий, сохранение сцен, фиксация препятствий на сцене |
|
Движение |
Управление движениями робота |
Выбор режимов планирования: классические алгоритмы или RL-подход, выбор классического алгоритма из списка, выбор алгоритма для оптимизации траектории Trajopt, запуск сбора датасета, запуск обучения модели, выбор модели из списка, выбор начального и целевого положения робота для планирования, запуск построения траектории и запуск выполнения построенной траектории |
|
Название раздела |
Описание |
Поддерживание функции |
|
Сценарии |
Список сценариев для планирования |
Сохранение текущих настроек приложения в сценарий (модель робота, начальное и целевое положение робота, алгоритмы планирования, препятствия на сцене), запуск сохраненных сценариев |
|
Сенсоры |
Полученние данных с сенсоров |
Получение данных с камеры RealSense (изображение и изображение глубины), получение данных о роботе и препятствиях с виртуальных камер rViz |
|
Статистика |
Вывод статистики |
Статистика проведения испытаний пока не собирается. |
|
Настройки |
Настройки приложения |
Шаг изменения джоинтов робота, шаг изменения положения препятствий при перемещении, состояния гриппера робота и управление раскрытием гриппера робота |
Приложение корректно открывается в мобильных браузерах Google Chrome, Mozilla Firefox, Яндекс Браузер на устройствах с диагональю от 6 дюймов.









Разработка приложения для построения траекторий роботом-манипулятором
Цель работы: создать приложение, с помощью которого можно было бы строить траектории для робота-манипулятора.
Результат работы: приложение написано на Robot Operating System (ROS). Структура фреймов при запущенном роботе UR5 приведена в приложении К.
Пример построения траектории приведен на рисунке ниже. Красным отмечена траектория, которая является первым приближением. Зеленым показана итоговая траектория. Эту траекторию робот может выполнить.

Реализация взаимодействия с пользовательским интерфейсом определена в классе ROSInterface. Класс ROSInterface — компонент на базе ROS (Robot Operating System). Он служит центральным интерфейсом для управления роботом, взаимодействия с симуляционной средой и визуализатором (rViz), планирования траекторий, работы с 3D-данными (облака точек, Octomap) и генерации датасетов.
Основные функции:
- Управление состояниями суставов робота (установка стартовой и целевой позиций суставов через сервисы set_joint_start_value и set_joint_finish_value), получение текущих значений суставов (get_joint_value), публикация состояний суставов в топики /joint_states и /ur5_joints_update (синхронизация с Gazebo);
- Работа со сценами и препятствиями (загрузка сцен из JSON-файлов с описанием препятствий, их позиций и свойств), создание, перемещение и удаление препятствий (боксов) в среде планирования (MoveIt, Tesseract);
- Планирование траекторий (запуск планирования траектории с выбором алгоритма, например, RRTConnect из MoveIt, RL-подход, TrajOpt), настройка параметров планирования (режим, модель RL и т. д.), проверка допустимости позы робота (отсутствие коллизий) с помощью MoveIt;
- Обработка 3D-данных (приём облаков точек с камеры (/camera/depth/color/points), построение Octomap на основе данных с камеры, фильтрация и трансформация облаков точек (поворот на 90° вокруг оси X), генерация упрощённых мешей (объединённые кубы) из Octomap для ускорения планирования;
- Генерация датасетов (сбор данных о позах робота, сценах и траекториях, сохранение информации о сценах), поддержка генерации данных на пустой сцене или со препятствиями;
- Взаимодействие с UI и внешними компонентами (отправка сообщений об ошибках и статусах в пользовательский интерфейс), публикация данных о сценах во фронтенд, запуск обучения модели RL (train_model);
- Визуализация и отладка (отображение поз робота в Rviz), визуализация препятствий и траекторий с помощью маркеров.
Ключевые компоненты и зависимости:
-
ROS — сервисы, топики, сообщения (sensor_msgs, moveit_msgs, кастомные типы из ur5_husky_main);
-
MoveIt — планирование траекторий, проверка коллизий, управление PlanningScene;
-
Tesseract — альтернативная среда планирования и симуляции;
-
PCL (Point Cloud Library) — обработка облаков точек (фильтрация, трансформация, построение Octomap);
-
Octomap — создание 3D-карты окружения из облаков точек;
-
TrajOpt — библиотека для оптимизации траекторий;
-
JSON — загрузка конфигураций сцен из файлов.
Вспомогательные классы:
-
Utils — работа с JSON, парсинг данных;
-
VisualUtils — создание коллизионных объектов, маркеров, работа с Octomap;
-
DatasetUtils — формирование и сохранение датасетов.
Используемые топики и сервисы
Топики (публикации/подписки):
-
/joint_states, /ur5_joints_update — состояния суставов;
-
/camera/depth/color/points — облако точек с камеры;
-
/scenes_topic — данные о сценах для фронтенда;
-
/pointcloud_output — обработанное облако точек;
-
/octomap_update, /save_obs_scene, /get_real_obs_scene — управление обновлением сцены.
Сервисы:
-
set_joint_start_value, set_joint_finish_value — установка поз робота;
-
get_joint_value — получение текущих поз;
-
robot_plan_trajectory — запуск планирования траектории;
-
remove_box, move_box — управление препятствиями;
-
train_model — запуск обучения модели.
Параметры конфигурации:
-
delta_resolution_ — разрешение Octomap (по умолчанию 0.1 м);
-
generate_dataset_ — флаг генерации датасета;
-
scene_save_path_ — путь для сохранения данных;
-
plan_algorithm_ — алгоритм планирования (по умолчанию RRTConnect);
-
octomap_merge_box_ — использование упрощённых мешей вместо детальной Octomap.
Сценарии использования
Тестирование планирования:
-
загрузка сцены с препятствиями;
-
установка стартовой/конечной поз робота;
-
запуск планирования с выбранным алгоритмом;
-
визуализация результата в RViz.
Сбор данных для обучения RL:
-
активация режима генерации датасета (set_generate_dataset);
-
сканирование окружения камерой;
-
сохранение поз робота, сцен и траекторий в файлы.
Динамическое управление средой:
-
добавление/удаление препятствий во время работы;
-
обновление Octomap при изменении окружения.
Модульдля получения информации об объектах из внешней среды по данным сенсоров
Цель работы: создать модуль, который бы получал информацию о препятствиях из внешней среды.
Результат работы: создан модуль, который получает информацию о препятствиях по камере глубины Realsense. Реализован на Robot Operating System (ROS).
ROS-узел написан на Python, который обрабатывает фото- и глубинные данные с камеры Intel RealSense, транслирует их в кастомные сообщения, выполняет базовую обработку изображений и публикует статические TF-преобразования.
Основные функции:
- Приём изображений с камеры (цветное изображение, глубинное изображение с типом данных 32FC1, изображения из Rviz;
- Преобразование и публикация изображений (конвертация ROS-сообщений в OpenCV-изображения через CvBridge, кодирование изображений в формат Base64 для передачи в кастомных сообщениях ImageCamera), публикация обработанных изображений в топики;
- Обработка глубинных данных (медианная фильтрация для снижения шума, создание маски препятствий, визуализация зон препятствий в реальном времени;
- Работа с TF (публикация статического преобразования между кадрами, ориентация задана кватернионом);
- Управление частотой обновления (задержка между получением глубинных кадров задаётся параметром delay, ограничение частоты публикации цветных изображений — 1 Гц).

Подготовка данных необходима для алгоритмов зрения: фильтрация глубинных данных перед построением 3D-карты (Octomap), передача обработанных изображений в системы распознавания объектов.