Пользовательские сообщения - это пользовательские сообщения, которые можно использовать для расширения набора типов сообщений, поддерживаемых в настоящее время в ROS Toolbox. При отправке и получении поддерживаемых типов сообщений использовать пользовательские сообщения не требуется. Для просмотра списка поддерживаемых типов сообщений вызовите rosmsg list в окне команд MATLAB ®.
Для создания пользовательского сообщения требуются пакеты ROS, подробные сведения о которых содержатся в вики-документах ROS в разделе Пакеты. После проверки наличия действительных пакетов ROS для пользовательских сообщений вызовите rosgenmsg с путем к файлу пользовательского пакета сообщений для создания кода MATLAB, необходимого для использования пользовательских сообщений. Пример создания пользовательского сообщения ROS в MATLAB см. в разделе Создание пользовательских сообщений из пакета ROS.
Если вы впервые используете пользовательские сообщения ROS, проверьте системные требования ROS.
Пользовательские сообщения ROS указываются в папках пакетов ROS, содержащих msg и srv каталоги.
Примечание
В любое время в пути MATLAB должна быть только одна папка пользовательских сообщений. Эта папка может содержать несколько пакетов. Рекомендуется хранить их все в одной уникальной папке.
msg содержит все пользовательские определения типов сообщений. Вы также должны добавить все пользовательские определения типов услуг в srv папка. Например, пакет custom_robot_msgs имеет эту папку и структуру файлов.

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