Система сообщений ROS
Первое фундаментальное понятие, с которым нам надо познакомиться, это Сообщение. Создавая любую программу, мы рано или поздно начинаем сталкиваться с обменом данных между разными модулями программы, обычно эти вопросы решаются с применением типов или структур данных.
В ROS - данные, которые мы хотим передавать или получать, объединяются одной конкретной сущностью - Сообщение (message).
Например, если мы говорим "мы получаем данные датчика температуры", то в логике ROS это означает что мы получаем сообщение, содержащие данные о температуре, передаваемые в соответствующий топик, нодой датчика температуры.
Важно уточнить, что любое сообщение описывает определенный и заранее заданный набор данных - структуру, и их тип. Для сообщений от датчика температуры, мы можем представить данные и их тип как одну переменную типа float. В общем случае сообщения могут содержать довольно сложные структуры данных, и также включать в себя "другие" сообщения.
Типовые сообщения ROS, находятся в пакете std_msgs. Мы можем посмотреть все типы сообщений этого пакета.
rosmsg package std_msgs
====
std_msgs/Bool
std_msgs/Byte
std_msgs/ByteMultiArray
std_msgs/Char
std_msgs/ColorRGBA
std_msgs/Duration
std_msgs/Empty
std_msgs/Float32
.....
std_msgs/UInt8
std_msgs/UInt8MultiArray
Все сообщения доступные в системе, мы можем посмотреть командой
rosmsg list
Посмотреть информацию о структуре сообщения возможно используя параметр info и имя типа сообщения. Для данных датчика IMU (инерциальный датчик) мы получим структуру сообщения как представлено ниже.
rosmsg info sensor_msgs/Imu
====
std_msgs/Header header
uint32 seq
time stamp
string frame_id
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity
float64 x
float64 y
float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration
float64 x
float64 y
float64 z
float64[9] linear_acceleration_covariance
Более детально о сообщениях можно прочитать в книге Введение в ROS http://docs.voltbro.ru/starting-ros/messaging/message.html