ROS-ноды
После запуска ровера автоматически поднимается набор ROS-нод, обеспечивающих управление движением, работу с сенсорами, видеопотоком и взаимодействие с внешними интерфейсами.
Актуальный список запущенных нод можно получить командой:
ros2 node list
Для базовой конфигурации BRover E5 список выглядит следующим образом:
/camera1
/control_move
/cyphal_bridge
/imu
/joy
/odom
/radiolink_control
/rosbridge_server
/web_video_server
Назначение нод
Управление движением
Нода /joy отвечает за получение данных с подключённого джойстика. Она считывает состояние кнопок и осей и публикует их в стандартном формате ROS, который затем используется другими компонентами системы.
Нода /radiolink_control принимает эти данные и преобразует их в команды движения — линейную и угловую скорости ровера. На этом этапе формируется логика управления, удобная для дальнейшей обработки.
Нода /control_move реализует кинематическую модель платформы. Она принимает целевые скорости и рассчитывает индивидуальные команды для каждого из шести двигателей, учитывая особенности шасси.
Сенсоры и состояние робота
Нода /imu работает с инерциальным датчиком. Она получает данные об ускорениях, угловых скоростях и ориентации и публикует их в систему ROS.
Нода /odom отвечает за вычисление положения робота в пространстве. Она объединяет данные с IMU и обратную связь от приводов, формируя одометрию — координаты и ориентацию ровера.
Взаимодействие с аппаратной частью
Нода /cyphal_bridge является ключевым связующим элементом между ROS 2 и низкоуровневой электроникой. Она преобразует сообщения ROS в формат протокола Cyphal и обратно, обеспечивая обмен данными по CAN-шине с драйверами двигателей и другими модулями.
Работа с камерой и видео
Нода /camera1 отвечает за работу с USB-камерой. Она захватывает видеопоток и публикует изображения в ROS-топики.
Нода /web_video_server получает изображения из ROS и делает их доступными по HTTP. Это позволяет просматривать видеопоток через браузер или использовать его во внешних приложениях.
Взаимодействие с веб-интерфейсом
Нода /rosbridge_server предоставляет интерфейс для обмена данными между ROS и внешними клиентами. Она работает через WebSocket и использует JSON-формат сообщений.
Именно через неё веб-интерфейс ровера получает данные и отправляет команды управления.
Получение информации о нодах
Для просмотра подробной информации о конкретной ноде можно использовать команду:
ros2 node info <имя ноды>
Например:
ros2 node info /odom
Это позволяет узнать, какие топики и сервисы использует нода, а также её текущее состояние.