Доступные топики
На плате запущены Издатели и Подписчики, взаимодействующие с ROS через библиотеку rosserial. STM32 и Arduino не имеют собственного интерфейса USB, поэтому, для того, чтобы они могли общаться с Raspberry, на плате TurtleBoard установлены UART-USB преобразователи и USB-hub, которые позволяют обеспечить коммуникацию с микрокомпьютером с помощью всего лишь одного провода USB.
Контроллер платы turtlebro STM32 публикует в ROS Raspberry следующие топики, поддерживающие стандартные для ROS типы сообщений:

Топик /bat

Содержит данные о состоянии подключенной батарейки к плате. Тип сообщения sensor_msgs/BatteryState
1
std_msgs/Header header
2
uint32 seq
3
time stamp
4
string frame_id
5
float32 voltage
6
float32 current
7
float32 charge
8
float32 capacity
9
float32 design_capacity
10
float32 percentage
11
uint8 power_supply_status
12
uint8 power_supply_health
13
uint8 power_supply_technology
14
bool present
15
float32[] cell_voltage
16
string location
17
string serial_number
Copied!

Топик /cmd_vel

Топик управления перемещения роботом. Тип сообщения geometry_msgs/Twist При публикации данных в топик робот начинает движение. Робот выполняет последнюю полученную команду до тех пор, пока не получит новые данные. Поэтому, например, для остановки робота необходимо передать "нулевые" значения скорости.
1
geometry_msgs/Vector3 linear
2
float64 x
3
float64 y
4
float64 z
5
geometry_msgs/Vector3 angular
6
float64 x
7
float64 y
8
float64 z
Copied!

Топик /imu

Данные инерционного датчика (Inertial measurement unit), включающего в себя гироскоп, акселерометр и компас. Тип сообщения sensor_msgs/Imu
1
std_msgs/Header header
2
uint32 seq
3
time stamp
4
string frame_id
5
geometry_msgs/Quaternion orientation
6
float64 x
7
float64 y
8
float64 z
9
float64 w
10
float64[9] orientation_covariance
11
geometry_msgs/Vector3 angular_velocity
12
float64 x
13
float64 y
14
float64 z
15
float64[9] angular_velocity_covariance
16
geometry_msgs/Vector3 linear_acceleration
17
float64 x
18
float64 y
19
float64 z
20
float64[9] linear_acceleration_covariance
Copied!
Данные о ковариации не заполняются. Данные публикуются с частотой 20 Герц.
В связи с тем, что rviz по умолчанию некорректно отображает данные IMU, необходимо поставить соответствующий плагин для корректного отображения данных с IMU. Установка плагина осуществляется командой:
sudo apt install ros-noetic-rviz-imu-plugin
При добавлении визуализации данных в rviz необходимо выбрать тип сообщения rviz_imu_plugin->Imu

Топик /odom

Данные одометрии (положения робота, рассчитанного на основании вращения колес). В текущей версии повороты робота рассчитываются по данным IMU датчика, а перемещение на основе данных энкодеров на моторах. Тип сообщения nav_msgs/Odometry
1
std_msgs/Header header
2
uint32 seq
3
time stamp
4
string frame_id
5
string child_frame_id
6
geometry_msgs/PoseWithCovariance pose
7
geometry_msgs/Pose pose
8
geometry_msgs/Point position
9
float64 x
10
float64 y
11
float64 z
12
geometry_msgs/Quaternion orientation
13
float64 x
14
float64 y
15
float64 z
16
float64 w
17
float64[36] covariance
18
geometry_msgs/TwistWithCovariance twist
19
geometry_msgs/Twist twist
20
geometry_msgs/Vector3 linear
21
float64 x
22
float64 y
23
float64 z
24
geometry_msgs/Vector3 angular
25
float64 x
26
float64 y
27
float64 z
28
float64[36] covariance
Copied!

Топик /odom_pose2d

Упрощенные данные одометрии в 2d пространстве
1
float64 x
2
float64 y
3
float64 theta
Copied!

Топик /scan

Данные, полученные с лидара (облако точек). Данные идут через Serial интерфейс лидара, USB-UART преобразователь и через USB hub. Тип сообщения sensor_msgs/LaserScan .
1
std_msgs/Header header
2
uint32 seq
3
time stamp
4
string frame_id
5
float32 angle_min
6
float32 angle_max
7
float32 angle_increment
8
float32 time_increment
9
float32 scan_time
10
float32 range_min
11
float32 range_max
12
float32[] ranges
13
float32[] intensities
Copied!

Топик /raw_odom

Данные полученные энкодеров колес. Время, счетчик "тиков" и угол датчика IMU
1
turtlebro/RawOdom
2
3
uint64 timestamp
4
int32 left_ticks
5
int32 right_ticks
6
float32 theta
Copied!
Last modified 5d ago