本例展示了如何模拟高速公路行驶场景下的自动变道机动系统。
自动变道机动(LCM)系统可以使车辆自动从一个车道移动到另一个车道。LCM系统建立了自动变道的纵向和横向控制动力学模型。LCM系统使用车载传感器感知最重要物体(mio)的环境,确定避开这些物体的最佳轨迹,并沿着这一轨迹驾驶自我飞行器。
这个例子展示了如何设计和测试LCM系统的规划器和控制器组件。在本例中,车道变更规划器使用来自场景的地面真相信息来检测mio。然后,它生成一个可行的轨迹来协商由变道控制器执行的变道。在这个例子中,你:
探索试验台模型-模型包含规划、控制、车辆动力学、场景和评估功能的指标。
模拟变道计划器-参考模型找到MIO,对自我飞行器的末端状态进行采样,并生成最优轨迹。
为变道控制器建模-该模型根据生成的轨迹为自我车辆生成控制命令。
模拟和可视化系统行为-试验台模型的配置是为了测试规划和控制的集成,以在有多辆车的弯曲道路上执行变道机动。
探索其他场景—这些场景是在额外的条件下测试系统。
您可以应用本例中使用的建模模式来测试您自己的LCM系统的计划器和控制器组件。
在本例中,您将使用系统级仿真试验台模型来探索变道机动系统的规划器和控制器组件的行为。
要探索测试台架模型,请打开项目示例文件的工作副本。MATLAB®将文件复制到示例文件夹,以便您可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneChange.zip”,“workDir”pwd);
打开系统级仿真试验台模型。
open_system (“HighwayLaneChangeTestBench”)
打开此模型将运行helperSLHighwayLaneChangeSetup
类初始化道路场景的脚本drivingScenario
基本工作区中的对象。它还配置规划器配置参数、控制器设计参数、车辆模型参数和定义输入和输出所需的Simulink®总线信号万博1manbetxHighwayLaneChangeTestBench
模型。
试验台模型包含以下子系统。
场景和环境——指定用于模拟的场景、车辆和地图数据的子系统。
规划配置参数-指定规划算法所需的配置参数的子系统。
高速公路变道规划器——实现高速公路变道规划算法的子系统。
变道控制器—指定路径跟随控制器的子系统,该控制器生成控制命令,使车辆沿着生成的轨迹行驶。
车辆动力学-为自我车辆指定动态模型的子系统。
度量评估——子系统,它指定度量来评估系统级行为。
车辆动力学子系统使用自行车模型并使用从变道控制器接收到的命令更新其状态。有关车辆动力学子系统的详细信息,请参见高速公路车道跟踪的例子。
场景和环境子系统使用场景的读者提供街区路网和车辆地面真实位置。该块还输出高速公路变道规划算法所需的地图数据。打开场景和环境子系统。
open_system ('HighwayLaneChangeTestBench/场景和环境')
的场景的读者块配置为读取drivingScenario
对象。它使用这个对象来读取参与者数据。它接收自我车辆信息来执行闭环仿真。该块在自我车辆坐标中输出车道和参与者的地面真实信息。的汽车走向世界块用于将目标车辆位置从车辆坐标转换为世界坐标。该子系统从基本工作空间读取地图数据,并输出有关车道和参考路径的信息。
Planner Configuration Parameters子系统使用常量块读取基本工作区变量,并使用总线创建者块构造总线结构。由该子系统创建的总线由变道规划器使用。
高速公路变道规划器参考模型使用世界坐标、地图数据和规划器配置参数中的地面真实参与者位置来执行自动变道机动的轨迹规划。
公路变道规划器参考模型实现了公路变道系统的主要算法。该模型使用Fernet坐标系找到自我飞行器周围的mio。随后,该模型对不同行为的终端状态进行采样,预测目标参与者的运动,并生成多个轨迹。最后,该模型评估生成轨迹的成本,并检查碰撞的可能性和运动的可行性,以估计最优轨迹。打开高速公路车道变更规划器参考模型。
open_system (“HighwayLaneChangePlanner”)
高速公路车道变更规划器模型包含以下块:
Frenet State Converter模块将场景中的自我车辆和其他车辆的姿态从世界坐标转换为Frenet坐标系。
Find MIOs块标识围绕自我载体的最重要对象(mio)。
终端状态采样器块对终端状态进行巡航控制、前车跟踪和变道行为的采样。运动预测模块预测mio的运动。
运动规划器参考模型从采样轨迹生成最优轨迹。该模型检查采样轨迹的成本、可行性和碰撞的可能性,以确定最佳轨迹。这个模块还计算自我飞行器在轨迹上的适当点。有关高速公路车道变更计划的更多信息,请参见为高速公路变道规划器生成代码。
变道控制器参考模型模拟了一种路径跟踪控制机制,使车辆沿着生成的轨迹行驶,同时跟踪设定的速度。为此,控制器调整了自我车辆的纵向加速度和前转向角。控制器计算最优控制动作,同时满足速度,加速度和转向角度约束使用自适应模型预测控制(MPC)。打开变道控制器参考模型。
open_system (“LaneChangeController”)
虚拟车道中心子系统从路径点创建一个虚拟车道。虚拟通道与路径跟随控制器块所需的格式匹配。
预览曲率子系统将轨迹转换为路径跟踪控制器块所需的曲率输入。
路径跟随控制器块使用路径跟踪控制系统(模型预测控制工具箱)模块从模型预测控制工具箱™。
路径跟踪控制器块保持车辆在高速公路的标记车道内行驶,同时保持用户设置的速度。该控制器包括自我车辆的纵向和横向联合控制:
纵向控制保持自我车辆的用户设置速度。
横向控制通过调整自身车辆的转向来保持自身车辆沿其车道的中心线行驶。
度量评估子系统使用下面提到的度量评估LCM系统的系统级行为。打开度量评估子系统。
open_system (“HighwayLaneChangeTestBench /指标评估”)
的DetectCollisionBlock检测自我车辆与其他车辆的碰撞,并在检测到碰撞时停止模拟。
的DetectLeadVehicle块计算自车与前车之间的距离,用于计算前车与前车之间的距离TimeGap价值。
的TimeGap数值计算使用距离领先车辆(车头时距)和自我车辆的纵向速度,并根据规定的限制进行评估。
的LongitudinalJerk数值是根据纵向速度计算的,并根据规定的限制进行评估。
的LateralJerk数值是根据规定的极限计算横向速度。
设置并运行HighwayLaneChangeTestBench仿真模型,以可视化的行为,系统在一个车道的变化。模型中的Visualization块创建了一个MATLAB图形,该图形显示了场景的追逐视图和顶视图,并绘制了场景中的自我车辆、采样轨迹、胶囊列表和其他车辆。配置HighwayLaneChangeTestBench模型来使用scenario_LC_15_StopnGo_Curved
场景。
helperSLHighwayLaneChangeSetup (“scenarioFcnName”,“scenario_LC_15_StopnGo_Curved”)
模拟模型5秒。变道规划器参考模型生成在场景中导航车辆的轨迹。要减少命令窗口输出,首先关闭MPC更新消息。
mpcverbosity (“关闭”);sim卡(“HighwayLaneChangeTestBench”,“StopTime”,“5”);
关闭该图形。
hLCPlot = findobj(“类型”,“图”,“名字”,“变道状态图”);如果~ isempty (hLCPlot)关闭(hLCPlot);结束
运行模拟8秒。变道规划器参考模型生成绕较慢的领先车辆导航的轨迹。
sim卡(“HighwayLaneChangeTestBench”,“StopTime”,“8”);
关闭该图形。
hLCPlot = findobj(“类型”,“图”,“名字”,“变道状态图”);如果~ isempty (hLCPlot)关闭(hLCPlot);结束
运行模拟18秒。变道规划器参考模型生成一个轨迹,将车辆导航到左车道,然后导航到右车道,以避免与缓慢移动的领头车辆相撞。观察自我车辆执行两次变道以避免碰撞,同时保持一个设定的速度。
Simout = sim(“HighwayLaneChangeTestBench”,“StopTime”,“18”);
关闭该图形。
hLCPlot = findobj(“类型”,“图”,“名字”,“变道状态图”);如果~ isempty (hLCPlot)关闭(hLCPlot);结束
在仿真过程中,模型将信号记录到基本工作空间为logsout
。属性可以分析模拟结果并调试系统行为中的任何故障helperAnalyzeLCSimulationResults
函数。该函数创建了一个MATLAB图形,并绘制了场景的跟踪视图。图中的滑块允许您选择所需的模拟步骤,以分析这些窗格中显示的不同参数:
追逐视图-显示场景的追逐视图,显示自我车辆,采样轨迹,胶囊列表,和其他车辆。
轨迹信息-显示采样轨迹的不同属性。突出显示的行使用与Chase View中相同的颜色编码显示了采样轨迹的类型。
绪的信息—显示已识别的mio的不同属性。该行的颜色与相应车辆的面部颜色相匹配。
模式-显示自我载具的选择行为。
自我速度-显示自我车辆的速度。单位是米每秒。
仿真步骤-显示使用滑块设置的模拟步长。
仿真时间-显示模拟步骤对应的时间。单位是米。
自我状态-显示自我车辆和已识别的领先车辆的参数。
计划参数—显示规划器的配置参数。
运行脚本并探索情节。
helperAnalyzeLCSimulationResults (simout.logsout);
在前一节中,您研究了scenario_LC_15_StopnGo_Curved
场景。方法兼容的场景列表如下HighwayLaneChangeTestBench
模型。
场景_lc_01_slowmoving场景_lc_02_slowmovingwithpassingcar场景_lc_03_disabledcar场景_lc_04_cutinwithbrake场景_lc_05_singlelanechange场景_lc_06_doublelanechange场景_lc_07_rightlanechange场景_lc_08_slowmovingcar_curved场景_lc_09_cutinwithbrake_curved场景_lc_10_singlelanechange_curved场景_lc_11_mergingcar_highwayentry场景_lc_12_cutincar_ushape场景_lc_14_doublelanechange_ushapescenario_LC_15_StopnGo_Curved(默认)
方法创建这些场景驾驶场景设计并导出到场景文件。检查每个文件中的注释,以获得关于每个场景中道路和车辆的更多细节。您可以配置HighwayLaneChangeTestBench
和工作区来模拟这些场景helperSLHighwayLaneChangeSetup
函数。例如,您可以为弯曲道路场景配置模拟。
helperSLHighwayLaneChangeSetup (“scenarioFcnName”,“scenario_LC_10_SingleLaneChange_Curved”);
这个例子展示了如何使用地面真实车辆位置来模拟高速公路变道机动。
再次启用MPC更新消息。
mpcverbosity (“上”);
trajectoryOptimalFrenet
(导航工具箱)