ROS-топики
В процессе работы ровера все данные и команды передаются через ROS-топики. Они используются для обмена информацией между нодами: управления движением, получения данных с сенсоров и взаимодействия с внешними интерфейсами.
Актуальный список доступных топиков можно получить командой:
ros2 topic list
Для базовой конфигурации BRover-E5 список включает следующие основные топики.
Краткая таблица топиков
| Группа | Основные топики | Назначение |
|---|---|---|
| Камера | /camera1/image_raw, /camera1/image_compressed, /camera1/camera_info | видеопоток и параметры камеры |
| Управление моторами | /m_vel1 – /m_vel6 | целевые скорости отдельных двигателей |
| Обратная связь от моторов | /m_odom1 – /m_odom6 | текущие скорости двигателей |
| Одометрия | /odom_pose2d | координаты и угол поворота ровера |
| IMU | /bhi360/imu | ускорения, угловые скорости и ориентация |
| Батарея | /bat | состояние питания и аккумулятора |
| Джойстик | /joy | оси и кнопки радиомодельного пульта |
| Команды движения | /cmd_vel | целевая линейная и угловая скорость ровера |
| Кнопки | /user_button | состояние кнопки питания и пользовательской кнопки |
Подробное описание каждой группы приведено ниже.
Топики камеры
Топики, связанные с получением и передачей видеопотока с USB-камеры:
/camera1
/camera1/image_raw
/camera1/image_compressed
/camera1/camera_info
/camera1/compressedDepth
/camera1/image_raw/theora
/image_raw/zstd
Они используются для передачи изображений и параметров камеры. В большинстве случаев применяются топики /camera1/image_raw, /camera1/image_compressed и /camera1/camera_info.
Управление моторами
Для задания скоростей вращения каждого двигателя используются отдельные топики:
/m_vel1
/m_vel2
/m_vel3
/m_vel4
/m_vel5
/m_vel6
Тип сообщения:
std_msgs/msg/Float32
В эти топики публикуются значения скоростей, которые затем через ноду cyphal_bridge передаются на драйверы моторов.
Соответствие моторов:
- /m_vel1 – /m_vel3 — левая ось ровера (переднее, среднее, заднее)
- /m_vel4 – /m_vel6 — правая ось ровера (переднее, среднее, заднее)
Обратная связь от моторов
Каждый драйвер двигателя передаёт данные о текущей скорости вращения в соответствующий топик:
/m_odom1
/m_odom2
/m_odom3
/m_odom4
/m_odom5
/m_odom6
Тип сообщения:
std_msgs/msg/Float32
Эти данные используются для анализа состояния системы и расчёта одометрии.
Соответствие одометрии:
- /m_odom1 – /m_odom3 — левая ось ровера (переднее, среднее, заднее)
- /m_odom4 – /m_odom6 — правая ось ровера (переднее, среднее, заднее)
Одометрия робота
Положение ровера в пространстве публикуется в топик:
/odom_pose2d
Тип сообщения:
geometry_msgs/msg/Pose2D
Топик содержит координаты x, y и угол поворота θ, описывающие положение ровера в пространстве.

Данные IMU
Инерциальный датчик публикует данные в топик:
/bhi360/imu
Тип сообщения:
sensor_msgs/msg/Imu
Включает ускорения, угловые скорости и ориентацию робота.
Состояние батареи
Информация о питании доступна в топике:
/bat
Тип сообщения:
sensor_msgs/msg/BatteryState
Содержит данные о напряжении, токе и уровне заряда аккумулятора.
Джойстик
Данные от джойстика публикуются в топик:
/joy
Тип сообщения:
sensor_msgs/msg/Joy
Используется для передачи состояния кнопок и осей управления.
Команды движения
Команды движения ровера передаются через топик:
/cmd_vel
Тип сообщения:
geometry_msgs/msg/Twist
Топик используется для передачи целевой линейной и угловой скорости ровера. Нода /radiolink_control публикует в него команды, сформированные на основе данных джойстика, а нода /control_move подписывается на этот топик и рассчитывает скорости отдельных двигателей.
При управлении через веб-интерфейс команды движения также отправляются в /cmd_vel через rosbridge_server.
Кнопки питания и пользователя
Состояние кнопок ровера передаётся через топик:
/user_button
Тип сообщения:
cyphal_ros2_bridge/msg/PowerButtons
Сообщение содержит два логических поля:
emergency— состояние кнопки аварийного отключенияuser— состояние пользовательской кнопки
Получение информации о топиках
Для получения подробной информации о любом топике можно использовать команду:
ros2 topic info <имя_топика>
Например:
ros2 topic info /odom_pose2d
Это позволяет узнать тип сообщений, количество подписчиков и издателей, а также другие параметры топика.