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

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

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

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

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

Пользовательские сообщения ROS заданы в папках пакета ROS, которые содержат package.xml файл и дополнительный msg и srv директории. msg папка содержит все ваши пользовательские определения типа сообщения. Необходимо также добавить все определения типа службы поддержки srv папка. Например, пакет custom_robot_msgs имеет эту структуру папок и файловую структуру.

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

Во всех пакетах необходимо задать package.xml файл, который имеет следующее содержимое:

  • Имя — custom_robot_msgs

  • Версия — 1.1.01

  • Зависимость — message_generation

  • Другие зависимости от (дополнительных) пакетов сообщения — geometry_msgs, std_msgs

Вот демонстрационный package.xml файл с ранее показанным содержимым.

<package>
	<name>custom_robot_msgs</name>
	<version>1.1.01</version>
	
	<build_depend>message_generation</build_depend>
	<build_depend>geometry_msgs</build_depend>
	<build_depend>std_msgs</build_depend>
</package>			

Примечание

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

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

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

  • Пакеты 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 и package.xml) и преобразует каждый тип сообщения в рабочий код MATLAB. rosgenmsg функция будет искать .msg файлы в msg папка и для .srv файлы в srv папка. Этот код является группой классов, которые задают свойства сообщения, когда вы создаете новые пользовательские сообщения. Основная процедура берет пользовательские файлы сообщений и преобразует их в .jar файлы и затем создают программу MATLAB для каждой темы и сервиса. Не изменяйте .jar файлы, потому что MATLAB использует их внутренне.

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

  1. Добавьте местоположение файлов к javaclasspath.txt: Добавьте заданные пути как новые строки текста в javaclasspath.txt файл. Если этот файл не существует, сообщение в командном окне предлагает вам создавать его. Этот текстовый файл задает статический путь к классу для классов Java. Для получения дополнительной информации о пути к классу Java смотрите Путь к классу Java (MATLAB).

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

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

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

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

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

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

После создания ваших пользовательских файлов сообщений можно совместно использовать их с другими пользователями. Другие люди не должны вызывать rosgenmsg получить доступ к вашим сообщениям. Вместо этого чтобы совместно использовать ваши сообщения, получите доступ к _matlab_gen папка и выполняет те же три шага для определения путей, аналогичных описанному ранее. Если у вас есть доступ к этим файлам, или по сетевому или общему диску, добавьте matlab_gen/jar путь к папке к javaclasspath.txt файл и matlab_gen/msggen путь к пути MATLAB. После перезапуска MATLAB другие пользователи могут использовать пользовательские сообщения как любое другое сообщение ROS.

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

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

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

| |

Похожие темы