В этом примере вы проходите процедуру для создания ROS пользовательские сообщения в MATLAB®using ROS Пользовательское дополнение сообщения. Это принимает, что вы уже прошли процесс установки, показанный в. Кроме того, у вас должен быть пакет ROS, который содержит необходимый msg
, srv
, и package.xml
файлы. Правильное содержимое файла и структура папок описаны в Пользовательском Содержимом сообщения. Эта структура папок следует стандартным соглашениям пакета ROS. Поэтому, если у вас есть какие-либо существующие пакеты, они должны совпадать с этой структурой.
Рекомендуется, чтобы вы запустили эту процедуру после открытия нового сеанса работы с MATLAB, чтобы гарантировать, что нет никаких непрекращающихся изменений в настройках MATLAB от предыдущей работы. После обеспечения, что ваш пользовательский пакет сообщения правилен, отметьте местоположение пути к папке. Затем вызовите rosgenmsg
с заданным путем и выполняют шаги выход в командном окне. Следующий пример имеет три сообщения, A
B
, и C
, это имеет зависимости друг от друга. Этот пример также иллюстрирует, что можно использовать папку, содержащую несколько сообщений, и сгенерировать их всех одновременно.
Настраивать пользовательские сообщения в MATLAB:
Откройте MATLAB на новом сеансе
Поместите свою пользовательскую папку сообщения в местоположение и отметьте путь к папке. В этом примере местоположение пакетов в качестве примера обеспечивается и копируется в userFolder
местоположение . Убедитесь что userFolder
директория существует до выполнения этого кода.
examplePackages = fullfile(fileparts(which('rosgenmsg')), 'examples', 'packages'); userFolder = 'c:\MATLAB\custom_msgs'; copyfile(examplePackages, userFolder)
Задайте путь к папке пользовательских сообщений.
folderpath = userFolder;
(Необязательно), Если у вас есть существующая рабочая область сережки (catkin_ws
), можно задать путь к его src
папка вместо этого. Однако эта рабочая область может содержать большое количество пакетов и обмениваться сообщениями, генерация будет запущена для всех них.
folderpath = fullfile('catkin_ws','src');
Задайте путь к папке для пользовательских файлов сообщений и вызовите rosgenmsg
создать пользовательские сообщения для MATLAB.
rosgenmsg(folderpath)
Checking subfolder "A" for custom messages. Checking subfolder "B" for custom messages. Checking subfolder "C" for custom messages. Building custom message files for the following packages: A B C Generating MATLAB classes for message packages in C:\MATLAB\custom_msgs\matlab_gen\jar Loading file A-1.0.jar. Generating MATLAB code for A/DependsOnB message type. Generating MATLAB code for B/Standalone message type. Loading file B-1.0.jar. Loading file C-1.0.jar. Generating MATLAB code for C/DependsOnB message type. To use the custom messages, follow these steps: 1. Edit javaclasspath.txt, add the following file locations as new lines, and save the file: C:\MATLAB\custom_msgs\matlab_gen\jar\A-1.0.jar C:\MATLAB\custom_msgs\matlab_gen\jar\B-1.0.jar C:\MATLAB\custom_msgs\matlab_gen\jar\C-1.0.jar 2. Add the custom message folder to the MATLAB path by executing: addpath('C:\MATLAB\custom_msgs\matlab_gen\msggen') savepath 3. Restart MATLAB and verify that you can use the custom messages. Type "rosmsg list" and ensure that the output contains the generated custom message types.
Если вы видите соблюдающее предупреждение
Objects of *** class exist - not clearing java
Попробуйте любой вызов rosgenmsg
в начале вашего сеанса работы с MATLAB или убеждаются, что никакие объекты Java не создаются ни с какими вызванными функциями запуска.
Затем следуйте за шагами 1-3 от выхода rosgenmsg
.
Нажмите javaclasspath.txt
соединитесь, чтобы открыть файл в Редакторе. Скопируйте и вставьте различное расположение файлов банки как новые строки в файле. Если этот файл не будет существовать, вам предложат создать его. Нажмите Yes и затем скопируйте и вставьте расположение файлов в javaclasspath.txt
.
javaclasspath.txt
выглядит так после добавления линий. Другие пути могут также уже существовать в этом файле.
Добавьте данные файлы в путь MATLAB путем выполнения addpath
и savepath
в Командном окне. Можно или подсветить показанные команды и нажать F9 или скопировать и вставить его в Окно Команды MATLAB.
addpath('C:\MATLAB\custom_msgs\matlab_gen\msggen')
savepath
Перезапустите MATLAB для изменений пути, которые будут применены. Можно затем использовать пользовательские сообщения как любые другие сообщения ROS, поддержанные в ROS Toolbox. Проверьте эти изменения любым вызовом rosmsg list
и ищите свои типы сообщений или используйте rosmessage
создать новое сообщение.
custommsg = rosmessage('B/Standalone')
custommsg = ROS Standalone message with properties: MessageType: 'B/Standalone' IntProperty: 0 StringPropert: '' Use showdetails to show the contents of the message
Эта итоговая верификация показывает, что вы выполнили пользовательский процесс генерации сообщения правильно. Можно теперь отправить и получить эти сообщения по использованию сети ROS MATLAB и Simulink®. Новые пользовательские сообщения могут использоваться как нормальные типы сообщений. Необходимо видеть, что они создают объекты, характерные для их типа сообщения, и отображены в рабочей области.
custommsg = rosmessage('B/Standalone'); custommsg2 = rosmessage('A/DependsOnB');
Пользовательские сообщения могут также использоваться с блоками Simulink ROS.
ros2genmsg
| rosAddons
| rosgenmsg