车道保持辅助同里检测

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

在这个例子中,您可以:

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

  2. 用自动驾驶工具箱生成的综合数据在闭环Simulink模型中测试控制系统™.金宝app

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

介绍

车道保持辅助系统(LKA)系统是有助于高速公路的标记车道内保持安全行驶的驱动器的控制系统。该LKA系统检测时,从车道车辆偏离,并自动调整转向恢复本车道内适当的旅行没有从司机的额外投入。在这个例子中,LKA系统驾驶员转向命令和车道保持控制器之间切换。这种做法足以引入建模架构的LKA系统,然而实际的系统也将提供触觉反馈方向盘,使驾驶者通过施加足够的反扭矩覆盖LKA系统。

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

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

开放式试验台型号

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

open_system('LKATestBenchExample'

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

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

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

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

plotLKAInputs(场景,driverPath)

模拟协助分神驱动程序

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

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

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

SIM('LKATestBenchExample'“停止时间”'15'年%模拟15秒
ANS = 金宝appSimulink.SimulationOutput:logsout:[1x1的Simulink.SimulationData.Dataset] TOUT:[4681x1双] SimulationMetadata:[1x1的Simulink.SimulationMetadata]的ErrorMessage:为0x0字符]

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

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

SIM('LKATestBenchExample'%至模拟场景的结束plotLKAResults(场景,logsout,driverPath)

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

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

绘图性能(logsout)

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

  • 中间图显示的相对偏航角。与LKA相对偏航角为[-0.15,0.15]弧度内。

  • 底图显示了ego车辆的转向角。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(“LKATestBenchExample /安全横向偏移”'值''2')SIM('LKATestBenchExample'%至模拟场景的结束

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

plotLKAResults(场景,logsout)

红色曲线显示,车道维持自身的协助能保持自身车辆沿其车道的中心线行驶。

使用下面的命令来描绘控制器性能。

绘图性能(logsout)

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

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

  • 底图显示了ego车辆的转向角。LKA的转向角在[-0.04,0.04]rad范围内。

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

plotLKAStatus(logsout)

  • 上图显示了左,右车道偏移。由于横向偏移是从来没有的车道保持的距离设定的范围内辅助,没有检测到车道偏离。

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

  • 下图显示了驾驶员和LKA的转向角。驾驶员在弯道上的转向角度太大。在本例中,从LKA开始的小转向角对于弯道是足够的。

车道保持辅助算法探讨

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

open_system('LKATestBenchExample/车道保持辅助'

在检测车道偏离子系统输出信号当车辆太靠近检测的车道这是真的。你检测出发时车辆与车道边界之间的偏离车道传感器小于行车协助抵消输入。

的估计车道中央子系统从车道传感器的数据输出至车道保持控制器。本例中的检测器被配置为报告所述当前车道的左和右车道边界在摄像机的当前场的图。每个边界被模拟为曲线,其曲率的距离(回旋曲线)呈线性变化的长度。此数据馈送到控制器,由汽车的宽度和小的余量(1.8米总)偏移都朝向车道的中心的检测曲线。由检测的强度重量所得的各中心曲线和平均结果传递到控制器。另外,该估计车道中心子系统,用于输入车道保持控制器子系统提供的有限值。预览曲率提供自身车辆的车道曲率领先的中心线。在这个例子中,自身车辆可以向前看三秒钟,这是预测范围和采样时间的乘积。这种前瞻时间使控制器使用预览的信息来计算转向角为自身车辆,从而提高了MPC控制器的性能。

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

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

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

  • 自主车辆纵向速度

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

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

考虑到自身车辆的物理限制,转向角被限制为在[-0.5,0.5]弧度。您可以更改预测水平或移动控制器行为滑块调整控制器的性能。

应用辅助子系统决定车道保持控制器还是驾驶员控制ego车辆。子系统在驾驶员指令转向和车道保持控制器辅助转向之间切换。当检测到车道偏离时,转向辅助启动。当驾驶员再次开始在车道内转向时,控制返回给驾驶员。

探索汽车与环境

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

open_system(“LKATestBenchExample /车辆和环境”

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

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

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

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

生成代码的控制算法

LKARefMdl模型被配置成使用嵌入式编码的软件支持生成的C代金宝app码。要检查是否有机会获得嵌入式编码器,运行:

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

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

如果hasEmbeddedCoderLicense rtwbuild('LKARefMdl'结束

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

如果hasEmbeddedCoderLicense set_param('LKATestBenchExample/车道保持辅助'...'SimulationMode'“软件在环(SIL)”结束

当你运行LKATestBenchExampleLKARefMdl模型。这使您能够通过模拟测试已编译代码的行为。

结论

该示例示出了如何实现集成的车道保持辅助(LKA)控制器与车道检测弯路。它也示出了如何使用由自动驾驶工具箱生成的合成数据,以测试在Simulink控制器,组件化金宝app它,并为它自动生成代码。

所有bdclose所有

另见

相关话题