Пользовательские сообщения являются пользовательскими сообщениями, которые можно использовать для расширения набора типов сообщений, поддерживаемых в настоящее время в 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.
Добавьте расположение файлов классов в путь MATLAB: Использовать addpath
добавить новые местоположения файлов с расширением.m в путь MATLAB и использовать savepath
чтобы сохранить эти изменения.
Обновите все определения классов сообщений, что требует очистки рабочей области:
clear classes rehash toolboxcache
Проверьте доступность сообщений: Использовать
или rosmsg
списокrosmessage
чтобы проверить, доступны ли новые пользовательские сообщения.
Пример этой процедуры см. в разделе Создание пользовательских сообщений из пакета ROS. Этот пример использует выборку пользовательских файлов сообщений для создания пользовательских сообщений в MATLAB.
Эту процедуру необходимо выполнить только один раз для определенного набора пользовательских сообщений. После этого можно использовать новые пользовательские сообщения как любое другое сообщение ROS в MATLAB и воспользоваться полной функциональностью ROS, которую предоставляет ROS Toolbox. Повторите эту процедуру генерации при необходимости обновления или создания новых типов сообщений.
Необходимо сохранить путь MATLAB, содержащий директории файлов. Убедитесь, что путь MATLAB имеет только одну папку в то время, которая содержит пользовательские программные продукты сообщений.
Пользовательские типы сообщений и услуг могут использоваться с блоками ROS Simulink для генерации кода С++ для автономного узла ROS. Сгенерированный код (.tgz
archive) будет включать определения Simulink для пользовательских сообщений, но не будет включать пользовательские пакеты сообщений ROS. Когда сгенерированный код создается в целевой системе Linux, он ожидает, что пользовательские пакеты сообщений будут доступны в рабочей области catkin или на ROS_PACKAGE_PATH
. Перед созданием сгенерированного кода убедитесь, что вы либо установили, либо скопировали пользовательский пакет сообщений в систему Linux.