主要内容

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节点之间的关系以及每个ROS 2节点之间的关系。

探索Simulink R金宝appOS 2节点和连接

将组件的划分分为四个单独的Simulink模型。金宝app每个Sim金宝appulink模型代表ROS 2节点。

车辆节点

1.打开车辆模型。

open_system ('ros2valetvehicleexample');

2.这订阅子系统包含ROS 2订阅块读取输入数据控制器节点。

3.车型子系统包含A.自行车模型(自动驾驶工具箱)堵塞,车辆身体3自由度模拟车辆控制器效果,并通过ROS 2将车辆信息通过ROS 2网络发送发布块的发布子系统。

行为计划者节点

1.打开行为规划师模型。

open_system ('ros2valetbehavioralplannerexample');

2.此模型从ROS 2网络读取当前的车辆信息,发送下一个目标并检查车辆是否已使用段的最终姿势RosautomatedValethelpergoalchecker.

3.行为策划者目标检查员子系统在任何一种新消息时都会运行/ currentvel/湿润

4.如果车辆使用的是使用的车辆已达到最终停车目标,则该模型发送状态/达成目标Topic,它使用std_msgs / bool.消息类型。所有模型在此消息时停止模拟真正的

路径规划节点

1.打开路径计划模型。

open_system ('ros2valetpathplannernerexample');

2.此模型计划使用环境映射的可行路径pathPlannerRRT(自动驾驶工具箱)对象,该对象实现最佳迅速探索随机树(RRT *)算法,并通过ROS 2网络向控制器发送计划。

3.路径规划子系统在新消息时运行/ plannerConfig/ nextgoal.的话题。

控制器节点

1.打开车辆控制器模型。

open_system (“ROS2ValetControllerExample”);

2.该模型通过ROS 2网络计算并发送转向和速度指令。

3.控制器子系统在新消息上可用时运行/ velprofile话题。

模拟ROS 2节点以验证分区

验证将系统划分为4个ROS 2节点后,模型的行为保持不变。

1.使用Matlab基础工作区中的预先录制的本地化地图数据加载examplehelperrosvaletloadLocalizationData.辅助功能。

examplehelperrosvaletloadLocalizationData;

2.打开仿真模型。

open_system ('ros2valetsimulationexample.slx');

在左泊车选择区域,您还可以选择一个位置。默认停车位是顶行的第六点。

3.在SIMULATION选项卡中,单击模拟部分或跑步sim(“ROS2ValetSimulationExample.slx”)在MATLAB命令窗口。图打开并显示车辆如何跟踪参考路径。蓝色的线代表参考路径,而红色的线是车辆行驶的实际路径。仿真所有模型在车辆到达最终停车点时停止。

SIM('ros2valetsimulationexample.slx');

仿真结果

可视化车型中的子系统为此示例产生结果。

open_system ('ros2valetvehiclexample /车型/可视化');

V.isualizePath块负责创建和更新先前所示的车辆路径的曲线。车辆速度和转向命令显示在范围内。

open_system (“ROS2ValetVehicleExample /车辆模型/可视化/命令”的)

部署ROS 2节点

生成ROS 2申请行为规划师路径规划师控制器节点。模拟车辆MATLAB中的节点并将结果与​​仿真进行比较。

生成和部署行为规划师路径规划控制器节点应用程序使用exampleHelperROS2ValetDeployNodes辅助功能。辅助函数调用SLBUILD.(金宝appSimulink)命令,使用每个模型的Simulink模型名作为输入参数,生金宝app成c++代码并在主机上部署应用程序。

examplehelperros2valetdeploynode();%生成c++代码并为ROS 2节点部署应用程序
###启动构建过程:ROS2ValetBehavioralplannERExample ###生成代码和工件到“型号特定”文件夹结构###生成代码到构建文件夹:C:\用户\ Joshchen \ OnedRive  -  MathWorks \ Documents \ Matlab \ Mather \ ROS-ex88924338 \ ros2valetbehavioralplannerexample_ert_rtw
###为“ROS2ValetBehavioralPlannerExample”生成的代码是最新的,因为没有发现结构、参数或代码替换库更改。### #在C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ os-ex88924338文件夹中运行Colcon build成功生成所有二进制输出。### # Creating HTML report file ROS2ValetBehavioralPlannerExample_codegen_rpt.html build Summary模型重建行动的原因  =========================================================================================== ROS2ValetBehavioralPlannerExample编译的代码编译工件是过时了。### Build procedure for: ROS2ValetPathPlannerExample ### # generate code and artifacts to 'Model specific' folder structure ### #在Build folder中生成代码:C:\Users\joshchen\OneDrive - MathWorks\Documents\MATLAB\Examples\罗斯-ex88924338\ ros2valetpathplanannerexample_ert_rtw ###为' ros2valetpathplanannerexample '生成的代码是最新的,因为没有发现结构、参数或代码替换库的变化。### # Using toolchain: Colcon Tools ### # build ' ros2valetpathplanerexample ': all ' Running Colcon build in folder 'C:/Users/joshchen/OneDrive - MathWorks/Documents/MATLAB/Examples/ros-ex88924338'.完成。成功生成所有二进制输出。### # Creating HTML report file ROS2ValetPathPlannerExample_codegen_rpt.html build Summary 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”“开始”);

验证仿真结果与部署的ROS 2节点匹配。