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

Пользовательские сообщения являются пользовательскими сообщениями, что можно использовать, чтобы расширить набор типов сообщений, в настоящее время поддержанных в 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