主要内容

带传感器融合和车道检测的车道跟随控制

这个例子展示了如何模拟和生成一个汽车车道跟踪控制器的代码。

在这个例子中,你:

  1. 从模型预测控制工具箱中查看结合传感器融合、车道检测和车道跟踪控制器的控制算法™ 软件

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

  3. 配置软件在环模拟的代码生成设置,并自动生成控制算法的代码。

介绍

车道跟踪系统是一种控制系统,使车辆在高速公路的标记车道内行驶,同时保持用户设定的速度或与前车的安全距离。车道跟随系统包括自我车辆的纵向和横向联合控制:

  • 纵向控制-保持驾驶人设定的速度,并保持与前车在车道上的安全距离,通过调整自我车辆的加速度。

  • 横向控制-通过调整自我车辆的转向使自我车辆沿其车道的中心线行驶

组合车道跟驰控制系统实现了纵向和横向控制的单独目标。此外,当两个目标不能同时实现时,车道跟驰控制系统可以调整这两个目标的优先级。

有关使用带有传感器融合的自适应巡航控制(ACC)的纵向控制示例,请参见传感器融合的自适应巡航控制(模型预测控制工具箱).关于使用带有车道检测的车道保持辅助(LKA)系统进行横向控制的例子,请参见车道保持辅助车道检测(模型预测控制工具箱).ACC例子假设了理想的车道检测,而LKA例子不考虑周围的车辆。

在这个例子中,同时考虑了车道检测和周围车辆。车道跟踪系统综合视觉和雷达检测数据,估计车道中心和前车距离,计算自我车辆的纵向加速度和转向角度。

定义场景

在打开模型之前,可以选择更改模型模拟的场景。此方案选择由回调函数控制,helperLFSetUp,在模型打开时运行。

默认情况下,该模型模拟在弯曲道路上的插线场景。要更改使用的默认场景,可以通过单击编辑安装脚本按钮或通过调用helperLFSetup使用一个新的输入场景。例如,下面的语法等价于指定默认场景。

helperLFSetup (“LFACC_04_Curve_CutInOut”);

您可以从以下场景中进行选择。

‘ACC_01_ISO_目标识别测试’‘ACC_02_ISO_自动资产测试’‘ACC_03_ISO_曲线测试’‘ACC_04_StopnGo’‘LFACC_01_双曲线减速目标’‘LFACC_02_双曲线自动资产’‘LFACC_03_双曲线StopnGo’‘LFACC_04_曲线执行’‘LFACC_05_曲线执行’

开放式试验台模型

打开Simulin金宝appk测试台模型。

open_system (“LaneFollowingTestBenchExample”

该模型包含四个主要组成部分:

  1. 车道跟随控制器-控制纵向加速度和自我车辆的前转向角度

  2. 车辆和环境-模拟自我车辆的运动并模拟环境

  3. 碰撞检测-当检测到ego车辆和引导车辆发生碰撞时,停止模拟

  4. MIO轨迹-启用MIO轨迹,以便在鸟瞰范围内显示。

打开此模型也会运行helperLFSetUp脚本,该脚本通过运行场景函数和Simulink模型所需的加载常量(如车辆模型参数、控制器设计参数、道路场景和周围的车辆)来初始化模型所使用的数据。金宝app

画出自我车辆将遵循的道路和路径。

情节(场景)

要绘制仿真结果并描述ego车辆周围环境和跟踪对象,请使用鸟瞰的范围.Bird's-Eye Scope是一个模型级的可视化工具,您可以从Simulink工具条中打开它。金宝app在模拟选项卡,在下面审查结果,点击鸟瞰的范围.打开示波器后,通过单击设置信号寻找信号

为了获得一个中间模拟视图,模拟模型10秒。

sim卡(“LaneFollowingTestBenchExample”“停车时间”“十”

模拟模型10秒后,打开鸟瞰镜。在范围工具条中,要显示场景的世界坐标视图,请单击世界坐标.在这个视图中,自我载体被圈起来了。要显示车辆坐标视图的图例,单击传说

鸟瞰镜显示传感器融合的结果。它显示了雷达和视觉传感器如何检测其覆盖范围内的车辆。它还显示了由多目标跟踪器块。黄色轨道表示最重要的目标(MIO),即在自我车辆的车道中距离它最近的轨道。理想的车道标记也与综合检测的左、右车道边界(以红色显示)一起显示。

在场景结束时模拟模型。

sim卡(“LaneFollowingTestBenchExample”
假设没有干扰添加到测量输出通道#3。——>假设添加到测量输出通道2上的输出扰动为集成白噪声。假设对测量的输出通道#1没有增加任何干扰。——>假设添加到测量输出通道#4的输出扰动为集成白噪声。——>”模式。mpc对象的Noise属性为空。假设每个测量输出通道上都有白噪声。

绘制控制器性能图。

plotLFResults (logsout time_gap default_spacing)

第一个图显示了以下间距控制性能结果。

  • 速度图显示自我车辆保持速度控制从0到11秒,切换到间距控制从11到16秒,然后切换回速度控制。

  • 两车距离图中显示,引导车辆和ego车辆之间的实际距离始终大于安全距离。

  • 加速度曲线图显示,ego车辆的加速平稳。

  • 碰撞状态Plot显示没有检测到lead车与self车发生碰撞,因此self车以安全模式运行。

第二个图显示了以下横向控制性能结果。

  • 横向偏差该图显示到车道中心线的距离在0.2 m以内。

  • 相对偏航角图中显示,偏航角相对于车道中心线的误差在0.03 rad以内(小于2°)。

  • 转向角曲线图显示ego车辆的转向角是平滑的。

探索车道跟踪控制器

车道跟踪控制器子系统包括三个主要部分:1)估计车道中心2)跟踪和传感器融合3)MPC控制器

open_system (“LaneFollowingTestBenchExample /后巷控制器”

车道中心估计子系统将车道传感器数据输出到MPC控制器。预估的曲率提供了自我车辆前面的车道曲率的中心线。在这个例子中,自我飞行器可以向前看3秒,这是预测视界和控制器采样时间的乘积。该控制器利用预先得到的信息来计算自我车辆的转向角,提高了MPC控制器的性能。横向偏差测量自我车辆与车道中心线之间的距离。相对偏航角测量的是车辆与道路之间的偏航角差异。子系统内部的ISO 8855到SAE J670E模块将使用ISO 8855的Lane detection坐标转换为使用SAE J670E的MPC Controller。

跟踪和传感器融合子系统处理来自车辆和环境子系统的视觉和雷达检测,并生成ego车辆周围环境的综合态势图。此外,它还向车道跟踪控制器提供ego车辆前方车道上最近车辆的估计值。

目标是MPC控制器(模型预测控制工具箱)块是:

  • 保持司机设定的速度,并与前车保持安全距离。这个目标是通过控制纵向加速度来实现的。

  • 保持自我的车辆在车道中间;即减小横向偏移美元E_{横向}$和相对偏航角$E_{yaw}$,通过控制转向角度。

  • 当道路弯曲时,减速行驶。为了实现这一目标,MPC控制器对横向偏差的惩罚权重大于对纵向速度的惩罚权重。

在路径跟踪控制(PFC)系统模块中,根据输入的掩模参数设计MPC控制器,所设计的MPC控制器是一种自适应的MPC,在运行时更新车辆模型。车道跟随控制器根据以下输入计算自我车辆的纵向加速度和转向角度:

  • 驱动器设定速度

  • 自我车辆纵向速度

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

  • 横向偏差(由车道检测得到)

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

  • 引导车辆和ego车辆之间的相对距离(来自跟踪和传感器融合系统)

  • 前导车与自我车的相对速度(来自跟踪与传感器融合系统)

考虑到ego车辆的物理限制,将转向角限制在[-0.26,0.26]rad以内,纵向加速度限制在[-3,2]m/s^2以内。

探索车辆与环境

车辆与环境子系统实现了车道跟踪控制器的闭环仿真。

open_system (“LaneFollowingTestBenchExample /车辆和环境”

系统延迟块对系统中模型输入和输出之间的延迟进行建模。延迟可能由传感器延迟或通信延迟引起。在此示例中,延迟近似为一个采样时间T_s = 0.1美元秒。

车辆动力学子系统使用来自车辆动力学模块集™的自行车模型-力输入模块对车辆动力学进行建模。采用时间常数为的一阶线性系统对低阶动力学进行建模\τ= 0.5美元秒。

SAE J670E至ISO 8855子系统将使用SAE J670E的车辆动力学(Vehicle Dynamics)坐标转换为使用ISO 8855的场景阅读器(Scenario Reader)。

场景的读者块从基本工作空间方案变量读取演员姿势数据。该块将演员姿势从场景的世界坐标转换为自我车辆坐标。演员姿势在块生成的总线上进行流式传输。场景读取器块还根据车辆相对于场景的位置生成理想的左右车道边界helperLFSetUp

视觉检测发生器block从Scenario Reader block中获取理想的车道边界。检测生成器对单目摄像机的视野进行建模,并确定每个道路边界的航向角、曲率、曲率导数和有效长度,同时考虑任何其他障碍物驾驶雷达数据发生器Block基于场景中定义的雷达横截面,从雷达视场中存在的地面真实数据生成聚类检测。

为多个测试场景运行控制器

此示例使用基于ISO标准和真实场景的多个测试场景。要验证控制器性能,可以针对多个场景测试控制器,并在性能不令人满意时调整控制器参数。为此:

  1. 通过将场景名称输入更改为来选择场景helperLFSetUp

  2. 通过运行来配置模拟参数helperLFSetUp

  3. 用选定的场景模拟模型。

  4. 使用以下方法评估控制器性能:plotLFResults

  5. 如果性能不理想,调整控制器参数。

您可以使用Simulink Test™自动化控制器的验证和验证。金宝app

为控制算法生成代码

LFRefMdl模型支持使用金宝appEmbedded Coder®软件生成C代码。要检查你是否可以访问Embedded Coder,请运行:

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

您可以为模型生成一个C函数,并通过运行以下命令来探索代码生成报告:

如果hasEmbeddedCoderLicense rtwbuild(“LFRefMdl”终止

您可以使用在循环中的软件(SIL)模拟来验证编译后的C代码是否如预期的那样运行。模拟LFRefMdlSIL模式下的参考模型,使用:

如果hasEmbeddedCoderLicense set_param (“LaneFollowingTestBenchExample /后巷控制器”...“SimulationMode”‘软件在环(SIL)’终止

当你运行LaneFollowingTestBenchExample模型生成、编译和执行代码LFRefMdl模型,它使您能够通过模拟测试已编译代码的行为。

结论

本示例演示了如何在弯曲道路上实现传感器融合和车道检测的集成车道跟踪控制器,并使用自动驾驶工具箱软件生成的合成数据在Simulink中进行测试,将其组组化,自动生成代码。金宝app

关闭所有bdclose所有

另见

应用程序

相关话题