Перейти к основному содержимому

ROS-топики

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

Актуальный список доступных топиков можно получить командой:

ros2 topic list

Для базовой конфигурации BRover E5 список включает следующие основные топики.

Топики камеры

Топики, связанные с получением и передачей видеопотока с USB-камеры:

/camera1
/camera1/image_raw
/camera1/image_compressed
/camera1/compressedDepth
/camera1/image_raw/theora
/image_raw/zstd

Они используются для передачи изображений в различных форматах. В большинстве случаев применяются топики /camera1 и /camera1/image_raw, так как они содержат исходные данные изображения.

Управление моторами

Для задания скоростей вращения каждого двигателя используются отдельные топики:

/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

Используется для передачи состояния кнопок и осей управления.

Пользовательская кнопка

Состояние пользовательской кнопки передаётся через топик:

/user_button

Значения:

  • true — кнопка нажата
  • false — кнопка отпущена

Получение информации о топиках

Для получения подробной информации о любом топике можно использовать команду:

ros2 topic info <имя_топика>

Например:

ros2 topic info /odom_pose2d

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