Сообщения
Сообщение представляет собой структуру данных, которая используется при обмене информацией между нодами.
Топики (Topic), службы (Services) и Действия (Actions) используют сообщения для взаимодействия между собой. Сообщения могут включать в себя как базовые типы (целое число, число с плавающей точкой, логические и т.д.), так и массивы сообщений.
Помимо этого, сообщения могут инкапсулировать в себе другие существующие типы сообщений и специальные заголовки.
Сообщения описываются в файлах .msg
как пары значений: тип поля и имя поля.
Для реального примера сообщение может выглядеть так:
Мы описали сообщение, содержащее две переменных типа int32
с именами x
и y
Базовые типы ROS
Типы данных ROS не заимствованы напрямую ни из одного из языков. В момент "сборки" происходит преобразование типа ROS к типу используемого языка.
В таблице ниже описаны базовые типы ROS и их представление в языках С++ и 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
Отдельно стоит отметить типы данных
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
и Quaternion
- это существующие типы сообщений.
Если рассмотреть сообщение geometry_msgs/Pose
в развернутом виде, то мы увидим структуру:
Консольная утилита rosmsg
rosmsg
- это удобный инструмент командной строки, который предоставляют справочную информацию для разработчиков, а также служит мощным средством анализа для получения дополнительной информации о данных, передаваемых в ROS.
Например, если вы используете сообщение в своем коде, вы можете выполнить rosmsg show
в командной строке для получения списка полей, используемых в сообщении:
Команды консольной утилиты rosmsg
rosmsg
Last updated