Пользовательские сообщения являются пользовательскими сообщениями, что вы можете использоваться, чтобы расширить набор типов сообщений, в настоящее время поддержанных в ROS Toolbox. Если вы отправляете и получаете поддерживаемые типы сообщений, вы не должны использовать пользовательские сообщения. Чтобы видеть список поддерживаемых типов сообщений, вызовите rosmsg list
в MATLAB® Командное окно.
Пользовательское создание сообщения требует пакетов ROS, которые детализированы в Wiki ROS в Пакетах. После обеспечения, что у вас есть допустимые пакеты ROS для пользовательских сообщений, вызвать rosgenmsg
с путем к файлу к местоположению, содержащему пользовательские папки пакета сообщения, чтобы сгенерировать необходимый код MATLAB, чтобы использовать пользовательские сообщения. Для примера о том, как сгенерировать ROS пользовательское сообщение в MATLAB, смотрите, Создают Пользовательские сообщения из Пакета ROS.
Если это - ваш первый раз с помощью ROS пользовательские сообщения, проверяйте Системные требования ROS.
Пользовательские сообщения ROS заданы в папках пакета ROS, который содержит msg
, srv
, и action
директории.
Примечание
В любое время на пути MATLAB должна только быть одна пользовательская папка сообщений. Эта папка может содержать несколько пакетов. Рекомендуется, чтобы вы сохранили их всех в одной уникальной папке.
msg
папка содержит все ваши пользовательские определения типа сообщения. Необходимо также добавить все определения типа службы поддержки srv
папка и добавляет все определения типа пользовательского действия action
папка. Например, пакет custom_robot_msgs
имеет эту структуру папок и файловую структуру.
Пакет содержит один пользовательский тип сообщения в RobotTopic.msg
, один тип службы поддержки в RobotService.srv
, и одно пользовательское действие вводит в RobotAction.action
. MATLAB использует эти файлы, чтобы сгенерировать необходимые файлы для использования пользовательских сообщений, содержавшихся в пакете. Для получения дополнительной информации о создании msg
и srv
файлы, смотрите Создание сообщения ROS и srv и Определения Пользовательских сообщений на Wiki ROS. Синтаксис этих файлов описан на страницах, характерных для msg
и srv
. Для получения дополнительной информации о действиях ROS, см. Обзор Действий ROS.
Примечание
У вас должен быть доступ для записи к пользовательской папке сообщений.
В любое время на пути MATLAB должна только быть одна пользовательская папка сообщений. Эта папка может содержать несколько пакетов. Рекомендуется, чтобы вы сохранили их всех в одной уникальной папке.
Когда определения сообщения 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
, и .action
) и преобразует каждый тип сообщения в рабочий код MATLAB. rosgenmsg
функция ищет .msg
файлы в msg
папка, для .srv
файлы в srv
папка, и для .action
файлы в action
папка. Этот код является группой классов, которые задают свойства сообщения, когда вы создаете новые пользовательские сообщения. Функция затем создает необходимые 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 имеет только одну папку за один раз, которая содержит пользовательские артефакты сообщения.
Пользовательское сообщение, сервис и типы действия могут использоваться с блоками Simulink ROS для генерации Кода С++ для автономного узла ROS. Сгенерированный код (.tgz
архив), будет включать определения Simulink для пользовательских сообщений, но он не будет включать ROS пользовательские пакеты сообщения. Когда сгенерированный код будет создан в целевой Системе Linux, он ожидает, что пользовательские пакеты сообщения будут доступны в рабочей области сережки или на ROS_PACKAGE_PATH
. Убедитесь, что вы или устанавливаете или копируете пользовательский пакет сообщения в свою систему Linux прежде, чем создать сгенерированный код.