自适应巡航控制系统与传感器融合

这个例子展示了如何使用传感器融合来实现基于传感器融合的汽车自适应巡航控制器。

在这个例子中,您可以:

  1. 审查的控制系统,结合传感器融合和自适应巡航控制(ACC)。提供ACC的两个变体:一个经典控制器和从模型预测控制工具箱的自适应巡航控制系统块。

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

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

介绍

自适应巡航控制系统是一个控制系统,它可以根据道路上的条件来调整ego车辆的速度。与常规巡航控制一样,驾驶员为汽车设定一个所需的速度;此外,如果前方车道上有另一辆车辆行驶速度较慢,自适应巡航控制系统可以使ego车辆减速。

对于ACC正常工作,自身车辆必须确定车道在它的曲线前面,这车怎么是“领跑车”,即,在车道自身车辆的前方。从自身车辆的观点出发,一个典型的场景被显示在下面的图中。自主车辆(蓝色)沿着弯曲道路行驶。在开始的时候,领头的车是粉红色的车。然后紫车切入自身车辆的车道,并成为领跑车。过了一会儿,紫车变成另一条车道,与粉红色的车再次成为领跑车。粉红色的车仍然领先汽车之后。在ACC设计必须作出反应的道路上处于领先地位的汽车的变化。

目前ACC的设计主要依赖于从雷达获得的范围和范围率测量,并且被设计成沿着直路是最好的。这种系统的一个例子中给出基于模型预测控制的自适应巡航控制系统基于FMCW技术的汽车自适应巡航控制(相控阵系统工具箱)。从先进的驾驶员辅助系统中移动(ADAS)设计,更自主的系统中,ACC必须解决以下难题:

  1. 估计是自车辆附近并具有横向相对于自身车辆显著运动车的相对位置和速度。

  2. 估计自身车辆的车道前方发现这车在自身车辆前方是最靠近在同一个车道。

  3. 其他车辆反应侵略阴谋的环境中,尤其是,当另一个车辆切入自我车道。

该实施例表明两个主要增补现有ACC设计,达到这些挑战:将传感器融合系统和基于模型预测控制(MPC)更新所述控制器的设计。同时使用视觉和雷达传感器的传感器融合和跟踪系统提供了以下好处:

  1. 它结合了与来自雷达传感器的距离和距离率测量从视觉传感器获得的位置和速度的更好侧面测量。

  2. 视觉传感器可以检测车道,提供相对于自身车辆车道的横向位置的估计,以及相对于自身车辆车道的场景中的其他车位置。这个例子假定理想的车道检测。

先进的MPC控制器增加了其他车辆在环境中更积极的动作作出反应的能力。与此相反,使用一个PID设计具有恒定增益的经典控制器,所述MPC控制器,同时保持严格的安全距离约束调节自身车辆的速度。因此,当环境以类似的方式是什么人司机会做快速改变控制器可以将更多的侵略阴谋活动。

试验台模型与仿真结果的概述

要打开主Simulink模型,使用金宝app下面的命令:

开放式系统('ACCTestBenchExample'

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

  1. ACC与传感器融合,其模型的传感器融合和控制车辆的纵向加速度。此组件可让您选择的设计无论是古典或模型预测控制的版本。

  2. 在车辆和环境子系统,其模型的自主车辆和模型环境的运动。雷达和视觉传感器的模拟提供合成的数据提供给控制子系统。

要在运行模型之前运行相关的初始化脚本,在Simulink模型,点击金宝app运行安装程序脚本或者,在命令提示,键入以下内容:

帮助racsetup

脚本加载Simulink模型所需的某些常数,例如车辆和ACC设计参数。默认的ACC是经典控制器。该金宝app脚本还创建定义控制系统引用模型的输入和输出所需的总线。在编译模型之前,必须在工作区中定义这些总线。当模型编译时,额外的Simulink总线由它们各自的块自动生成。

要绘制的模拟结果和描绘本车,包括跟踪对象的周围,用鸟瞰范围。鸟瞰范围是模型级的可视化工具,您可以在Simulink工具条打开。金宝app在模拟选项卡,在审查结果,点击鸟瞰范围。开放范围后,点击寻找信号设置的信号。下面的命令运行模拟15秒获得一个中间模拟图片,并再次运行一路到模拟结束,以收集结果。

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

鸟瞰范围示出了传感器融合的结果。它显示了雷达和视觉传感器如何检测它们的传感器覆盖区域内的车辆。它还示出了由多目标跟踪块保持的曲目。黄色轨迹显示最重要的对象(MIO):在其车道自车辆前方的最接近的轨道。我们看到,在场景开始,最重要的目标是领先于自身车辆快速行驶的汽车。当驶过的汽车越来越接近滞销车,它跨越到左侧车道,以及传感器融合系统识别出它是MIO。这辆车是更接近自身车辆和比它慢得多。因此,ACC必须减慢自车辆。

在对经典的ACC系统下面的结果,在:

  • 上图显示了自车辆速度。

  • 中间图显示本车和引导车之间的相对距离。

  • 下图显示了自车辆加速。

在这个例子中,从跟踪和传感器融合系统的原始数据被用于ACC设计无后处理。你可以期望看到一些“尖峰”(中图),由于不确定性的传感器模型尤其是当另一辆汽车切入或离开自身车辆车道。

要查看的模拟结果,使用下面的命令。

helperPlotACCResults(logsout,default_spacing,time_gap)

  • 在第11秒时,领头的车是远远领先于自身车辆(中图)的。自主车辆加速并到达驾驶员设定的速度V_set(顶图)。

  • 另一款车变得从11到20秒领跑车当车切入本车车道(中图)。当引线轿厢与自主车辆之间的距离大(11-15秒),自身车辆行驶还是在驾驶员设定的速度。当距离变小(15-20秒),本车减速,以保持与引导车(上图)的安全距离。

  • 从20到34秒,在前方移动到另一车道的车,和一个新的引导车出现(中图)。因为引线轿厢与自主车辆之间的距离大,则自身车辆加速,直到它到达在27秒驾驶员设定速度。然后,自身车辆继续在驾驶员设定的速度(上图)旅行。

  • 该底部曲线表明加速度是在范围[-3,2]米/秒^ 2范围内。在平滑的过渡行为表明驾驶舒适性是令人满意的。

在基于MPC-ACC设计,底层的优化问题是通过跟踪驾驶者设定的速度受到了来自领先的汽车强制执行的安全距离制定。MPC控制器的设计在自适应巡航控制器部分中描述。要运行与MPC设计的模型,首先激活MPC变种,然后运行下面的命令。这一步需要模型预测控制工具箱软件。您可以使用下面的代码检查该许可证的存在。如果没有代码存在时,类似的结果的样品所示。

hasMPCLicense =许可证('结帐''MPC_Toolbox');如果hasMPCLicense controller_type = 2;SIM('ACCTestBenchExample'“停止时间”'15'%模拟15秒SIM('ACCTestBenchExample'%至模拟场景的结束其他加载数据处理器结束
-->将模型转换为离散时间。-->假设被测输出信道#2的输出干扰为积分白噪声。假设测量输出通道#1无干扰。-->“那”模型噪声“mpc”对象的属性为空。假设每个测量输出通道上有白噪声。答案=Simulink.模拟输出:对数源:[1x1Simulink.SimulationData.Dataset模拟数据集]tout:[151x1 double]模拟元数据:[1x1Simulink.SimulationMetadata模拟元数据]错误消息:[0x0 char]-->正在将模型转换为离散时间。-->假设被测输出信道#2的输出干扰为积分白噪声。假设测量输出通道#1无干扰。-->“那”模型噪声“mpc”对象的属性为空。假设每个金宝app测量输出通道上有白噪声。

在该模拟结果基于MPC-ACC,类似于经典ACC设计,速度和间隔控制的目标得以实现。相较于传统的ACC设计,基于MPC-ACC是更积极的,因为它使用全油门或制动的加速或减速。这种现象是由于在相对距离的明确约束。当在路上突然发生变化时,可以首选的攻击行为,比如当领跑车的变化是一个缓慢的车。为了使控制器较不积极的,打开自适应巡航控制系统块的掩模,并降低的值控制器行为参数。如前所述,中间情节尖峰是由于在传感器模型的不确定性。

要查看模拟与基于MPC-ACC的结果,使用以下命令。

helperPlotACCResults(logsout,default_spacing,time_gap)

在下文中,在试验台模型各子系统的功能更详细地描述。自适应巡航控制器,传感器融合子系统包含两个主要组件:

  1. 跟踪传感器融合子系统

  2. 自适应巡航控制器子系统

开放式系统(“ACCTestBenchExample / ACC与传感器融合”

跟踪和传感器融合

跟踪和传感器融合子系统处理视觉和雷达检测来自于车辆和环境子系统来,并产生围绕自身车辆对环境的综合情况的图片。另外,它提供了最接近的汽车在车道自身车辆前面的估计ACC。

开放式系统(“ACCWithSensorFusionMdlRef /跟踪和传感器融合”

跟踪和传感器融合子系统的主要块是多目标跟踪块,其输入是所有传感器检测和预测时间的组合列表。从多目标跟踪块的输出是确认曲目的列表。

检测连接块串接的视觉和雷达检测。该预测时间由在车辆与环境子系统的时钟驱动。

检测聚类块簇多个雷达检测,由于在每个传感器的每个对象最多一个检测跟踪器的期望。

findLeadCarMATLAB功能块的发现这车是最接近于自身车辆和前方的它同样采用确认的曲目列表和道路的曲率的车道。这款车被称为为龙头的汽车,当汽车在自身车辆前方移入和移出车道可能会改变。该功能提供的位置和相对于所述自身车辆的车铅的速度和索引的最重要的对象(MIO)轨道。

自适应巡航控制

自适应巡航控制器有两个变种:经典的设计(默认)和基于MPC-设计。对于这两种设计,以下设计原则被应用。的ACC装备的车辆(自身车辆)使用传感器融合到的相对距离和相对速度估计到引线车。在ACC使得在驾驶员设定的速度自车辆行驶,同时保持从引导车的安全距离。引导汽车和自我车辆之间的安全距离被定义为

$ {D_安全} = {D_默认} + T_ {差距} \ CDOT V_x $

其中默认间距$ {D_默认} $和时间上的差距$T{gap}$是设计参数和$ V_x $是自身车辆的纵向速度。的ACC生成用于基于以下输入的自主车辆的纵向加速度:

  • 自身车辆的纵向速度

  • 铅汽车和自主车辆(从跟踪和传感器融合系统)之间的相对距离

  • 铅汽车和自主车辆(从跟踪和传感器融合系统)之间的相对速度

考虑到自身车辆的物理限制,纵向加速度被限制在范围[-3,2]$米/秒^ 2 $

在经典ACC设计,如果相对距离小于安全距离,那么首要目标是放慢脚步,保持安全距离。如果相对距离小于安全距离时,则主要目标是达到驾驶员设定的速度,同时保持一定的安全距离。这些设计原则通过Min和交换机模块来实现的。

开放式系统(“ACCWithSensorFusionMdlRef /自适应巡航控制/ ACC古典”

在基于MPC-ACC设计,底层的优化问题是通过跟踪驾驶者设定的速度受到了制约制定。约束强制要求相对距离总是比安全距离。

要配置自适应巡航控制系统的块,使用在所定义的参数帮助racsetup文件。例如,对于设计ACC线性模型$克$,和$克$从车辆动态获得。所述两个开关的块实现简单的逻辑来从传感器处理大量(例如,传感器可以返回中导当没有检测到MIO)。

开放式系统(“ACCWithSensorFusionMdlRef /自适应巡航控制器/ ACC模型预测控制”

有关MPC设计ACC的更多信息,请参阅基于模型预测控制的自适应巡航控制系统

车辆与环境

车辆与环境子系统由两个部分组成:

  1. 车辆动力学和全局坐标

  2. 演员和传感器仿真

开放式系统(“ACCTestBenchExample /车辆和环境”

车辆动态子系统模型的车辆动力学与自行车模型 - 从自动驾驶的工具箱力输入块。车辆动态,具有输入$ U $(纵向加速度)和前转向角$ \ $三角洲,近似为:

在状态向量中,$ V_y $表示横向速度,$ V_x $表示的纵向速度和$ \ $ PSI表示偏航角。在设置在车辆参数帮助racsetup文件。

从车辆动力学(输出如纵向速度$ V_x $和横向速度$ V_y $基于体固定坐标)是。为了获得车辆经过的轨迹,身体固定的坐标通过下面的关系转化为全局坐标:

$$\dot{X}=V{X\cos(\psi)-V{y\sin(\psi),\quad\dot{y}=V{X\sin(\psi)+V{y\cos(\psi)$$

偏航角$ \ $ PSI和偏航角速率$ \ {点\ PSI} $也被转换成度的单位。

驾驶员转向模型的目标是通过控制前转向角使车辆保持在车道上并沿着弯道行驶$ \ $三角洲。这个目标是通过驱动偏航角误差实现$ E_2 $和横向位移误差$ E_1 $零(参见下图),其中

$$ \ {点E_1} = V_xe_2 + V_y,\四E_2 = \磅 -  \ psi_ {DES} $$

所期望的偏航角速率由下式给出$ VX / R $$ R $表示用于道路曲率半径)。

演员和传感器仿真子系统产生用于跟踪和传感器融合所需的合成的传感器数据。运行这个例子之前,驱动方案设计器应用程序用于创建方案,其中包含弯道和多个移动演员的道路上。然后从这个场景中的道路和演员们保存到场景文件ACCTestBenchScenario.mat。就看你如何定义方案,请参阅方案创建部分。

开放式系统(“ACCTestBenchExample /汽车与环境/演员和传感器仿真”

自主车辆的运动由控制系统控制,并且不从脚本文件中读取。取而代之的是,自身车辆位置,速度,偏航角和偏航速率接收从车辆动力学块的输入和使用所述被包装成一个单一的演员姿态结构packEgoMATLAB功能块。

方案读卡器块从场景文件中的演员姿势数据ACCTestBenchScenario.mat. 该块将演员的姿势从场景的世界坐标转换为自我车辆坐标。演员的姿势在由块生成的总线上进行流式处理。在本例中,使用视觉检测发电机雷达探测发电机块。这两种传感器的远程和前瞻性,并提供本车前方的良好覆盖,根据需要为ACC。该传感器使用在自主车辆坐标中的演员的姿势以在自主车辆的前方车辆检测的列表。最后,一个时钟块用作车辆将如何有一个集中的时间源的例子。的时间由多目标跟踪块使用。

方案创建

驱动方案设计器应用程序允许您定义道路和车辆移动的道路上。在这个例子中,可以定义常曲率的两条平行的道路。要定义的路上,你定义的道路中心,道路宽度和倾斜角(如果需要)。道路中心通过沿圆弧的采样点,跨越60度的曲率半径恒定的转动选择。

您可以在场景中定义的所有车辆。要定义车辆的运动,您可以通过一组的航点和速度的定义他们的轨迹。一个快速的方法来定义航点是通过选择先前定义的道路中心的一个子集,具有偏移向左或右的路中心来控制行车中车辆行驶。

这个例子显示了四辆车:一辆在左边车道上的快车,一辆在右边车道上的慢车,一辆在马路对面驶来的车,以及一辆在右边车道上起步,然后向左边车道行驶的车,以通过慢车。

该方案可以使用被修改驱动方案设计器应用程序,并重新保存到同一个场景文件ACCTestBenchScenario.mat。当仿真重新运行方案读卡器块自动拾取这些更改。以编程方式生成的情况下,您可以使用helperScenarioAuthoring功能。

plotACCScenario

生成代码的控制算法

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

hasEmbeddedCoderLicense =许可证('结帐''RTW_Embedded_Coder'

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

如果已嵌入代码许可证rtwbuild('ACCWithSensorFusionMdlRef'结束

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

如果hasEmbeddedCoderLicense set_param(“ACCTestBenchExample / ACC与传感器融合”...'SimulationMode'“软件在环(SIL)”结束

当您运行ACCTestBenchExample模型中,生成代码,编译,以及用于执行ACCWithSensorFusionMdlRef模型。这使您能够通过模拟测试编译代码的行为。

结论

该示例示出了如何实现与传感器融合,使用由自动驾驶工具箱生成的合成数据在Simulink测试弯曲道路集成自适应巡航控制器(ACC),它组件化,并为它自动生成代码。金宝app

bdclose全部的

也可以看看

相关主题