exponenta event banner

ros2genmsg

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

Описание

ros2genmsg(folderpath) генерирует интерфейсы MATLAB ® для пользовательских сообщений ROS 2. Укажите путь к родительской папке, содержащей определения пользовательских сообщений как.msg файлы.

пример

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

Примечание

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

В системе должны быть установлены:

Примеры

свернуть все

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

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

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми 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 для генерации кода C++ для автономного узла ROS 2. Созданный код (архив .tgz) будет содержать определения для пользовательских сообщений, но не будет включать пакеты пользовательских сообщений ROS 2. При создании кода в месте назначения ожидается, что пользовательские пакеты сообщений будут доступны в рабочей области colcon, которая должна быть текущей рабочей папкой. Перед созданием созданного кода необходимо установить или скопировать пользовательский пакет сообщений в систему.

Компилятор MATLAB

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

Представлен в R2019b