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