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

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

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

Пользовательское создание сообщения требует пакетов ROS, которые детализированы в Wiki 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 файлы, смотрите Создание сообщения ROS и srv и Определения Пользовательских сообщений на Wiki 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.

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

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

    clear classes
    rehash toolboxcache

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

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

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

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

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

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

Смотрите также

|

Похожие темы