exponenta event banner

Автоматическая парковка с ROS 2 в Simulink

В этом примере показано, как распределить приложение Automated Parking Valet между различными узлами сети ROS 2 в Simulink ® и развернуть их как автономные узлы ROS 2. Этот пример расширяет пример автоматической парковки (Automated Starking Valet, Automated Driving Toolbox) в Toolbox™ автоматизированного вождения. Используя модель Simulink в примере Automated Parking Valet in Simulink, настройте планировщик, контроллер и динамические параметры транспортного средства перед разделением модели на узлы ROS 2.

Предварительные условия: Автоматическая парковка (автоматизированная панель инструментов вождения), создание автономного узла ROS 2 от Simulink ®

Введение

Это автономное транспортное средство имеет следующие компоненты.

В этом примере основное внимание уделяется моделированию компонентов планирования, управления и транспортного средства. Для параметра «Локализация» в этом примере используются предварительно записанные данные карты локализации. Далее компонент Планирование разделяется на компоненты Планирование поведения и Планирование пути. В результате получается сеть ROS 2, состоящая из четырех узлов ROS 2: Behavioral Planner, Path Planner, Controller и Vehicle. На следующем рисунке показаны взаимосвязи между каждым узлом ROS 2 в сети и темами, используемыми в каждом узле.

Изучите узлы Simulink ROS 2 и возможности подключения

Наблюдайте за разделением компонентов на четыре отдельные модели Simulink. Каждая модель Simulink представляет узел ROS 2.

Узел транспортного средства

1. Откройте модель транспортного средства.

open_system('ROS2ValetVehicleExample');

2. Subscribe подсистема содержит блоки подписки ROS 2, считывающие входные данные из узла контроллера.

3. Vehicle model подсистема содержит блок модели велосипеда (Automated Driving Toolbox), Vehicle Body 3DOF, для моделирования эффектов контроллера транспортного средства и передачи информации о транспортном средстве по сети АФК 2 через блоки публикации АФК 2 в Publish подсистема.

Узел поведенческого планировщика

1. Откройте модель поведенческого планировщика.

open_system('ROS2ValetBehavioralPlannerExample');

2. Эта модель считывает текущую информацию о транспортном средстве из сети АФК 2, посылает следующую цель и проверяет, достигло ли транспортное средство конечной позы сегмента с помощью rosAutomatedValetHelperGoalChecker.

3. Behavioral Planner and Goal Checker подсистема запускается, когда новое сообщение доступно /currentvel или /currentpose.

4. Модель отправляет статус, если транспортное средство достигло конечной цели парковки с помощью /reachgoal раздел, в котором используется std_msgs/Bool тип сообщения. Все модели прекращают моделирование, когда это сообщение true.

Узел планировщика путей

1. Откройте модель планировщика путей.

open_system('ROS2ValetPathPlannerExample');

2. Эта модель планирует возможный путь через карту среды с помощью pathPlannerRRT (Automated Driving Toolbox) объект, который реализует оптимальный алгоритм быстрого исследования случайного дерева (RRT *) и отправляет план контроллеру по сети ROS 2.

3. Path Planner подсистема запускается, когда новое сообщение доступно на /plannerConfig или /nextgoal темы.

Узел контроллера

1. Откройте модель контроллера транспортного средства.

open_system('ROS2ValetControllerExample');

2. Эта модель вычисляет и посылает команды управления и скорости по сети ROS 2.

3. Подсистема контроллера запускается при появлении нового сообщения на /velprofile тема.

Моделирование узлов ROS 2 для проверки секционирования

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

1. Загрузите предварительно записанные данные карты локализации в базовое рабочее пространство MATLAB с помощью exampleHelperROSValetLoadLocalizationData функция помощника.

exampleHelperROSValetLoadLocalizationData;

2. Откройте расчетную модель.

open_system('ROS2ValetSimulationExample.slx');

В левой области выбора парковки можно также выбрать точку. Местом парковки по умолчанию является шестое место в верхнем ряду.

3. На вкладке МОДЕЛИРОВАНИЕ (SIMULATION) щелкните Выполнить из раздела SIMULATE (Run from SIMULATE) или выполните sim('ROS2ValetSimulationExample.slx') в окне команд MATLAB. Откроется рисунок, на котором показано, как транспортное средство отслеживает контрольный путь. Синяя линия представляет опорную траекторию, а красная - фактическую траекторию, пройденную транспортным средством. Моделирование для всех моделей останавливается, когда транспортное средство достигает конечного места стоянки.

sim('ROS2ValetSimulationExample.slx');

Результаты моделирования

Visualization подсистема в модели транспортного средства генерирует результаты для этого примера.

open_system('ROS2ValetVehicleExample/Vehicle model/Visualization');

VisualizePath Блок отвечает за создание и обновление графика путей транспортного средства, показанных ранее. В области отображаются команды скорости транспортного средства и рулевого управления.

open_system("ROS2ValetVehicleExample/Vehicle model/Visualization/Commands")

Развертывание узлов ROS 2

Создание приложений ROS 2 для Behavioral Planner, Path planner и Controller узлы. Моделирование Vehicle в MATLAB и сравните результаты с моделированием.

Создание и развертывание Behavioral Planner, Path Planner и Controller узловые приложения с использованием exampleHelperROS2ValetDeployNodes функция помощника. Вызов функции помощника slbuild Команда (Simulink) с именем модели Simulink в качестве входного аргумента для каждой модели, чтобы создать код C++ и развернуть приложение на хост-компьютере.

exampleHelperROS2ValetDeployNodes(); % generate C++ code and deploy the application for ROS 2 nodes
### Starting build procedure for: ROS2ValetBehavioralPlannerExample
### Generating code and artifacts to 'Model specific' folder structure
### Generating code into build folder: C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\ros-ex88924338\ROS2ValetBehavioralPlannerExample_ert_rtw
### Generated code for 'ROS2ValetBehavioralPlannerExample' is up to date because no structural, parameter or code replacement library changes were found.
### Evaluating PostCodeGenCommand specified in the model
### Using toolchain: Colcon Tools
### Building 'ROS2ValetBehavioralPlannerExample': all
Running colcon build in folder 'C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338'.Done.
Success
### Successfully generated all binary outputs.
### Successful completion of build procedure for: ROS2ValetBehavioralPlannerExample
### Creating HTML report file ROS2ValetBehavioralPlannerExample_codegen_rpt.html

Build Summary

Top model targets built:

Model                              Action         Rebuild Reason                           
===========================================================================================
ROS2ValetBehavioralPlannerExample  Code compiled  Compilation artifacts were out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 1m 32.504s
### Starting build procedure for: ROS2ValetPathPlannerExample
### Generating code and artifacts to 'Model specific' folder structure
### Generating code into build folder: C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\ros-ex88924338\ROS2ValetPathPlannerExample_ert_rtw
### Generated code for 'ROS2ValetPathPlannerExample' is up to date because no structural, parameter or code replacement library changes were found.
### Evaluating PostCodeGenCommand specified in the model
### Using toolchain: Colcon Tools
### Building 'ROS2ValetPathPlannerExample': all
Running colcon build in folder 'C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338'.Done.
Success
### Successfully generated all binary outputs.
### Successful completion of build procedure for: ROS2ValetPathPlannerExample
### Creating HTML report file ROS2ValetPathPlannerExample_codegen_rpt.html

Build Summary

Top model targets built:

Model                        Action         Rebuild Reason                           
=====================================================================================
ROS2ValetPathPlannerExample  Code compiled  Compilation artifacts were out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 1m 53.874s
### Starting build procedure for: ROS2ValetControllerExample
### Generating code and artifacts to 'Model specific' folder structure
### Generating code into build folder: C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\ros-ex88924338\ROS2ValetControllerExample_ert_rtw
### Generated code for 'ROS2ValetControllerExample' is up to date because no structural, parameter or code replacement library changes were found.
### Evaluating PostCodeGenCommand specified in the model
### Using toolchain: Colcon Tools
### Building 'ROS2ValetControllerExample': all
Running colcon build in folder 'C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338'.Done.
Success
### Successfully generated all binary outputs.
### Successful completion of build procedure for: ROS2ValetControllerExample
### Creating HTML report file ROS2ValetControllerExample_codegen_rpt.html

Build Summary

Top model targets built:

Model                       Action         Rebuild Reason                           
====================================================================================
ROS2ValetControllerExample  Code compiled  Compilation artifacts were out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 2m 1.851s

Откройте модель транспортного средства и запустите моделирование.

open_system("ROS2ValetVehicleExample"); 
set_param("ROS2ValetVehicleExample","SimulationCommand","start"); 

Убедитесь, что результаты моделирования совпадают с развернутыми узлами ROS 2.