ROS2与Matlab入门教程-Simulink中使用ROS2的自动泊车代客泊车
说明:
介绍如何在Simulink中的ROS2网络中的各个节点之间分发自动泊车代客泊车应用程序,并将它们部署为独立的ROS2节点
此示例扩展了自动驾驶工具箱中的自动泊车代客(自动驾驶工具箱)示例
使用 Simulink 示例中的自动泊车代客中的 Simulink 模型,在将模型划分为 ROS 2 节点之前调整规划器、控制器和车辆动态参数
介绍:
- 此自动驾驶汽车应用程序具有以下组件
此示例集中于模拟Planning、Control和Vehicle组件。对于Localization,此示例使用预先记录的本地化地图数据。
规划组件进一步分为行为规划器和路径规划器组件。这导致 ROS 2 网络由四个 ROS 2 节点组成:Behavioral Planner、 Path Planner和。下图显示了网络中每个 ROS 2 节点与每个节点中使用的主题之间的关系。ControllerVehicle
探索 Simulink ROS 2 节点和连接性,观察组件分成四个独立的 Simulink 模型。每个 Simulink 模型代表一个 ROS 2 节点
车辆节点
- 打开车辆模型
open_system( 'ROS2ValetVehicleExample' );
子系统包含从控制器节点读取输入数据Subscribe 的 ROS 2订阅模块
Vehicle model子系统包含一个Bicycle Model (Automated Driving Toolbox)模块,Vehicle Body 3DOF用于模拟车辆控制器效果并通过子系统中的 ROS 2 Publish 模块通过 ROS 2 网络发送车辆信息
行为规划器节点
- 打开行为规划模型
open_system( 'ROS2ValetBehavioralPlannerExample' );
该模型从 ROS 2 网络中读取当前车辆信息,发送下一个目标并检查车辆是否已经到达该路段的最终位姿rosAutomatedValetHelperGoalChecker
Behavioral Planner and Goal Checker当新消息在/currentvel或上可用时,子系统运行/currentpose
如果车辆已达到最终停车目标,模型会使用/reachgoal主题发送状态,该主题使用std_msgs/Bool消息类型。当此消息为 时,所有模型都停止仿真true
路径规划器节点
- 打开路径规划器模型
open_system( 'ROS2ValetPathPlannerExample' );
该模型使用(Automated Driving Toolbox)对象通过环境地图规划一条可行路径,该对象实现了最优快速探索随机树(RRT*)算法,并通过ROS 2网络将规划发送给控制器
Path Planner子系统在有新消息可用时运行/plannerConfig或/nextgoal主题
控制器节点
- 打开车辆控制器模型
open_system( 'ROS2ValetControllerExample' );
该模型通过 ROS 2 网络计算并发送转向和速度命令
当主题上有新消息可用时,控制器子系统运行/velprofile
模拟 ROS 2 节点以验证分区
在将系统划分为四个 ROS 2 节点后,验证模型的行为是否保持不变
exampleHelperROSValetLoadLocalizationData1. 使用辅助函数 将预先记录的定位地图数据加载到 MATLAB 基础工作区中
exampleHelperROSValetLoadLocalizationData;
- 打开仿真模型
open_system( 'ROS2ValetSimulationExample.slx' );
在左侧停车选择区域,您还可以选择一个地点。默认停车位是顶行的第六个停车位
在 SIMULATION 选项卡中,单击Run from 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节点生成ROS 2 应用程序。在 MATLAB 中对节点进行仿真,并将结果与仿真进行比较。Path plannerControllerVehicle
使用辅助函数生成和部署Behavioral Planner,Path Planner以及Controller节点应用程序。exampleHelperROS2ValetDeployNodes辅助函数以 Simulink 模型的名称作为输入参数调用(Simulink)命令,为每个模型生成 C++ 代码并在主机上部署应用程序
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 节点是否匹配
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号