主要内容

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

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

在这个例子中,你:

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

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

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

简介

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

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

  • 横向控制——通过调节自我车辆的转向,保持自我车辆沿着车道的中心线行驶

复合车道跟随控制系统实现了纵向和横向控制的单项目标。此外,当两个目标不能同时满足时,车道跟随控制系统可以对两个目标的优先级进行调整。

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

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

定义场景

在打开模型之前,您可以选择更改模型模拟的场景。这种场景选择是由一个回调函数控制的,helperLFSetUp,它在模型打开时运行。

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

helperLFSetup (“LFACC_04_Curve_CutInOut”);

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

'ACC_01_ISO_TargetDiscriminationTest' 'ACC_02_ISO_AutoRetargetTest' 'ACC_03_ISO_CurveTest' 'ACC_04_StopnGo' ' lfacc_01_doublecurve_减速目标' 'LFACC_02_DoubleCurve_AutoRetarget' 'LFACC_03_DoubleCurve_StopnGo' 'LFACC_04_Curve_CutInOut' 'LFACC_05_Curve_CutInOut_TooClose' ' acc_00_iso_autoretarge_02_doublecurve_stopngo ' ' lfacc_04_curve_cutinout_tooclose ' '

开放式试验台模型

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

open_system (“LaneFollowingTestBenchExample”

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

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

  2. 交通工具和环境——模拟自我交通工具的运动和环境

  3. 碰撞检测——当检测到自我车和领头车发生碰撞时,停止模拟

  4. MIO轨迹-启用在鸟眼瞄准镜中显示的MIO轨迹。

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

画出自我载具要走的路和路径。

情节(场景)

要绘制仿真结果并描述自我交通工具周围环境和跟踪对象,请使用鸟瞰的范围(自动驾驶工具箱)。Bird’s- eye Scope是一个模型级可视化工具,您可以从Simulink工具条中打开它。金宝app在模拟选项卡,在审查结果,点击鸟瞰的范围。打开作用域后,通过单击设置信号找到信号

要获得中间模拟视图,请模拟的模型10秒。

sim卡(“LaneFollowingTestBenchExample”“StopTime”“十”

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

鸟瞰镜显示了传感器融合的结果。它展示了雷达和视觉传感器如何在其覆盖区域内探测车辆。它还显示了由多目标跟踪(自动驾驶工具箱)块。黄色轨道表示最重要的对象(MIO),这是自我车辆在其车道上前面最近的轨道。理想的车道标记还显示了综合检测的左右车道边界(红色)。

模拟模型直到场景结束。

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

绘制控制器性能图。

plotLFResults (logsout time_gap default_spacing)

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

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

  • 两辆车之间的距离图中显示,引导车和自我车的实际距离总是大于安全距离。

  • 加速度从图中可以看出,自我车辆的加速是平稳的。

  • 碰撞状态从图中可以看出,没有检测到前导车与自我载具发生碰撞,因此自我载具运行在安全模式。

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

  • 横向偏差从图中可以看出,到车道中心线的距离在0.2 m以内。

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

  • 转向角从图中可以看出,自我车辆的转向角度是平稳的。

探索车道跟随控制器

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

open_system ('Lane followingtestbenchexample /Lane Following Controller'

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

跟踪和传感器融合子系统处理来自车辆和环境子系统的视觉和雷达探测,并生成自我车辆周围环境的综合态势图像。同时,它为车道跟随控制器提供了自我车辆前面车道上最近车辆的估计值。

的目标MPC控制器块分别是:

  • 保持驾驶员设定的速度,并与前车保持安全距离。这是通过控制纵向加速度来实现的。

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

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

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

  • 司机让速度

  • 自我车辆纵向速度

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

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

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

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

  • 先导车和自我车之间的相对速度(来自跟踪和传感器融合系统)

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

探索车辆与环境

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

open_system ('LaneFollowingTestBenchExample/车辆和环境'

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

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

SAE J670E到ISO 8855子系统将坐标从使用SAE J670E的车辆动力学转换为使用ISO 8855的场景阅读器。

场景的读者(自动驾驶工具箱)块从基本工作区场景变量读取参与者姿势数据。该块将参与者的姿势从场景的世界坐标转换为自我载体坐标。演员的姿势在块生成的总线上进行流处理。Scenario Reader块还根据车辆相对于所使用的场景的位置生成理想的左右车道边界helperLFSetUp

视觉检测发生器(自动驾驶工具箱)块从Scenario Reader块中获取理想的车道边界。检测生成器对单眼相机的视场进行建模,并确定航向角、曲率、曲率导数和每条道路边界的有效长度,考虑任何其他障碍。的驾驶雷达数据发生器(自动驾驶工具箱)Block根据场景中定义的雷达横截面,从雷达视场中的地面真实数据生成聚类检测。

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

本例使用基于ISO标准和真实场景的多个测试场景。为了验证控制器的性能,可以对控制器进行多场景测试,如果性能不理想,可以调整控制器参数。这样做:

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

  2. 通过运行命令配置仿真参数helperLFSetUp

  3. 用所选场景模拟模型。

  4. 评估控制器性能使用plotLFResults

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

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

为控制算法生成代码

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

hasEmbeddedCoderLicense = license(“签出”“RTW_Embedded_Coder”

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

如果hasEmbeddedCoderLicense rtwbuild (“LFRefMdl”结束

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

如果hasEmbeddedCoderLicense set_param ('Lane followingtestbenchexample /Lane Following Controller'...“SimulationMode”“Software-in-the-loop (SIL)”结束

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

结论

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

关闭所有bdclose所有

另请参阅

相关的话题