主要内容

车道保持辅助车道检测

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

在本例中,您:

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

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

  3. 配置的代码生成设置software-in-the-loop模拟和控制算法自动生成代码。

介绍

车道保持辅助(党的)系统是一个控制系统,艾滋病司机在维护安全的旅行在一个车道的高速公路。党的系统检测到车辆偏离车道时,自动调整转向恢复适当的旅行巷内没有额外的驱动程序的输入。在这个例子中,党的系统交换机之间的司机转向命令和车道保持控制器。这种方法是充分引入建模架构一个党的系统,然而,一个真正的系统也会提供触觉反馈的方向盘,使司机能够覆盖党的系统通过应用足够的反力矩。

党的正确工作,自我的车辆必须确定车道边界和它前面的车道如何曲线。理想化的党的设计主要依靠预览曲率,横向偏差和相对偏航角中心线之间的车道和自我。中给出了这样的一个系统的一个例子车道保持辅助系统使用模型预测控制(模型预测控制工具箱)。从先进驾驶辅助系统(ADAS)设计更多的自治系统,必须对党的强劲失踪,不完整或不准确的测量读数从实际车道探测器。

这个案例展示了一个健壮的控制器设计方法,当数据从车道检测可能是不准确的。这样做,它使用的数据合成巷探测器模拟缺陷引入的广角单眼视觉相机。控制器使决策当来自传感器的数据是无效的或范围外。这提供了一个安全警卫传感器测量时由于环境条件是错误的,比如在路上急弯。

获得系统开放的列表现在任何系统关闭打开的在这个例子。

startingOpenSystems = find_system (“MatchFilter”,@S金宝appimulink.match.allVariants);

开放实验台模型

打开模型试验台模型,使用金宝app下面的命令。

open_system (“LKATestBenchExample”)

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

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

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

打开这个模型还运行helperLKASetUp所使用的脚本,它初始化数据模型。脚本加载某些常数模型所需的模型,如车辆模型参数,控制器的设计参数,道路场景中,和司机的道路。金宝app你可以画出道路和驱动程序的路径模型。

driverPath plotLKAInputs(场景)

模拟协助司机分心

你可以探索行为的算法通过使lane-keeping援助和设置横向安全距离。在仿真软件模型金宝app用户控件部分,开关切换,并设置安全的横向距离1米。另外,启用lane-keeping协助并设置横向安全距离。

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

绘制仿真的结果,使用鸟瞰的范围。鸟瞰的范围是一个模型级,您可以打开从仿真软件将来发布的可视化工具。金宝app在模拟选项卡,在审查结果,点击鸟瞰的范围。打开范围后,单击找到信号设置信号。为15秒,然后运行仿真,探索鸟瞰图的内容范围。

sim卡(“LKATestBenchExample”,“StopTime”,“15”)%模拟15秒
假设没有干扰# 1添加到测量输出。- - >输出假设扰动添加到# 2集成白噪声测量输出。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。ans =仿金宝app真软件。模拟Output: logsout: [1x1 Simulink.SimulationData.Dataset] tout: [4682x1 double] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

鸟瞰的范围显示一个符号表示的道路车辆从自我的角度。在这个例子中,鸟瞰的范围呈现的覆盖区域合成视觉探测器作为一个阴影区域。理想的车道标记是另外显示,以及综合检测左和右车道边界(红色所示)。

运行完整的模拟和探索结果,使用下面的命令。

sim卡(“LKATestBenchExample”)%模拟的场景plotLKAResults(场景、logsout driverPath)
假设没有干扰# 1添加到测量输出。- - >输出假设扰动添加到# 2集成白噪声测量输出。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。

司机的蓝色曲线路径表明,分散了司机可能驱动自我车辆时另一个车道道路曲率的变化。司机车道保持辅助的红色曲线表明,自我车辆仍在其车道道路曲率的变化。

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

plotLKAPerformance (logsout)

  • 顶部显示相对于自我车辆横向偏差的阴谋。党的的横向偏差是在[-0.5,0.5]。

  • 中间的情节展示了相对偏航角。相对偏航角与党的[-0.15,0.15]rad内。

  • 底部显示自我车辆的转向角。党的的转向角是在[-0.5,0.5]rad。

查看控制器状态,使用下面的命令。

plotLKAStatus (logsout)

  • 情节显示左和右车道偏移量。约5.5 s, 19、31、33和年代,横向偏移量是在设定的车道保持辅助的距离。当这种情况发生时,检测到的车道偏离。

  • 中间的情节展示了党的地位和车道偏离的检测。出发的检测状态是一致的情节。党的打开当检测到车道偏离,但控制返回给司机后,司机可以正确引导自我车辆。

  • 底部图显示了司机的转向角和党的。当司机的转向角和党的的区别很小,党的版本控制驱动程序(例如,9到17年代)。

模拟后巷

您可以修改安全侧向偏移量的价值党的忽略司机输入,将控制器放入一个纯粹的后巷模式。通过增加这个阈值,横向偏移量总是在距离设定的车道保持辅助。因此,车道偏离的状态和车道保持辅助控制。

set_param (“LKATestBenchExample /安全的横向偏移量”,“价值”,' 2 ')sim卡(“LKATestBenchExample”)%模拟的场景
假设没有干扰# 1添加到测量输出。- - >输出假设扰动添加到# 2集成白噪声测量输出。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。

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

logsout plotLKAResults(场景)

红色曲线表明自己的车道保持辅助能保持自我沿着车道中心线的汽车旅行。

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

plotLKAPerformance (logsout)

  • 顶部显示相对于自我车辆横向偏差的阴谋。党的的横向偏差是在[-0.1,0.1]。

  • 中间的情节展示了相对偏航角。相对偏航角与党的[-0.02,0.02]rad内。

  • 底部显示自我车辆的转向角。党的的转向角是在[-0.04,0.04]rad。

查看控制器状态,使用下面的命令。

plotLKAStatus (logsout)

  • 情节显示左和右车道偏移量。由于横向偏移量是从来没有在设定的车道保持辅助的距离,车道偏离没有检测到。

  • 中间情节表明,党的地位一直是一个,也就是说,车道保持辅助控制。

  • 底部图显示了司机的转向角和党的。司机的转向角与弯曲的道路过于咄咄逼人。小舵角从党的弯曲的道路在这个例子就足够了。

探索车道保持辅助算法

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

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

检测车道偏离子系统输出一个信号,表明是真的当车辆太接近检测车道。时检测不同车辆之间的抵消和车道车道边界传感器小于巷帮助抵消输入。

估计巷中心子系统输出通道传感器的数据到车道保持控制器。探测器在这个示例配置报告的左和右车道边界的当前车道在当前视场相机。每个边界建模为长度的曲线的曲率变化随着距离的线性(回旋曲线曲线)。这个数据反馈给控制器,抵消这两个检测曲线向中心巷的汽车和一个小的宽度(1.8米)。每个的重量集中曲线的强度检测和平均结果传递给控制器。此外,估计巷中心子系统提供有限值输入到车道保持控制器子系统。预览曲率提供车道中心线的曲率的自我。在这个例子中,自我车辆可以向前看了三秒,这是预测地平线的产品和样品时间。这有预见性的时间使控制器可以使用预览信息计算自我车辆的转向角,从而提高了MPC控制器性能。

车道保持控制器的块的目标是保持车辆在车道和遵循弯曲的道路通过控制转向角\三角洲美元。这一目标是通过驱动横向偏差e_1美元和相对偏航角e_2美元小(见下图)。

党的控制器计算出自我转向角车辆基于以下输入:

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

  • 自我车辆纵向速度

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

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

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

应用辅助子系统决定如果车道保持控制器或司机控制自我的工具。子系统之间的开关司机指挥操舵,从车道保持辅助转向控制器。切换到辅助转向车道偏离检测时启动。控制返回给司机当司机开始再次转向车道内。

探讨车辆和环境

车辆和环境子系统使车道保持辅助控制器的闭环仿真。

open_system (“LKATestBenchExample /车辆和环境”)

车辆动力学子系统模型车辆动力学与车辆身体3自由度单轨块从车辆动力学Blockset™。

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

视觉检测发电机阻止需要理想的车道边界读者的场景。检测发电机模型单眼相机的视野并确定航向角、曲率、曲率微分,和每个道路边界的有效长度,占任何其他障碍。

司机子系统生成司机转向角基于驱动程序的路径中创建helperLKASetUp

生成代码的控制算法

LKARefMdl模型配置为支持生成C代码使用嵌入式编码器®软件金宝app。检查如果你有访问嵌入式编码器,运行:

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

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

如果hasEmbeddedCoderLicense slbuild (“LKARefMdl”)结束

你可以验证编译C代码的行为如预期使用software-in-the-loop (SIL)模拟。模拟LKARefMdl参考模型在SIL)模式下,使用:

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

当您运行这个LKATestBenchExample模型、代码生成、编译和执行LKARefMdl模型。这允许您通过模拟测试编译的代码的行为。

结论

这个例子展示了如何实现一个完整的车道保持辅助(党的)控制器与车道检测弯曲的道路。它还显示了如何在仿真软件中测试控制器使用合成数据生成的自动驾驶工具箱,组件化,并自动生成金宝app代码。

%关闭任何打开系统在执行这个例子。endingOpenSystems = find_system (“MatchFilter”,@S金宝appimulink.match.allVariants);bdclose (setdiff (endingOpenSystems, startingOpenSystems))

另请参阅

应用程序

相关的话题