主要内容

车道保持协助与车道检测

此示例显示了如何模拟和生成汽车通道保持辅助(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路径。您可以绘制道路和驱动程序模型遵循的路径。

driverPath plotLKAInputs(场景)

模拟协助分心的司机

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

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

要绘制模拟结果,请使用鸟瞰(自动驾驶工具箱).Bird’s eye Scope是一个模型级的可视化工具,您可以从Simulink工具条中打开它。万博1manbetx在模拟选项卡,在审查结果,点击鸟瞰.打开范围后,单击找到信号来设置信号。然后运行15秒的模拟,并探索鸟瞰范围的内容。

sim卡(“LKATestBenchExample”'停止''15'%模拟15秒
假设没有干扰添加到测量输出通道#1。假设添加到测量输出通道#2的输出扰动是集成白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量输出通道上都有白噪声。ans = 万博1manbetxsimulink.simulationoutput:logsout:[1x1 simulink.simulationdata.dataset] tout:[4682x1双] 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秒,31秒和33秒,横向偏移在车道保持辅助设定的距离内。发生这种情况时,检测到车道偏离。

  • 中间图显示LKA状态和车道偏离检测。偏离检测状态与顶部情节一致。当检测到车道偏离时,LKA将被打开,但当司机能够正确地驾驶自我车辆时,控制将返回给司机。

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

模拟车道后面

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

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

可以使用以下命令查看模拟结果。

logsout plotLKAResults(场景)

红色曲线表明,车道保持辅助本身可以保持自我车辆沿其车道中心线行驶。

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

PlotlkaperFormance(Logsout)

  • 顶部图显示横向偏差相对于自我车辆。LKA的横向偏差在[-0.1,0.1]m以内。

  • 中间的图显示了相对偏航角。LKA的相对偏航角在[-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控制器根据以下输入计算自我车辆的转向角度:

  • 预估曲率(来自车道检测)

  • 自我车辆纵向速度

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

  • 相对偏航角(来自车道检测)

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

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

探索车辆和环境

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

open_system (“LKATestBenchExample /车辆和环境”

车辆动力学子系统使用车辆动力学模型的车身3DOF单轨道块从车辆动力学Blockset™。

场景的读者(自动驾驶工具箱)Block根据从场景文件中读取的场景中车辆的位置生成理想的左右车道边界lkatestbenchscenario.mat

视觉检测生成器块从Scenario Reader块中选取理想的车道边界。该检测生成器对单目摄像机的视场进行建模,并确定航向角、曲率、曲率导数和每个道路边界的有效长度,考虑任何其他障碍。

驾驶员子系统根据中创建的驾驶员路径生成驾驶员转向角Helperlkasetup.

生成控制算法的代码

LKARefMdl模型配置为支持使用Embedded Coder万博1manbetx软件生成C代码。要检查你是否有权限访问嵌入式编码器,运行:

hasembeddedcoderlicense =许可证(“签出”“RTW_Embedded_Coder”

你可以为模型生成一个C函数,并通过运行来查看代码生成报告:

如果hasEmbeddedCoderLicense slbuild (“LKARefMdl”结尾

您可以使用软件在环(SIL)模拟来验证编译的C代码的行为是否符合预期。模拟LKARefMdl参考SIL模式下的模型,使用:

如果hasEmbeddedCoderLicense set_param (“LKATestBenchExample /车道保持辅助”...“SimulationMode”“Software-in-the-loop (SIL)”结尾

当你运行时LKATestBenchExample模型,代码生成,编译和执行LKARefMdl模型。这使您可以通过仿真来测试编译代码的行为。

结论

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

关闭所有bdClose.所有

也可以看看

相关话题