ros2genmsg

Сгенерируйте пользовательские сообщения от ROS 2 определения

Описание

пример

ros2genmsg(folderpath) генерирует ROS 2 пользовательские сообщения в MATLAB® путем чтения ROS 2 пользовательские сообщения и сервисные определения в заданном пути к папке. Функция ожидает одну или несколько папок ROS 2 пакета в пути к папке. Эти пакеты содержат определения сообщения в .msg файлы и сервисные определения в .srv файлы.

После вызывания этой функции можно отправить и получить пользовательские сообщения в MATLAB как все другие поддерживаемые сообщения. Можно создать эти сообщения использование ros2message или просмотрите список сообщений путем вызова ros2 msg list.

Примечание

  • При генерации пользовательских сообщений для ROS 2 необходимо создать ROS 2 пакета. Это требует, чтобы у вас были CMake и компилятор C++ для вашей платформы. Для получения дополнительной информации смотрите Системные требования ROS

  • Пользовательские сообщения от ROS 2 определения должны быть регенерированы для каждого нового релиза.

ros2genmsg(folderpath,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Пользовательские сообщения являются пользовательскими сообщениями, что можно использовать, чтобы расширить набор типов сообщений, в настоящее время поддержанных в ROS 2. Если вы отправляете и получаете поддерживаемые типы сообщений, вы не должны использовать пользовательские сообщения. Чтобы видеть список поддерживаемых типов сообщений, вызовите ros2 msg list в Командном окне MATLAB®. Для получения дополнительной информации о поддерживаемых сообщениях ROS 2, смотрите работу с Основными сообщениями ROS 2.

Если это, если, в ваш первый раз работая с ROS 2 пользовательские сообщения, проверяйте Системные требования ROS.

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

Пользовательские сообщения ROS 2 заданы в папках ROS 2 пакета, которые содержат msg директория. msg папка содержит все ваши пользовательские определения типа сообщения. Например, пакет example_b_msgs, в custom папка, имеет ниже структуры папок и файловой структуры.

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

В этом примере вы проходите процедуру для создания ROS 2 пользовательские сообщения в MATLAB®. У вас должен быть пакет ROS 2, который содержит необходимый msg файл.

После обеспечения, что ваш пользовательский пакет сообщения правилен, отметьте местоположение пути к папке, и затем, вызовите ros2genmsg с заданным путем. Следующий пример предоставил трем сообщениям example_package_a, example_package_b, и example_package_c это имеет зависимости. Этот пример также иллюстрирует, что можно использовать папку, содержащую несколько сообщений, и сгенерировать их всех одновременно.

Чтобы настроить пользовательские сообщения в MATLAB, откройте MATLAB на новом сеансе. Поместите свою пользовательскую папку сообщения в местоположение и отметьте путь к папке. В этом примере пользовательская папка интерфейса сообщения присутствует в текущем каталоге. Если вы создаете пользовательские пакеты сообщения в отдельном месте, обеспечьте соответствующий путь к папке, которая содержит пользовательские пакеты сообщения.

folderPath = fullfile(pwd,"custom");
copyfile("example_*_msgs",folderPath);

Задайте путь к папке для пользовательских файлов сообщений и вызовите ros2genmsg создать пользовательские сообщения для MATLAB.

ros2genmsg(folderPath)
Identifying message files in folder 'U:/Documents/MATLAB/Examples/ros-ex44405863/custom'.Done.
Validating message files in folder 'U:/Documents/MATLAB/Examples/ros-ex44405863/custom'.Done.
[3/3] Generating MATLAB interfaces for custom message packages... Done.
Running colcon build in folder 'U:/Documents/MATLAB/Examples/ros-ex44405863/custom/matlab_msg_gen/win64'.
Build in progress. This may take several minutes...
Build succeeded.build log

Вызовите ros2 msg list проверять создание новых пользовательских сообщений.

Можно теперь использовать вышеупомянутое созданное пользовательское сообщение, когда стандарт обменивается сообщениями. Для получения дополнительной информации об отправке и получении сообщений, смотрите, обмениваются Данными с ROS 2 Издателя и Подписчики.

Создайте издателя, чтобы использовать example_package_b/Standalone сообщение.

node = ros2node("/node_1");
pub = ros2publisher(node,"/example_topic","example_b_msgs/Standalone");

Создайте подписчика по той же теме.

sub = ros2subscriber(node,"/example_topic");

Создайте сообщение и отправьте сообщение.

custom_msg = ros2message("example_b_msgs/Standalone");
custom_msg.int_property = uint32(12);
custom_msg.string_property='This is ROS 2 custom message example';
send(pub,custom_msg);
pause(3)    % Allow a few seconds for the message to arrive

Используйте LatestMessage поле, чтобы знать недавнее сообщение, полученное подписчиком.

sub.LatestMessage
ans = struct with fields:
       int_property: 12
    string_property: 'This is ROS 2 custom message example'

Удалите созданные объекты ROS.

clear node pub sub

Входные параметры

свернуть все

Путь к ROS соединяет интерфейсом с папкой, которая является родительской папкой пакетов сообщения ROS в виде строкового скаляра или вектора символов. Родительская папка должна содержать package.xml файл и папки пакета. Эти папки содержат /msg папка с .msg файлы для определений сообщения и /srv папка с .srv файлы для сервисных определений. Для получения дополнительной информации займитесь Интерфейсами ROS 2.

Пример: "/opt/ros2/dashing/share"

Типы данных: char | string

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'BuildConfiguration','fasterruns'

Конфигурация сборки в виде разделенной запятой пары, состоящей из 'BuildConfiguration' и вектор символов или строковый скаляр, содержащий 'fasterbuilds' или 'fasterruns'.

  • 'fasterbuilds' — Создайте библиотеки сообщения с оптимизацией компилятора в течение более коротких времен сборки.

  • 'fasterruns' — Создайте библиотеки сообщения с оптимизацией компилятора для более быстрого выполнения.

Пример: ros2genmsg("/opt/ros2/dashing/share",'BuildConfiguration','fasterruns')

Типы данных: char | string

Ограничения

Перезапустите узлы

  • После генерации пользовательских сообщений перезапустите любой существующий ROS 2 узла.

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

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

MATLAB Compiler

  • ROS 2 пользовательские сообщения и ros2genmsg функция не поддерживается с MATLAB Compiler™.

Введенный в R2019b