exponenta event banner

Создание автономного узла ROS 2 из Simulink

®

В этом примере показано, как создать и построить автономный узел ROS 2 из модели Simulink ®. Модель настраивается для создания кода C++ для автономного узла ROS 2. Затем создайте и запустите узел ROS 2 на хост-компьютере .

Предпосылки

Настройка модели для создания кода

Настройте модель для генерации кода C++ для автономного узла ROS 2. Модель представляет собой пропорциональный контроллер, представленный в примере управления обратной связью робота с поддержкой ROS над ROS 2.

  • Откройте модель управления обратной связью робота, сконфигурированную для ROS 2. Также можно позвонить open_system("robotControllerROS2").

  • На вкладке ROS в разделе Prepare (Подготовка) выберите Hardware settings (Параметры оборудования). На панели «Hardware implementation» раздел «Hardware board settings» содержит настройки, относящиеся к сгенерированному пакету ROS 2, такие как информация, которая будет включена в package.xml файл. Изменить имя сопровождающего на ROS 2 Example User.

  • Для модели требуются массивы переменного размера. Чтобы включить этот параметр, проверьте сигналы переменного размера в разделе «Создание кода» > «Интерфейс» > «Программная среда».

  • На панели «Решатель» убедитесь, что для параметра «Тип решателя» задано значение «Фиксированный шаг», а для параметра «Фиксированный размер шага» - 0.05. В сгенерированном коде размер фиксированного шага определяет фактический временной шаг в секундах, который используется для цикла обновления модели (см. Выполнение кода, сгенерированного из модели (Simulink Coder)). Его можно сделать меньшим (например, 0,001 или 0,0001), но для текущих целей достаточно 0,05.

  • Нажмите кнопку ОК.

Создание узла C++ ROS 2

В этой задаче создается код для автономного узла ROS 2, автоматически создается и запускается на хост-компьютере.

  • В MATLAB ® измените текущую папку на папку с разрешением на запись.

  • На вкладке Моделирование (Simulation) в разделе Подготовка (Prepare) выберите пункт Панель инструментов ROS (ROS Toolbox) > Сеть ROS (ROS Network).

  • Установите идентификатор домена (ROS 2) сети ROS 2. В этом примере используется идентификатор домена 25.

  • На вкладке ROS в раскрывающемся списке Deploy (Развернуть) выберите Build & Run (Построить и выполнить). При обнаружении ошибок, связанных с несоответствием типов шин, закройте модель, очистите все переменные из базового рабочего пространства MATLAB и снова откройте модель. Щелкните ссылку Вид (View) Диагностика (Diagnostics) в нижней части панели инструментов модели, чтобы увидеть выходные данные процесса построения.

После завершения создания кода узел ROS 2, построенный в текущей рабочей папке, начинает запускаться автоматически. При работе в Windows ® открывается окно команды. Не закрывайте окно, но используйте Ctrl + C для завершения работы узла ROS 2.

Использовать ros2 node для перечисления всех работающих узлов используется сеть ROS 2. robotControllerROS2 должен находиться в отображаемом списке узлов.

ros2('node','list')
/robotControllerROS2
/ros_bridge

Убедитесь, что развернутый узел публикует данные по теме ROS 2. /cmd_vel, для управления движением моделируемого робота.

ros2('topic','list')
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/imu
/joint_states
/odom
/parameter_events
/rosout
/rosout_agg
/scan
/tf