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

Этот пример посвящен симуляции компонентов планирования, управления и транспортного средства. Для Localization в этом примере используются предварительно записанные данные карты локализации. Компонент Planning далее разделяется на компоненты Behavior Planner и Path Planner. Это приводит к тому, что сеть ROS 2 состоит из четырех узлов ROS 2: Behavioral Planner, Path Planner, Controller и Vehicle. Следующий рисунок показывает отношения между каждым узлом ROS 2 в сети и темами, используемыми в каждом.

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

1. Откройте модель транспортного средства.
open_system('ROS2ValetVehicleExample'); 2. The Subscribe Подсистема содержит блоки ROS 2 Subscribe, которые считывают входные данные с узла Controller.
3. The Vehicle model подсистема содержит блок Bicycle Model (Automated Driving Toolbox), Vehicle Body 3DOF, чтобы симулировать эффекты контроллера транспортного средства и отправляет информацию о транспортном средстве по сети ROS 2 через блоки ROS 2 Publish в Publish подсистема.

1. Откройте модель планировщика поведения.
open_system('ROS2ValetBehavioralPlannerExample'); 2. Эта модель считывает текущую информацию о транспортном средстве из сети ROS 2, отправляет следующую цель и проверяет, достигло ли транспортное средство окончательного положения сегмента, используя rosAutomatedValetHelperGoalChecker.
3. The 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. The Path Planner подсистема запускается, когда новое сообщение доступно на /plannerConfig или /nextgoal темы.

1. Откройте модели контроллеров транспортного средства.
open_system('ROS2ValetControllerExample');2. Эта модель вычисляет и отправляет команды рулевого управления и скорости по сети ROS 2.
3. Подсистема Контроллера запусков, когда новое сообщение доступно на /velprofile тема.
Проверьте, что поведение модели остается неизменным после разбиения системы на четыре узла ROS 2.
1. Загрузите предварительно записанные данные карты локализации в базовом рабочем пространстве MATLAB с помощью exampleHelperROSValetLoadLocalizationData вспомогательная функция.
exampleHelperROSValetLoadLocalizationData;
2. Откройте симуляционную модель.
open_system('ROS2ValetSimulationExample.slx');В левой зоне выбора парковки можно также выбрать точку. Парковочным местом по умолчанию является шестое место в верхней строке.
3. На вкладке SIMULATION нажмите Run from SIMULATE, или run sim('ROS2ValetSimulationExample.slx') в Командном Окне MATLAB. Откроется рисунок, на котором показано, как транспортное средство отслеживает ссылку путь. Синяя линия представляет путь ссылки, в то время как красная линия является фактическим путем, пройденным автомобилем. Симуляция для всех моделей останавливается, когда транспортное средство достигает конечного места парковки.
sim('ROS2ValetSimulationExample.slx');
The Visualization подсистема в модели транспортного средства генерирует результаты для этого примера.
open_system('ROS2ValetVehicleExample/Vehicle model/Visualization');The v isualizePath блок отвечает за создание и обновление графика путей транспортных средств, показанных ранее. Команды скорости и рулевого управления транспортного средства отображаются в возможности.
open_system("ROS2ValetVehicleExample/Vehicle model/Visualization/Commands")
Сгенерируйте приложения ROS 2 для Behavioral Planner, Path planner и Controller узлы. Симулируйте Vehicle узел в MATLAB и сравните результаты с симуляцией.
Создавайте и развертывайте Behavioral Planner, Path Planner и Controller приложения узлов, использующие exampleHelperROS2ValetDeployNodes вспомогательная функция. Функция helper вызывает slbuild (Simulink) команда с именем модели Simulink в качестве входного параметра для каждой модели, чтобы сгенерировать код С++ и развернуть приложение на главном компьютере.
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.