Поддержка пользовательских сообщений ROS

Обзор пользовательских сообщений

Пользовательские сообщения являются пользовательскими сообщениями, которые можно использовать для расширения набора типов сообщений, поддерживаемых в настоящее время в ROS Toolbox. При отправке и получении поддерживаемых типов сообщений использовать пользовательские сообщения не требуется. Чтобы просмотреть список поддерживаемых типов сообщений, вызовите rosmsg list в MATLAB® Командное окно.

Для создания пользовательских сообщений требуются пакеты ROS, которые подробно описаны в ROS Wiki at Packages. Убедившись, что у вас есть действительные пакеты ROS для пользовательских сообщений, вызовите rosgenmsg с путем файла к пользовательскому пакету сообщений, чтобы сгенерировать необходимый код MATLAB для использования пользовательских сообщений. Пример генерации пользовательского сообщения ROS в MATLAB см. в разделе Создание пользовательских сообщений из пакета ROS.

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

Пользовательское содержимое сообщения

Пользовательские сообщения ROS заданы в папках пакета ROS, которые содержат msg и srv директории.

Примечание

В любой момент на пути MATLAB должна быть только одна пользовательская папка сообщений. Эта папка может содержать несколько пакетов. Рекомендуется хранить их все в одной уникальной папке.

The msg папка содержит все пользовательские определения типов сообщений. Вы также должны добавить все пользовательские определения типов услуг к srv папка. Для примера, пакет custom_robot_msgs имеет эту папку и файловую структуру.

Пакет содержит один пользовательский тип сообщений в RobotTopic.msg и один пользовательский тип услуги в RobotService.srv. MATLAB использует эти файлы, чтобы сгенерировать необходимые файлы для использования пользовательских сообщений, содержащихся в пакете. Для получения дополнительной информации о создании msg и srv файлы см. в разделах Создание ROS msg и srv и Определение пользовательских сообщений в ROS Wiki. Синтаксис этих файлов описан на страницах, характерных для msg и srv.

Примечание

  • Вы должны иметь доступ на запись в папку пользовательских сообщений.

  • В любой момент на пути MATLAB должна быть только одна пользовательская папка сообщений. Эта папка может содержать несколько пакетов. Рекомендуется хранить их все в одной уникальной папке.

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

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

Когда определения сообщений ROS преобразуются в MATLAB, имена полей преобразуются в свойства объекта сообщения. Свойства объекта всегда начинаются с большой буквы и не содержат подчеркивания. Имена полей изменяются в соответствии с этим соглашением об именовании. Первая буква и первая буква после подчеркивания капитализируются с удаленными подчеркиваниями. Для примера, sensor_msgs/Image сообщение имеет следующие поля в ROS:

header
height
width
encoding
is_bigendian
step
data

Преобразованные свойства MATLAB:

Header
Height
Width
Encoding
IsBigendian
Step
Data

Это также отражается при использовании сообщений ROS в Simulink®. Шины сообщений ROS используют те же имена свойств, что и MATLAB.

Рабочий процесс создания пользовательских сообщений

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

rosgenmsg функция принимает пользовательские файлы сообщений (.msg и .srv) и преобразует каждый тип сообщения в рабочий код MATLAB. The rosgenmsg функция ищет .msg файлы в msg папка и для .srv файлы в srv папка. Этот код является группой классов, которые определяют свойства сообщений при создании новых пользовательских сообщений. Затем функция создает необходимые M-файлы MATLAB для различных классов сообщений.

После rosgenmsg функция создает эти файлы, вы должны добавить файлы классов к пути MATLAB. Эти шаги даются в виде приглашений в Командном окне MATLAB.

  1. Добавьте расположение файлов классов в путь MATLAB: Использовать addpath добавить новые местоположения файлов с расширением.m в путь MATLAB и использовать savepath чтобы сохранить эти изменения.

  2. Обновите все определения классов сообщений, что требует очистки рабочей области:

    clear classes
    rehash toolboxcache

  3. Проверьте доступность сообщений: Использовать rosmsg список или rosmessage чтобы проверить, доступны ли новые пользовательские сообщения.

Пример этой процедуры см. в разделе Создание пользовательских сообщений из пакета ROS. Этот пример использует выборку пользовательских файлов сообщений для создания пользовательских сообщений в MATLAB.

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

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

Генерация кода с пользовательскими сообщениями

Пользовательские типы сообщений и услуг могут использоваться с блоками ROS Simulink для генерации кода С++ для автономного узла ROS. Сгенерированный код (.tgz archive) будет включать определения Simulink для пользовательских сообщений, но не будет включать пользовательские пакеты сообщений ROS. Когда сгенерированный код создается в целевой системе Linux, он ожидает, что пользовательские пакеты сообщений будут доступны в рабочей области catkin или на ROS_PACKAGE_PATH. Перед созданием сгенерированного кода убедитесь, что вы либо установили, либо скопировали пользовательский пакет сообщений в систему Linux.

См. также

|

Похожие темы