Собственные типы сообщений

Ранее, когда мы работали с топиками, мы передавали между топиками данные в виде простых сообщений. Мы использовали уже созданные ранее типы сообщений или базовые типы например String, Int16 и т.п.

На этом уроке мы научимся создавать собственные типы сообщений и работать с ними.

Для того чтобы система смогла правильно распознать и использовать созданные сообщения, мы должны их правильно описать, и добавить генерацию необходимых файлов в процесс сборки нашего пакета.

Создание сообщения

Файл с сообщениями должен храниться в нашем пакете в директории msg и иметь название вида Name_of_your_message.msg.

Зайдем в директорию нашего пакета из прошлого урока ros_base и создадим директорию msg

cd ~/catkin_ws/src/base_ros
mkdir msg
cd msg

Далее создадим файл описывающий наше сообщение , например, для передачи данных барометрического датчика Barometer.msg

uint16  pressure
float32 temperature
float32 humidity

В этом файле мы причислили структуры данных нашего сообщения с параметрами для давления, температуры, и влажности.

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

Настройка сборщика

Опишем несколько шагов, которые нам необходимо выполнить для файла CMakeLists.txt

Подключить пакет message_generation. Этот пакет создаст необходимые файлы для разных языков для подключения сообщений.

find_package(catkin REQUIRED COMPONENTS
       rospy
       std_msgs
       message_generation   # добавить после всех пакетов
)

Добавить файл с нашим сообщением для обработки.

add_message_files(
      FILES
      Barometer.msg
    )

Дать команду перегенерации сообщений

generate_messages(
      DEPENDENCIES
      std_msgs
)

Добавить в подключаемые зависимости обработчик message_runtime

catkin_package(
      CATKIN_DEPENDS rospy message_runtime   # This will NOT be the only thing here
)

Проверить что файл package.xml содержит необходимые зависимости

<build_depend>message_generation</build_depend>
<build_depend>message_runtime</build_depend>
<exec_depend>message_runtime</exec_depend>
<exec_depend>message_generation</exec_depend>

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

cd ~/catkin_ws
catkin_make --pkg base_ros

После завершения установки пакета, мы можем проверить появилось ли наш тип сообщения в системе.

Для этого выполним команду вывода списка сообщений.

rosmsg list | grep Baro

base_ros/Barometer

Мы нашли наше сообщение, значит установка сообщения выполнена успешно.

Использование сообщений

Если мы хотим подключить этот тип сообщения в python скрипт, то делаем это следующим образом:

import rospy
from base_ros.msg import Barometer

Далее в самом python файле мы можем объявить эту структуру и использовать ее. Например:

bar = new Barometer()
bar.pressure = 10000

results matching ""

    No results matching ""