Сообщения

Сообщение представляет собой структуру данных, которая используется при обмене информацией между нодами.

Топики (Topic), службы (Services) и Действия (Actions) используют сообщения для взаимодействия между собой. Сообщения могут включать в себя как базовые типы (целое число, число с плавающей точкой, логические и т.д.), так и массивы сообщений.

Помимо этого, сообщения могут инкапсулировать в себе другие существующие типы сообщений и специальные заголовки.

Сообщения описываются в файлах .msg как пары значений: тип поля и имя поля.

fieldtype fieldname
fieldtype1 fieldname1

Для реального примера сообщение может выглядеть так:

int32 x
int32 y

Мы описали сообщение, содержащее две переменных типа int32 с именами x и y

Базовые типы ROS

Типы данных ROS не заимствованы напрямую ни из одного из языков. В момент "сборки" происходит преобразование типа ROS к типу используемого языка.

В таблице ниже описаны базовые типы ROS и их представление в языках С++ и Python

в ROS для C++ для Python
bool uint8_t bool
int8 int8_t int
uint8 uint8_t int
int16 int16_t int
uint16 uint16_t int
int32 int32_t int
uint32 uint32_t int
int64 int64_t long
uint64 uint64_t long
float32 float float
float64 double float
string std::string str
time ros::Time rospy.Time
duration ros::Duration rospy.Duration

Отдельно стоит отметить типы данных

в ROS для С++ для Python
fixed-length boost::array, std::vector tuple
variable-length std::vector tuple
uint8[] std::vector bytes
bool[] std::vector<uint8_t> list of bool

Наследование типов сообщений

Сообщения могут содержать не только базовые типы, но и переиспользовать уже созданные типы сообщений. Например, сообщение типа geometry_msgs/Pose описывается конфигурацией

Point position
Quaternion orientation

Где Point и Quaternion - это существующие типы сообщений.

Если рассмотреть сообщение geometry_msgs/Pose в развернутом виде, то мы увидим структуру:

geometry_msgs/Point position

  float64 x
  float64 y

float64 z

geometry_msgs/Quaternion orientation

  float64 x

  float64 y
  float64 z
  float64 w

Консольная утилита rosmsg

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

Например, если вы используете сообщение в своем коде, вы можете выполнить rosmsg show в командной строке для получения списка полей, используемых в сообщении:

$ rosmsg show sensor_msgs/CameraInfo

Header header
  uint32 seq
  time stamp
  string frame_id
uint32 height
uint32 width
RegionOfInterest roi
  uint32 x_offset
  uint32 y_offset
  uint32 height
  uint32 width
float64[5] D
float64[9] K
float64[9] R
float64[12] P

Команды консольной утилиты rosmsg

Commands:
    rosmsg show    Показать информацию о сообщении
    rosmsg info    Алиас для команды rosmsg show
    rosmsg list    Вывести все существующие типы сообщений
    rosmsg md5    Отобразить md5sum сообщения
    rosmsg package    Список всех сообщений в пакете
    rosmsg packages    Список пакетов, использующих сообщение

results matching ""

    No results matching ""