这个例子说明了如何模拟和汽车车道保持辅助系统(LKA)控制器生成代码。
在这个例子中,您可以:
审查从车道检测和从模型预测控制工具箱™车道保持控制器处理数据组合的控制算法。
测试该控制系统中使用由自动驾驶工具箱™生成的合成数据的闭环Simulink模型。万博1manbetx
对于软件在环仿真配置代码生成设置,并自动生成控制算法的代码。
车道保持辅助系统(LKA)系统是有助于高速公路的标记车道内保持安全行驶的驾驶员的控制系统。该LKA系统检测时,从车道车辆偏离,并自动调整转向恢复本车道内适当的旅行没有从司机的额外投入。在这个例子中,LKA系统驾驶员转向命令和车道保持控制器之间切换。这种做法足以引入建模架构的LKA系统,然而实际的系统也将提供触觉反馈方向盘,使驾驶者通过施加足够的反扭矩覆盖LKA系统。
对于LKA正常工作,自身车辆必须确定车道边界,以及如何在它前面的曲线车道。理想化LKA设计主要依靠所预览的曲率,横向偏离,与车道的中心线与自身车辆之间的相对偏转角。这种系统的一个例子中给出车道保持辅助系统的使用模型预测控制(模型预测控制工具箱)。从先进的驱动辅助系统移动(ADAS)设计更多的自治系统,LKA用必须是强健的,从现实世界的车道探测器缺失,不完整,或不准确的测量读数。
这个实施例说明了健壮的方法给控制器设计时从车道检测的数据可能是不准确的。为了这样做,它从模拟由广角单眼视觉照相机引入的损伤的合成车道检测器使用的数据。所述控制器使决定时来自传感器的数据是无效的或范围外。这是由于在环境条件下,如在道路上的尖锐曲线提供了安全防护件,当传感器测量是假的。
要打开Simulink的万博1manbetx测试台模型,请使用以下命令。
open_system('LKATestBenchExample')
该模型包含两个主要的子系统:
车道保持辅助,其控制车辆的前转向角
车辆和环境子系统,其模型的自主车辆和模型环境的运动
打开这款机型还运行helperLKASetUp
脚本,初始化由该模型所使用的数据。通过Simulink模型所需要的脚本加载某些常量,如车辆模型参数,控制器的设计参数,路面情况和驾驶万博1manbetx路径。您可以绘制道路和驾驶模式将遵循的路径。
plotLKAInputs(场景,driverPath)
您可以通过启用车道保持辅助,并设置安全横向距离探索算法的行为。在Simuli万博1manbetxnk模型中,用户控件部,开关切换到上,并设置安全横向距离到1米。或者,启用车道保持辅助,并设置安全横向距离。
set_param('LKATestBenchExample /启用','值','1')set_param(“LKATestBenchExample /安全横向偏移”,'值','1')
要绘制模拟的结果,请使用鸟瞰范围。鸟瞰范围是模型级的可视化工具,您可以在Simulink工具条打开。万博1manbetx在模拟选项卡,在审查结果,点击鸟瞰范围。开放范围后,点击查找信号设置的信号。然后15秒运行模拟,探索鸟瞰范围的内容。
SIM('LKATestBenchExample',“停止时间”,'15')%模拟15秒
ANS = 万博1manbetxSimulink.SimulationOutput:logsout:[1x1的Simulink.SimulationData.Dataset] TOUT:[4685x1双] SimulationMetadata:[1x1的Simulink.SimulationMetadata]的ErrorMessage:为0x0字符]
鸟瞰范围示出从自身车辆的角度的道路的符号表示。在这个例子中,在鸟瞰范围呈现合成视觉检测器为阴影区域的覆盖区域。理想的车道标记附加地示出,以及在检测到的合成左和右车道边界(在此显示为红色)。
运行完整的模拟和探索的结果,请使用以下命令。
SIM('LKATestBenchExample')%至模拟场景的结束plotLKAResults(场景,logsout,driverPath)
驱动程序路径表明,分心驾驶可以驱动自身车辆到另一条车道时,道路曲率变化,蓝色曲线。与车道保持驾驶的红色曲线辅助显示,自车辆保持在其车道时,道路曲率变化。
要绘制控制器性能,使用下面的命令。
plotLKAPerformance(logsout)
上图显示了相对于自车辆的横向偏差。与LKA横向偏移为[-0.5,0.5]米之内。
中间图显示的相对偏航角。与LKA相对偏航角为[-0.15,0.15]弧度内。
下图显示了本车的转向角度。与LKA转向角内[-0.5,0.5]弧度。
查看控制器状态,使用下面的命令。
plotLKAStatus(logsout)
上图显示了左,右车道偏移。约5.5 S,19个S,31个S,33个S,横向偏移是由车道保持辅助的距离集合内。发生这种情况时,在检测车道偏离。
中间图显示了LKA地位和车道偏离的检测。出发检测状态与上图一致。该LKA开启检测车道偏离时,但控制返回到驱动程序后,当驾驶者可以正确地引导自身车辆。
下图显示了从驾驶员和LKA转向角。当从驱动器和LKA的转向角之间的差小,LKA释放控制到驱动器(例如,第9号第17之间)。
您可以修改安全侧向偏移量LKA忽略了驱动器的输入值,把控制器进入以下模式纯粹的车道。通过增加这个阈值,横向偏移总是由车道维持辅助的距离集中。因此,车道偏离的状态是和车道保持辅助控制需要所有的时间。
set_param(“LKATestBenchExample /安全横向偏移”,'值','2')SIM('LKATestBenchExample')%至模拟场景的结束
您可以使用以下命令探索模拟的结果。
plotLKAResults(场景,logsout)
该红色曲线显示,车道维持自身的协助能保持自身车辆沿其车道的中心线行驶。
使用下面的命令来描绘控制器性能。
plotLKAPerformance(logsout)
上图显示了相对于自车辆的横向偏差。与LKA横向偏移为[-0.1,0.1]米之内。
中间图显示的相对偏航角。与LKA相对偏航角为[-0.02,0.02]弧度内。
下图显示了本车的转向角度。与LKA转向角为[-0.04,0.04]弧度内。
查看控制器状态,使用下面的命令。
plotLKAStatus(logsout)
上图显示了左,右车道偏移。由于横向偏移是从来没有的车道保持的距离设定的范围内辅助,没有检测到车道偏离。
中间图显示,该LKA状态总是一个,那就是,车道维持辅助控制需要所有的时间。
下图显示了从驾驶员和LKA转向角。从司机的谈判转向角度弯道过于激进。从LKA小转向角就足够了该示例中的弯道。
该车道保持辅助模型包含四个主要部分:1)估计车道中心2)车道保持控制器3)检测车道偏离,和图4)应用协助。
open_system(“LKATestBenchExample /车道保持辅助”)
在检测车道偏离子系统输出信号当车辆太靠近检测的车道这是真的。你检测出发时车辆与车道边界之间的偏离车道传感器小于行车协助抵消输入。
的估计车道中央子系统从车道传感器的数据输出至车道保持控制器。本例中的检测器被配置为报告所述当前车道的左和右车道边界在摄像机的当前场的图。每个边界被模拟为曲线,其曲率的距离(回旋曲线)呈线性变化的长度。此数据馈送到控制器,由汽车的宽度和小的余量(1.8米总)偏移都朝向车道的中心的检测曲线。由检测的强度重量所得的各中心曲线和平均结果传递到控制器。另外,该估计车道中心子系统,用于输入车道保持控制器子系统提供的有限值。预览曲率提供自身车辆的车道曲率领先的中心线。在这个例子中,自身车辆可以向前看三秒钟,这是预测范围和采样时间的乘积。这种前瞻时间使控制器使用预览的信息来计算转向角为自身车辆,从而提高了MPC控制器的性能。
对车道维持控制器模块的目标是通过控制前轮转向角度,以保持车辆在其车道行驶,按弯路。这个目标是通过驱动侧向偏移实现和相对偏航角要小(参见下图)。
所述LKA控制器计算基于以下输入的自主车辆的转向角:
预览的曲率(从里检测项导出)
自主车辆纵向速度
横向偏差(来自里检测项导出)
相对偏航角(从里检测项导出)
考虑到自身车辆的物理限制,转向角被限制为在[-0.5,0.5]弧度。您可以更改预测水平或移动控制器行为滑块调整控制器的性能。
该应用辅助子系统决定是否车道维持控制器或驱动程序将自身车辆的控制。驾驶员指令转向和从车道保持控制器的辅助转向之间的子系统切换。检测车道偏离时,切换到辅助转向开始。当驾驶员再次在车道内开始转向控制返回到驾驶员。
车辆与环境子系统实现了车道保持的闭环仿真辅助控制。
open_system(“LKATestBenchExample /车辆和环境”)
车辆动态子系统模型的车辆动力学与车辆动力学模块库车身三自由度单轨块™。
该方案读卡器块生成基于车辆相对于场景的位置的理想左和右车道边界从场景文件中读取LKATestBenchScenario.mat
。
该视觉检测Generator模块需要从方案读卡器块理想车道的边界。检测发电机模型的视图单目摄像机的领域,并且确定方位角,曲率,曲率衍生物,和有效长度的每个道路边界,占任何其他障碍。
驾驶员子系统产生基于其在所创建的驱动器路径上的驱动器的转向角helperLKASetUp
。
该LKARefMdl
模型被配置成使用嵌入式编码的软件支持生成的C代万博1manbetx码。要检查是否有机会获得嵌入式编码器,运行:
hasEmbeddedCoderLicense =许可证('退房','RTW_Embedded_Coder')
您可以为模型中的C函数和运行探索代码生成报告:
如果hasEmbeddedCoderLicense rtwbuild('LKARefMdl')结束
您可以验证使用软件在环(SIL)模拟预期编译的C代码的行为。为了模拟LKARefMdl
在SIL模式参考模型,使用方法:
如果hasEmbeddedCoderLicense set_param(“LKATestBenchExample /车道保持辅助”,...'SimulationMode',“软件在环(SIL)”)结束
当您运行LKATestBenchExample
模型中,生成代码,编译,以及用于执行LKARefMdl
模型。这使您能够通过模拟测试编译代码的行为。
该示例示出了如何实现集成的车道保持辅助(LKA)控制器与车道检测弯路。它也示出了如何使用由自动驾驶工具箱生成的合成数据,以测试在Simulink控制器,组件化万博1manbetx它,并为它自动生成代码。
关所有bdclose所有