主要内容

车道保持辅助车道检测

此示例显示了如何模拟和生成汽车通道保持辅助(LKA)控制器的代码。

在这个例子中,你:

  1. 查看一个控制算法,将数据处理与模型预测控制工具箱™中的车道检测和车道保持控制器组合起来。

  2. 使用自动驾驶工具箱生成的合成数据,在闭环Simulink®模型中测试控制系统。万博1manbetx

  3. 配置循环仿真的代码生成设置,并自动生成控制算法的代码。

介绍

车道保持辅助(LKA)系统是一种控制系统,帮助司机在高速公路标记车道内保持安全行驶。当车辆偏离车道时,LKA系统会检测到,并自动调整转向以恢复车道内的正常行驶,无需驾驶员的额外输入。在本例中,LKA系统在驾驶员转向指令和车道保持控制器之间进行切换。这种方法足以为LKA系统引入一个建模体系结构,然而一个真实的系统也会向方向盘提供触觉反馈,并使驾驶员能够通过施加足够的反扭矩来覆盖LKA系统。

对于LKA正常工作,自助式车辆必须确定车道边界以及IT曲线前的车道如何。理想化的LKA设计主要依赖于预览曲率,横向偏差和车道中心线之间的横向偏差和相对偏航角。给出了这种系统的一个例子基于模型预测控制的车道保持辅助系统(模型预测控制工具箱)。从先进的驱动器辅助系统(ADAS)设计到更多自治系统,LKA必须稳健,以缺少,不完整或来自现实世界车道探测器的测量读数。

该示例演示了当来自车道检测的数据可能不准确的数据时,对控制器设计的鲁棒方法。为此,它使用来自合成车道检测器的数据,用于模拟广角单眼视觉相机引入的损伤。当来自传感器的数据无效或在范围之外时,控制器做出决定。这提供了一种安全防护,当传感器测量由于环境中的条件,例如道路上的尖锐曲线。

开放式测试台模型

要打开Simulink测万博1manbetx试台式模型,请使用以下命令。

open_system (“LKATestBenchExample”的)

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

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

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

打开此模型也运行Helperlkasetup.脚本,初始化模型使用的数据。该脚本加载Simulink模型所需的某些常量,例如车辆模型参数,控制器设计参数,道路场景和驱动路径万博1manbetx。您可以绘制驾驶员模型遵循的道路和路径。

plotlkainpuls(方案,司机路径)

模拟协助分心的司机

您可以通过启用通道保持帮助和设置安全横向距离来探索算法的行为。在Simuli万博1manbetxnk模型中,在用户控件部分,切换切换到,并设置安全横向距离1米。或者,启用车道保持辅助并设置安全横向距离。

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

要绘制模拟结果,请使用鸟瞰。鸟瞰图是一个模型级可视化工具,可以从Simulink ToolStrip打开。万博1manbetx在这方面模拟标签,下面审查结果,点击鸟瞰。打开范围后,单击找到信号来设置信号。然后运行模拟15秒,探索鸟瞰镜的内容。

SIM(“LKATestBenchExample”'停止''15'的)%模拟15秒
假设没有添加到测量的输出通道#1的干扰。- >假设添加到测量的输出通道#2的输出干扰是集成的白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。ans = 万博1manbetxsimulink.simulationoutput:logsout:[1x1 simulink.simulationdata.dataset] tout:[4680x1 double] simulation metaData:[1x1 simulink.simulation metadata] 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]rad内。

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

要查看控制器状态,请使用以下命令。

Plotlkastatus(Logsout)

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

  • 中间的图是LKA状态和车道偏离检测。探测到的偏离状态与上面的图一致。当检测到车道偏离时,LKA就会启动,但当驾驶员能够正确驾驶自我车辆时,控制权就会返回给驾驶员。

  • 底部图显示了驾驶员和LKA的转向角。当从驱动器和LKA的转向角之间的差异很小时,LKA将控制释放到驱动器(例如,在9秒之间)。

模拟车道后面

可以修改LKA的Safe Lateral Offset值,忽略驾驶员输入,使控制器进入纯车道跟随模式。通过增加这个阈值,横向偏移总是在车道保持辅助设置的距离内。因此,车道偏离状态为on,车道保持辅助一直处于控制状态。

set_param (“LKATestBenchExample /安全的横向偏移量”'价值''2')SIM(“LKATestBenchExample”的)%模拟到场景结束
假设没有添加到测量的输出通道#1的干扰。- >假设添加到测量的输出通道#2的输出干扰是集成的白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。

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

logsout plotLKAResults(场景)

红色曲线表明车道保持辅助系统可以保持自我车辆沿着车道的中心线行驶。

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

PlotlkaperFormance(Logsout)

  • 上面的图显示了相对于自我车辆的横向偏差。与LKA的横向偏差在[-0.1,0.1]中。

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

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

要查看控制器状态,请使用以下命令。

Plotlkastatus(Logsout)

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

  • 中间图表明,LKA状态始终是一个,即车道保持辅助一直控制。

  • 底部图显示了驾驶员和LKA的转向角。与弯曲道路谈判的驾驶员的转向角过于侵略性。在该示例中,LKA的小转向角足以使弯曲道路足够。

探索车道保持辅助算法

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

open_system (“LKATestBenchExample /车道保持辅助”的)

检测车道出发子系统输出当车辆太靠近检测到的通道时是真的的信号。当车道传感器的车辆和车道边界之间的偏移小于车道辅助偏移输入时,检测出发。

估算车道中心子系统将来自车道传感器的数据输出到车道保持控制器。在该示例中的检测器被配置为在当前视野视野中报告当前通道的左右通道边界。每个边界被建模为曲线的长度,其曲率与距离线性变化(桃花曲线)。为了将该数据馈送到控制器,通过汽车的宽度和小边距(总共1.8米)偏移朝向车道的中心偏移检测到的曲线。通过检测强度的强度并将平均结果传递给控制器​​的每个所得居中曲线。此外,估计车道中心子系统提供有限值,用于对车道保持控制器子系统的输入。预览曲率提供了自助式车辆前方车道曲率的中心线。在该示例中,自我车辆可以向前看三秒钟,这是预测地平线和采样时间的乘积。该抬头使控制器能够使用预览信息来计算自助车辆的转向角,这提高了MPC控制器性能。

保持控制器块的目标是将车辆保持在其车道中,并通过控制前转向角来遵循弯曲的道路$ \ delta $。这种目标是通过驱动横向偏差来实现的$ e_1 $和相对的横摆角$ e_2 $要小(见下图)。

LKA控制器根据以下输入计算自我车辆的转向角度:

  • 预览曲率(源自车道检测)

  • 自我车辆纵向速度

  • 横向偏差(来自车道检测)

  • 相对偏航角(由车道检测得到)

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

应用辅助子系统确定车道保持控制器或驾驶员是否控制了自我车辆。子系统在驾驶员指导转向和车道保持控制器的辅助转向之间切换。当检测到车道偏离时,启动到辅助转向的开关。当驾驶员再次开始在车道内转向时,控制将返回到驱动器上。

探索车辆和环境

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

open_system ('lkatestbenchexample /车辆和环境'的)

车辆动态子系统与车身3D从车辆动态块块与车身3D的车辆动态模拟。

情景读者块基于车辆相对于从场景文件读取的场景的位置生成理想的左右车道边界lkatestbenchscenario.mat

视觉检测发生器块从方案读取器块中获取理想的车道边界。检测发生器模拟单眼摄像机的视野,并确定每个道路边界的标题角,曲率,曲率导数和有效长度,占任何其他障碍物。

驱动器子系统基于创建的驱动器路径生成驱动器转向角Helperlkasetup.

生成控制算法的代码

lkarefmdl.模型被配置为支持使用Embedded Code万博1manbetxr®软件生成C代码。要检查你是否可以访问Embedded Coder,请运行:

hasembeddedcoderlicense =许可证(“签出”'rtw_embedded_coder'的)

您可以通过运行生成模型的C函数并浏览代码生成报告:

如果HasembeddedCoderLicense Slbuild('lkarefmdl'的)结尾

您可以验证已编译的C代码是否正如使用循环(SIL)模拟所在的所预期的。模拟这一点lkarefmdl.SIL模式引用模型,使用:

如果hasembeddedcoderlicense set_param(“LKATestBenchExample /车道保持辅助”......'simulationmode''软件 - 循环(SIL)'的)结尾

当你运行时lkatestbenchexample.模型,代码生成,编译和执行lkarefmdl.模型。这允许您通过模拟测试已编译代码的行为。

结论

此示例显示如何在带路检测的弯曲道路上实施集成通道保持辅助(LKA)控制器。它还显示了如何使用自动化驾驶工具箱生成的合成数据,组件化,自动化数据,并自动为其生成代码万博1manbetx而在Simulink中测试控制器。

关闭所有bdclose.所有

也可以看看

应用

相关话题