主要内容

车道保持辅助通道检测

这个例子展示了如何模拟和生成一个汽车车道保持辅助(LKA)控制器的代码。

在这个例子中,你:

  1. 审查从车道检测和从模型预测控制工具箱™车道保持控制器处理数据组合的控制算法。

  2. 使用自动化驱动工具箱™生成的合成数据在闭环Simulink®模型中测试控制系统。金宝app

  3. 对于软件在环仿真配置代码生成设置,并自动生成控制算法的代码。

介绍

车道保持辅助(LKA)系统是一种控制系统,有助于驾驶员在高速公路的标记车道内保持安全行驶。LKA系统检测车辆何时偏离车道并自动调节转向以恢复车道内的适当行程,而无需驾驶员的额外输入。在该示例中,LKA系统在驱动器转向命令和车道保持控制器之间切换。该方法足以引入LKA系统的建模架构,然而,真实系统还将向方向盘提供触觉反馈,并使驱动器通过施加足够的反扭矩来覆盖LKA系统。

为了让LKA正确地工作,自我车辆必须确定车道边界,以及它前面的车道如何转弯。理想的LKA设计主要依赖于预估的曲率、横向偏差和车道中心线与自我车辆之间的相对偏航角。文中给出了这样一个系统的例子基于模型预测控制的车道保持辅助系统(模型预测控制工具箱).从先进的驱动辅助系统移动(ADAS)设计更多的自治系统,LKA用必须是强健的,从现实世界的车道探测器缺失,不完整,或不准确的测量读数。

这个实施例说明了健壮的方法给控制器设计时从车道检测的数据可能是不准确的。为了这样做,它从模拟由广角单眼视觉照相机引入的损伤的合成车道检测器使用的数据。所述控制器使决定时来自所述传感器的数据是无效的或范围外。这是由于在环境条件下,如在道路上的尖锐曲线提供了安全防护件,当传感器测量是假的。

开放式试验台型号

要打开Simulink测金宝app试台模型,使用以下命令。

Open_System('lkatestbenchexample'的)

该模型包含两个主要子系统:

  1. 车道保持辅助,控制车辆的前转向角度

  2. 车辆和环境子系统,模拟自我车辆的运动和模型环境

打开此模型还可以运行helperLKASetUp脚本,该脚本初始化模型使用的数据。脚本加载Simulink模型所需的某些常量,如车辆模型参数、控制器设计参数、道路场景、驾驶员路径等金宝app。您可以绘制驾驶员模型将遵循的道路和路径。

plotLKAInputs(场景,driverPath)

模拟辅助分散注意力的司机

您可以通过启用车道保持辅助,并设置安全横向距离探索算法的行为。在Simuli金宝appnk模型中,用户控件节,切换到,并设置安全横向距离到1米。或者,使车道保持辅助并设置安全的横向距离。

set_param(“LKATestBenchExample /启用”'价值''1')set_param('lkatestbench表达/安全横向偏移''价值''1'的)

要绘制模拟结果,请使用鸟瞰的范围.鸟瞰范围是模型级的可视化工具,您可以在Simulink工具条打开。金宝app在这方面模拟选项卡,在审查结果, 点击鸟瞰的范围.打开作用域后,单击找到信号设置信号。然后运行模拟15秒,探索鸟瞰图的内容。

SIM('lkatestbenchexample'“StopTime”“15”的)%模拟15秒
假设对测量的输出通道#1没有增加任何干扰。——>假设添加到测量输出通道2上的输出扰动为集成白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量输出通道上都有白噪声。ans =仿金宝app真软件。模拟Output: logsout: [1x1 Simulink.SimulationData.Dataset] tout: [4680x1 double] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

鸟瞰镜从自我汽车的角度展示了道路的象征性代表。在本例中,鸟瞰镜将合成视觉检测器的覆盖区域渲染为阴影区域。另外还显示了理想的车道标记,以及综合检测的左右车道边界(在这里用红色表示)。

要运行完整的模拟并研究结果,请使用以下命令。

SIM('lkatestbenchexample'的)%模拟到方案结束plotlkaresults(方案,logsout,driverpath)
假设对测量的输出通道#1没有增加任何干扰。——>假设添加到测量输出通道2上的输出扰动为集成白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量输出通道上都有白噪声。

驱动程序路径表明,分心驾驶可以驱动自身车辆到另一条车道时,道路曲率变化,蓝色曲线。与车道保持驾驶的红色曲线辅助显示,自车辆保持在其车道时,道路曲率变化。

要绘制控制器性能,使用下面的命令。

plotLKAPerformance (logsout)

  • 上图显示了相对于自车辆的横向偏差。与LKA的横向偏差在[-0.5,0.5] m内。

  • 中间的图显示了相对偏航角。具有LKA的相对偏航角在[-0.15,0.15]中。

  • 下面的图显示了自我车辆的转向角度。LKA的转向角在[-0.5,0.5]rad范围内。

使用实例查询控制器状态。

plotLKAStatus(logsout)

  • 上面的图显示了左和右车道偏移。在5.5 s、19 s、31 s、33 s左右,横向偏移在车道保持辅助设置的距离内。当这种情况发生时,车道偏离被检测到。

  • 中间图显示了LKA状态和车道出发的检测。检测到的状态与顶部图一致。当检测到车道出发时,LKA导通,但是当驾驶员可以正确转向自助式车辆时,控制器稍后返回到驾驶员。

  • 底部图显示的方向盘角度从司机和LKA。当驾驶员与LKA的转向角度差很小时,LKA将控制权交给驾驶员(例如9 - 17秒)。

模拟后巷

您可以修改LKA的安全横向偏移的值以忽略驱动器输入,将控制器放入纯通道后模式。通过增加该阈值,横向偏移始终在车道保持辅助装置设定的距离内。因此,车道偏离的地位开启,车道保持辅助一直控制控制。

set_param('lkatestbench表达/安全横向偏移''价值'' 2 ')SIM('lkatestbenchexample'的)%模拟到方案结束
假设对测量的输出通道#1没有增加任何干扰。——>假设添加到测量输出通道2上的输出扰动为集成白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量输出通道上都有白噪声。

您可以使用以下命令探索模拟结果。

plotlkaresults(方案,logsout)

红色曲线表明,车道保持辅助自己可以让自我车辆沿着巷道的中心线行进。

使用如下命令描述控制器性能。

plotLKAPerformance (logsout)

  • 上图显示了相对于自车辆的横向偏差。与LKA横向偏移为[-0.1,0.1]米之内。

  • 中间的图显示了相对偏航角。LKA的相对偏航角在[-0.02,0.02]rad范围内。

  • 下面的图显示了自我车辆的转向角度。带LKA的转向角在[-0.04,0.04] Rad内。

使用实例查询控制器状态。

plotLKAStatus(logsout)

  • 上面的图显示了左和右车道偏移。由于横向偏移永远不会在车道保持辅助装置设定的距离内,因此未检测到车道偏离。

  • 中间图显示LKA状态始终为1,即车道保持辅助一直处于控制状态。

  • 底部图显示的方向盘角度从司机和LKA。驾驶员在转弯时的转向角度太大了。在这个例子中,LKA的小转向角度对于弯曲的道路来说是足够的。

探索车道保持辅助算法

车道保持辅助模型包含四个主要部分:1)估计泳道中心2)车道保持控制器3)检测车道偏离,4)施用辅助。

Open_System('lkatestbenchexample / Lane保持助攻'的)

当车辆太靠近检测到的车道时,检测车道偏离子系统输出的信号为真。当车辆与车道边界之间的偏移量小于车道辅助偏移量输入时,检测到偏离。

车道中心估计子系统将车道传感器的数据输出到车道保持控制器。本例中的检测器被配置为报告摄像机当前视场中当前车道的左右车道边界。每个边界被建模为曲线的长度,其曲率随距离线性变化(梭形曲线)。为了将这些数据输入控制器,将两条检测到的曲线向车道中心偏移,偏移距离为汽车的宽度和一个小的余量(总计1.8米)。根据检测的强度对每条中心线进行加权,并将平均结果传递给控制器。此外,车道中心估计子系统为车道保持控制器子系统的输入提供了有限的值。预估的曲率提供了自我车辆前面的车道曲率的中心线。在这个例子中,自我飞行器可以向前看3秒,这是预测视界和样本时间的乘积。这种提前时间使控制器能够使用预先获得的信息来计算ego车辆的转向角度,从而提高MPC控制器的性能。

对车道维持控制器模块的目标是通过控制前轮转向角度,以保持车辆在其车道行驶,按弯路\三角洲美元.这个目标是通过驱动侧向偏移实现$ E_1 $相对偏航角$ E_2 $变小(见下图)。

LKA控制器基于以下输入计算自助式车辆的转向角:

  • 预览的曲率(从里检测项导出)

  • 自我车辆纵向速度

  • 横向偏差(来自里检测项导出)

  • 相对横摆角度(来自车道检测)

考虑到自我车辆的物理限制,转向角被约束为在[-0.5,0.5] rad内。您可以更改预测地平线或移动控制器行为滑块调整控制器的性能。

Apply Assist子系统决定是车道保持控制器还是驾驶员控制自我车辆。子系统在驾驶员指令转向和车道保持控制器的辅助转向之间进行切换。当检测到车道偏离时,辅助转向开关启动。当驾驶员再次开始在车道内驾驶时,控制权将交还给驾驶员。

探索车辆与环境

车辆与环境子系统实现了车道保持辅助控制器的闭环仿真。

Open_System(“LKATestBenchExample /车辆和环境”的)

车辆动态子系统模型的车辆动力学与车辆动力学模块库车身三自由度单轨块™。

方案读卡器块生成基于车辆相对于场景的位置的理想左和右车道边界从场景文件中读取LKATestBenchScenario.mat

该视觉检测Generator模块需要从方案读卡器块理想车道的边界。检测发电机模型的视图单目摄像机的领域,并且确定方位角,曲率,曲率衍生物,和有效长度的每个道路边界,占任何其他障碍。

驾驶员子系统产生基于其在所创建的驱动器路径上的驱动器的转向角helperLKASetUp

生成代码的控制算法

LKARefMdl模型配置为支持使用嵌入式码器软件生成C代码。金宝app要检查您是否可以访问嵌入式编码器,请运行:

hasEmbeddedCoderLicense =许可证('查看''RTW_Embedded_Coder'的)

您可以为模型中的C函数和运行探索代码生成报告:

如果hasEmbeddedCoderLicense slbuild('LKARefMdl'的)结束

您可以验证使用软件在环(SIL)模拟预期编译的C代码的行为。为了模拟LKARefMdl在SIL模式参考模型,使用方法:

如果hasEmbeddedCoderLicense set_param('lkatestbenchexample / Lane保持助攻'......'SimulationMode'“软件在环(SIL)”的)结束

当你运行LKATestBenchExample模型,则生成、编译和执行代码LKARefMdl模型。这允许您通过模拟测试编译代码的行为。

结论

这个例子展示了如何在带有车道检测的弯曲道路上实现综合车道保持辅助(LKA)控制器。它还展示了如何在Simulink中使用由自动驾驶工具箱生成的合成数据测试控制器,将其组组金宝app化,并自动生成代码。

关闭全部bdclose全部

另请参阅

应用

相关的话题