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

В этом примере вы проходите процедуру для создания ROS пользовательские сообщения в MATLAB®using ROS Пользовательское дополнение сообщения. Необходимо сначала установить дополнение с помощью rosAddons. Кроме того, у вас должен быть пакет ROS, который содержит необходимый msg, srv, и package.xml файлы. Правильное содержимое файла и структура папок описаны в Пользовательском Содержимом сообщения. Эта структура папок следует стандартным соглашениям пакета ROS. Поэтому, если у вас есть какие-либо существующие пакеты, они должны совпадать с этой структурой.

Рекомендуется, чтобы вы запустили эту процедуру после открытия нового сеанса работы с MATLAB, чтобы гарантировать, что нет никаких непрекращающихся изменений в настройках MATLAB от предыдущей работы. После обеспечения, что ваш пользовательский пакет сообщения правилен, отметьте местоположение пути к папке. Затем вызовите rosgenmsg с заданным путем и выполняют шаги выход в командном окне. Следующий пример имеет три сообщения, AB, и 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.

  1. Нажмите javaclasspath.txt соединитесь, чтобы открыть файл в Редакторе. Скопируйте и вставьте различное расположение файлов банки как новые строки в файле. Если этот файл не будет существовать, вам предложат создать его. Нажмите Yes и затем скопируйте и вставьте расположение файлов в javaclasspath.txt.

    javaclasspath.txt выглядит так после добавления линий. Другие пути могут также уже существовать в этом файле.

  2. Добавьте данные файлы в путь MATLAB путем выполнения addpath и savepath в Командном окне. Можно или подсветить показанные команды и нажать F9 или скопировать и вставить его в Окно Команды MATLAB.

    addpath('C:\MATLAB\custom_msgs\matlab_gen\msggen')
    savepath
  3. Перезапустите 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.

Смотрите также

| |

Похожие темы