В этом примере показано, как распределить Автоматизированное приложение Камердинера Парковки среди различных узлов в сети ROS 2 в Simulink® и развернуть их как автономный ROS 2 узла. Этот пример расширяет Автоматизированного Камердинера Парковки (Automated Driving Toolbox) пример в Automated Driving Toolbox™. Используя модель Simulink в Автоматизированном Камердинере Парковки в примере Simulink, настройте планировщика, диспетчера и транспортное средство динамические параметры прежде, чем разделить модель в ROS 2 узла.
Необходимые условия: автоматизированный камердинер парковки (Automated Driving Toolbox), сгенерируйте автономный узел ROS 2 от Simulink®
Это автономное приложение транспортного средства имеет следующие компоненты.
Этот пример концентрируется на симуляции Планирования, Управления и компонентов Транспортного средства. Для Локализации этот пример использует записанные заранее данные о карте локализации. Компонент Планирования далее разделен на планировщика Поведения и компоненты Планировщика Пути. Это приводит к сети ROS 2, состоявшей из четырех ROS 2 узла: Behavioral Planner
, Path Planner
Контроллер
и Vehicle
. Следующий рисунок показывает отношения между каждым узлом ROS 2 в сети и темами, используемыми в каждом.
Наблюдайте деление компонентов в четыре отдельных модели Simulink. Каждая модель Simulink представляет узел ROS 2.
1. Откройте модель транспортного средства.
open_system('ROS2ValetVehicleExample');
2. Subscribe
подсистема содержит ROS 2, Подписывают блоки, которые читают входные данные из узла Контроллера.
3. Vehicle model
подсистема содержит блок Bicycle Model (Automated Driving Toolbox), Vehicle Body 3DOF
, чтобы симулировать контроллер транспортного средства, эффекты и отправляют, информация о транспортном средстве по сети ROS 2 через ROS 2 Публикуют блоки в Publish
подсистема.
1. Откройте поведенческую модель планировщика.
open_system('ROS2ValetBehavioralPlannerExample');
2. Эта модель считывает текущие информации транспортного средства из сети ROS 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 узла.
1. Загрузите записанные заранее данные о карте локализации в базовом рабочем пространстве MATLAB с помощью exampleHelperROSValetLoadLocalizationData
функция помощника.
exampleHelperROSValetLoadLocalizationData;
2. Откройте имитационную модель.
open_system('ROS2ValetSimulationExample.slx');
В левой области выбора парковки можно также выбрать место. Место для парковки по умолчанию является шестым пятном в верхней строке.
3. Во вкладке SIMULATION кликните по Запуску от раздела 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 приложения для Behavioral Planner
, Path planner
и Controller
узлы. Симулируйте Vehicle
узел в MATLAB и сравнивает результаты с симуляцией.
Сгенерируйте и разверните Behavioral Planner
, Path Planner
и Controller
приложения узла с помощью exampleHelperROS2ValetDeployNodes
функция помощника. Вызовы функции помощника 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 узлами.