В этом примере вы проходите процедуру для создания ROS пользовательские сообщения в MATLAB®. Это принимает, что вы уже прошли процесс установки, показанный в Дополнениях Robotics System Toolbox Установки. Кроме того, у вас должен быть пакет 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
выглядит так после добавляющих строк. Другие пути могут также уже существовать в этом файле.
Добавьте данные файлы в путь MATLAB путем выполнения addpath
и savepath
в командном окне. Можно или подсветить показанные команды и нажать F9 или скопировать и вставить его в Окно Команды MATLAB.
addpath('C:\MATLAB\custom_msgs\matlab_gen\msggen')
savepath
Перезапустите MATLAB для изменений пути, которые будут применены. Можно затем использовать пользовательские сообщения как любые другие сообщения ROS, поддержанные в Robotics System 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.