В этом примере показано, как распределить приложение 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.