在Simulink中使用ROS 2的自动泊车代客金宝app
本示例展示了如何在Simulink®中的ROS 2网络中的各个节点之间分发自动泊车代客应用程序,并将它们部署为独立的ROS 2节点。金宝app此示例扩展了自动代泊车员(自动驾驶工具箱)自动驾驶工具箱™中的示例。在Simulink的金宝app自动泊车代客示例中使用Simulink模型,在将模型划分为ROS 2节点之前,调优规划器、控制器和车辆动态参数。
先决条件:自动代泊车员(自动驾驶工具箱),从Simulink®生成一个独立的ROS 2节点金宝app
简介
这个自动驾驶汽车应用程序有以下组件。
这个示例主要模拟规划,控制和车辆组件。为本地化,本例使用预先记录的定位地图数据。的规划组件进一步分为行为计划而且路径规划组件。这就形成了一个由四个ROS 2节点组成的ROS 2网络:行为计划
,路径规划
,控制器
而且车辆
.下图显示了网络中每个ROS 2节点与每个节点中使用的主题之间的关系。
探索Simulink R金宝appOS 2节点和连接性
观察将组件划分为四个独立的Simulink模型。金宝app每个Sim金宝appulink模型代表一个ROS 2节点。
车辆节点
1.打开车辆模型。
open_system (“ROS2ValetVehicleExample”);
2.的订阅
子系统包含ROS 2订阅控件中读取输入数据的控制器节点。
3.的
汽车模型
子系统包含自行车模型(自动驾驶工具箱)块,车身3DOF
,模拟车辆控制器效果,并通过ros2网络将车辆信息发送到ros2网络发布块的发布
子系统。
行为规划节点
1.打开行为计划器模型。
open_system (“ROS2ValetBehavioralPlannerExample”);
2.该模型从ROS 2网络读取当前车辆信息,发送下一个目标,并检查车辆是否已经达到使用的段的最终姿态rosAutomatedValetHelperGoalChecker
.
3.的行为
规划师
而且
目标
检查程序
子系统在其中一个上有新消息时运行/ currentvel
或/ currentpose
.
4.模型发送状态,如果车辆已达到最终停车目标使用/ reachgoal
主题,该主题使用std_msgs / Bool
消息类型。当此消息为时,所有模型停止模拟真正的
.
路径规划节点
1.打开路径规划器模型。
open_system (“ROS2ValetPathPlannerExample”);
2.该模型通过环境地图规划一条可行的路径pathPlannerRRT
(自动驾驶工具箱)对象,该对象实现了最优快速搜索随机树(RRT*)算法,并通过ROS 2网络将计划发送到控制器。
3.的路径规划
子系统在有新消息可用时运行/ plannerConfig
或/ nextgoal
的话题。
控制器节点
1.打开车辆控制器模型。
open_system (“ROS2ValetControllerExample”);
2.该模型通过ROS 2网络计算并发送转向和速度命令。
3.控件上有新消息可用时,Controller子系统将运行/ velprofile
的话题。
模拟ROS 2节点以验证分区
在将系统划分为4个ROS 2节点后,验证模型的行为保持不变。
1.加载预记录的定位地图数据在MATLAB基础工作空间使用exampleHelperROSValetLoadLocalizationData
helper函数。
exampleHelperROSValetLoadLocalizationData;
2.打开仿真模型。
open_system (“ROS2ValetSimulationExample.slx”);
在左侧的停车选择区,您也可以选择一个车位。默认的停车位是第一行的第6个位置。
3.在“仿真”页签中,单击运行从模拟分段或运行sim(“ROS2ValetSimulationExample.slx”)
在MATLAB命令窗口中。一个图形打开并显示车辆如何跟踪参考路径。蓝线代表参考路径,红线是车辆实际行驶的路径。所有模型的仿真都在车辆到达最终停车点时停止。
sim卡(“ROS2ValetSimulationExample.slx”);
仿真结果
的可视化
车辆模型中的子系统为本例生成结果。
open_system (“ROS2ValetVehicleExample /车辆模型可视化”);
visualizePath
Block负责创建和更新前面所示的车辆路径图。车辆速度和转向命令显示在一个范围内。
open_system (“ROS2ValetVehicleExample /车辆模型/可视化/命令”)
部署ROS 2节点
生成ROS 2应用程序行为计划
,路径规划
而且控制器
节点。模拟车辆
节点,并与仿真结果进行比较。
生成和部署行为计划
,路径规划
而且控制器
节点应用程序使用exampleHelperROS2ValetDeployNodes
helper函数。helper函数调用slbuild
(金宝app模型)命令,并将Simulink模型的名称作为每个模型的输入参数金宝app,以生成c++代码并将应用程序部署到主机上。
exampleHelperROS2ValetDeployNodes ();%生成c++代码并为ROS 2节点部署应用程序
将代码生成到构建文件夹:C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\ros-ex88924338\ROS2ValetBehavioralPlannerExample_ert_rtw
为“ROS2ValetBehavioralPlannerExample”生成的代码是最新的,因为没有发现结构、参数或代码替换库更改。在“C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338”文件夹中运行Colcon build。完成。成功生成所有二进制输出。成功完成的构建过程:ROS2ValetBehavioralPlannerExample创建HTML报告文件ROS2ValetBehavioralPlannerExample_codegen_rpt.html构建摘要顶级模型目标构建:模型动作重建原因=========================================================================================== ROS2ValetBehavioralPlannerExample代码编译工件已过时。1 / 1模型构建(0模型已经更新)构建持续时间:0h 1m 32.504s开始构建过程:ROS2ValetPathPlannerExample生成代码和工件到“模型特定”文件夹结构C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\ros-ex88924338\ROS2ValetPathPlannerExample_ert_rtw ###为“ROS2ValetPathPlannerExample_ert_rtw”生成的代码是最新的,因为没有发现结构、参数或代码替换库更改。在“C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338”文件夹中运行Colcon构建。完成。成功生成所有二进制输出。成功完成构建过程:ROS2ValetPathPlannerExample创建HTML报告文件ROS2ValetPathPlannerExample_codegen_rpt.html构建摘要构建的顶级模型目标:模型动作重建原因===================================================================================== ROS2ValetPathPlannerExample代码编译工件已过时。1 / 1模型构建(0模型已经更新)构建持续时间:0h 1m 53874 s开始构建过程:ROS2ValetControllerExample生成代码和工件到“模型特定”文件夹结构生成代码到构建文件夹: 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”,“开始”);
验证仿真结果与已部署的ROS 2节点相匹配。