主要内容

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

这个例子展示了如何实现一个传感器fusion-based汽车自适应巡航控制车辆行驶在弯曲的道路使用传感器融合。

在本例中,您:

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

  2. 测试控制系统闭环仿真软件模型中使用合成数据生成的自动驾驶的工具箱。万博1manbetx

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

介绍

自适应巡航控制系统是一个控制系统,修改自我车辆的速度在反应条件在路上。如定期巡航控制系统,汽车司机集所需的速度;此外,自适应巡航控制系统可以自我车慢下来如果有另一辆车移动较慢的在前面的车道。

ACC的正常工作,自我车辆必须确定前面的车道曲线,哪一辆车是“领导的车”,也就是说,在前面的自我车辆在车道上。一个典型的场景从自我的角度是如下图所示。自我车辆(蓝色)旅行沿着弯曲的道路。起初,领头的车是粉红色的车。然后紫车削减到自我的车道车辆和成为领导的车。过了一会儿,紫色的汽车改变到另一个车道,粉红色的车又成为领导的车。粉色的车之后仍然是领先的汽车。ACC设计必须反应的变化导致汽车在路上。

当前ACC设计主要依靠范围和速度测量范围从雷达,沿着笔直的道路和设计效果最好。中给出了这样的一个系统的一个例子自适应巡航控制系统使用模型预测控制而在汽车自适应巡航控制系统使用FMCW技术(雷达工具箱)。从高级驾驶员辅助系统(ADAS)设计更多的自治系统,ACC必须解决以下问题:

  1. 估计的相对位置和速度的汽车自我车辆和附近有明显的横向运动相对于自我。

  2. 估计前面的车道自我车辆找到哪一辆车在车前面的自我是最接近一个在同一车道。

  3. 其他车辆反应积极行动的环境,特别是,当另一辆车削减到自我车辆的车道。

这个例子演示了两个主要增加现有ACC设计满足这些挑战:添加一个传感器融合系统和更新控制器设计基于模型预测控制(MPC)。传感器融合跟踪系统,利用视觉和雷达传感器提供了以下好处:

  1. 它结合了更好的横向测量位置和速度从视觉传感器获取的范围和速度测量范围从雷达传感器。

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

一个先进的MPC控制器增加了反应的能力更激进的其他车辆的操作环境。相比古典控制器使用PID设计与不断上涨,MPC控制器调节自我的车辆的速度,同时保持严格的安全距离约束。因此,控制器可以应用更激进的动作当环境变化时迅速以类似的方式,人类驱动程序要做什么。

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

打开主仿真软件模型,使用以下命令:万博1manbetx

open_system (“ACCTestBenchExample”)

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

  1. ACC与传感器融合,模型的纵向加速度传感器融合和控制车辆。该组件允许您选择一个经典或模型预测控制的设计。

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

运行相关的初始化脚本在运行模型之前,在仿真软件模型中,点击万博1manbetx运行安装脚本或者,在命令提示符处,键入以下:

helperACCSetUp

脚本加载某些常数模型所需的模型,如场景中对象,车辆参数和ACC设计参数。万博1manbetx默认的ACC是经典的控制器。脚本还创建了公共汽车,需要定义输入和输出控制系统的参考模型。这些公共汽车之前必须定义在工作区中编译模型。模型编译时,额外的仿真软件公共汽车是由各自的自动生成的块。万博1manbetx

绘制的结果模拟和描述自我的环境,包括跟踪对象,使用鸟瞰的范围(自动驾驶工具箱)。鸟瞰的范围是一个模型级,您可以打开从仿真软件将来发布的可视化工具。万博1manbetx在模拟选项卡,在审查结果,点击鸟瞰的范围。打开范围后,单击找到信号设置信号。以下命令运行模拟15秒mid-simulation了解并再次运行到结束模拟收集结果。

sim卡(“ACCTestBenchExample”,“StopTime”,“15”)%模拟15秒sim卡(“ACCTestBenchExample”)%模拟的场景
ans =仿万博1manbetx真软件。模拟Output: logsout: [1x1 Simulink.SimulationData.Dataset] tout: [151x1 double] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

鸟瞰的范围显示传感器融合的结果。它显示了雷达和视觉传感器检测车辆传感器覆盖区域内。它还展示了跟踪维护的多目标跟踪。黄色的跟踪显示最重要的对象(绪):最近的轨道前的自我车道的车辆。我们看到的场景中,最重要的对象是自我的快速移动的车车。当路过的汽车接近缓慢的汽车,它穿过左边的车道,传感器融合系统识别绪。这辆车是更接近自我车辆和比它慢得多。因此,ACC必须缓慢的自我。

古典ACC系统,在以下结果:

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

  • 中间的情节展示了自我的车辆之间的相对距离和铅的车。

  • 底情节展示了自我车辆加速度。

在这个例子中,原始数据的跟踪和传感器融合系统用于ACC设计没有后处理。你可以看到一些“峰值”(情节)由于传感器模型中的不确定性尤其当另一辆车削减进入或离开自我车辆的车道。

查看仿真结果,使用下面的命令。

helperPlotACCResults (logsout default_spacing time_gap)

  • 前11秒,领先的车是远远领先于自我的车辆(中间的情节)。自我车辆加速和达到设定的速度驱动程序(图)。

  • 另一辆车成为领导的车从11到20秒当汽车削减到自我车辆车道(中间的情节)。当领导的车之间的距离和自我车辆(第11 - 15秒)大,自我车辆仍在司机让旅行速度。当距离小(15 - 20秒),自我汽车减慢保持安全距离的车(图)。

  • 从20到34秒,前面的车移动到另一个车道,将出现一个新的领导的车(中间的情节)。因为铅汽车和自我车辆之间的距离很大,自我车辆加速,直到它到达司机让速度27秒。然后,自我车辆继续旅行的司机让速度(图)。

  • 底部情节表明加速度范围内(3 2)m / s ^ 2。顺利表明司机舒适满意的瞬态行为。

MPC-based ACC设计,底层优化问题是制定通过跟踪司机让速度服从执行安全距离领先的汽车。MPC控制器设计了自适应巡航控制部分。与货币政策委员会运行模型设计,首先激活MPC变种,然后运行以下命令。这一步需要模型预测控制工具箱软件。你可以检查这个许可使用以下代码的存在。如果代码不存在,一个示例使用了类似的结果。

hasMPCLicense =许可证(“签出”,“MPC_Toolbox”);如果hasMPCLicense controller_type = 2;sim卡(“ACCTestBenchExample”,“StopTime”,“15”)%模拟15秒sim卡(“ACCTestBenchExample”)%模拟的场景其他的负载data_mpc结束
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 2是集成的白噪声。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。ans =仿万博1manbetx真软件。模拟Output: logsout: [1x1 Simulink.SimulationData.Dataset] tout: [151x1 double] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char] -->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. Assuming no disturbance added to measured output channel #1. -->The "Model.Noise" property is empty. Assuming white noise on each measured output.

在MPC-based ACC的仿真结果,类似于古典ACC设计、速度和间距控制的目标是实现。古典ACC设计相比,MPC-based ACC更激进的,因为它使用满油门或刹车加速或减速。这种行为是由于显式约束的相对距离。攻击行为可能喜欢在路上发生突然变化时,例如当汽车变化是一个缓慢的汽车。控制器不那么咄咄逼人,打开面罩的块自适应巡航控制系统,并减少的价值控制器的行为参数。如前所述,中间的峰值情节的不确定性是由于传感器模型。

查看仿真结果MPC-based ACC,使用下面的命令。

helperPlotACCResults (logsout default_spacing time_gap)

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

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

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

open_system (“ACCTestBenchExample / ACC与传感器融合”)

跟踪和传感器融合

跟踪和传感器融合子系统流程视觉和雷达探测来自车辆和环境子系统和生成一个综合情况自我车辆周围的环境的照片。此外,它提供了ACC的估计最近的汽车前面的车道自我。

open_system (“ACCWithSensorFusionMdlRef /跟踪和传感器融合”)

跟踪和传感器融合子系统的主要部分是多目标跟踪(自动驾驶工具箱)块的输入组合列表的所有传感器检测和预测时间。多目标跟踪器的输出块的列表跟踪确认。

检测连接(自动驾驶工具箱)块连接愿景和雷达探测。预测时间由时钟驱动的车辆和环境子系统。

检测聚类块集群多个雷达探测,因为追踪预计最多一个检测/对象/传感器。

findLeadCarMATLAB功能块发现哪一辆车是最接近自我之前,车辆和它在同一车道使用的名单确认轨道和道路的曲率。这辆车被称为领导的车,可能会改变,当汽车进入车道的车辆前的自我。函数提供了领先的汽车的位置和速度相对于自我最重要的车辆和索引对象(绪)跟踪。

自适应巡航控制

自适应巡航控制器有两个变量:一个经典的设计(默认)和MPC-based设计。对于设计,应用以下设计原则。ACC装备车辆(自我车辆)使用传感器融合估计的相对距离和相对速度领先的汽车。ACC使自我在司机让汽车旅行速度,同时保持一定的安全距离领先的汽车。领导的车之间的安全距离和自我车辆被定义为

美元D_{安全}= D_{默认}+ T_{差距}\识别cdot V_x美元

在默认的间距美元D_{默认}$,时间差距T_}{差距识别美元设计参数和V_x美元是自我的纵向速度。ACC的纵向加速度产生自我车辆基于以下输入:

  • 自我纵向速度的车辆

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

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

考虑到自我的物理限制车辆,纵向加速度约束的范围(3 2)米/秒^ 2美元

在古典ACC设计中,如果相对距离小于安全距离,然后主要目标是减缓和维护一个安全的距离。如果相对距离大于安全距离,然后主要目标是达到司机让速度,同时保持一个安全的距离。这些设计原则通过最小和开关块。

open_system (“ACCWithSensorFusionMdlRef /自适应巡航控制器/ ACC经典”)

MPC-based ACC设计,底层优化问题是制定通过跟踪司机让速度受到限制。相对距离的约束执行总是大于安全距离。

配置自适应巡航控制系统,使用中定义的参数helperACCSetUp文件。例如,ACC的线性模型设计G美元,G美元从车辆动力学。两个开关块实现简单的逻辑来处理大量的传感器(例如,传感器可能返回当它不检测MIO)。

open_system (“ACCWithSensorFusionMdlRef /自适应巡航控制器/ ACC模型预测控制的)

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

汽车与环境

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

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

  2. 演员和传感器仿真

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

汽车与自行车动力学子系统模型车辆动力学模型——力输入块的自动驾驶的工具箱。车辆动态,与输入你美元纵向加速度和转向角\三角洲美元,近似:

状态向量,V_y美元表示横向速度,V_x美元表示纵向速度和\ psi美元表示偏航角。提供的车辆参数helperACCSetUp文件。

车辆动力学的输出(如纵向速度V_x美元和横向速度V_y美元)是基于身体固定坐标。获得车辆的轨迹穿越,身体固定坐标转换成全局坐标通过以下关系:

$ $ {X} = V_x \ \点cos (\ psi) -V_y \罪(\ psi) \四\点{Y} = V_x \罪(\ psi) + V_y \ cos (\ psi) $ $

偏航角\ psi美元和偏航角速率$ \点{\ psi} $也转化成度的单位。

司机转向模型的目标是保持车辆在车道和遵循弯曲的道路通过控制转向角\三角洲美元。这一目标是通过驾驶偏航角误差e_2美元和侧向位移误差e_1美元为零(见下图)

$ $ \点{e_1} = V_xe_2 + V_y \四e_2 = \ psi - \ psi_ {des} $ $

所需的偏航角速率是由Vx / R美元(R美元表示道路曲率半径)。

演员和传感器仿真子系统生成合成所需的传感器数据跟踪和传感器融合。在运行这个例子之前,驾驶场景设计师(自动驾驶工具箱)应用程序是用于创建一个场景和一个弯曲的道路和多个演员的道路上移动。从这个场景和演员的道路被出口到MATLAB函数ACCTestBenchScenario.m。看看你可以定义的场景,看到的场景创建部分。

open_system (“ACCTestBenchExample /车辆和环境/演员和传感器仿真”)

自我控制的车辆的运动控制系统,而不是从场景中读取文件。相反,自我车辆位置、速度、偏航角和偏航率收到车辆动力学作为输入块和打包到一个演员构成结构使用packEgoMATLAB功能块。

场景的读者(自动驾驶工具箱)构成的数据块读取演员场景在工作区中变量加载。模型运行ACCTestBenchScenario.m场景加载到工作空间的模拟。你也可以加载场景模型中通过单击运行场景脚本按钮。块的演员带来了从世界坐标转换场景进自我车辆坐标。演员的姿势是流在公共汽车上生成的块。在本例中,您使用一个视觉检测发电机(自动驾驶工具箱)块和雷达检测发电机(自动驾驶工具箱)块。传感器远程和前瞻性,并提供良好的覆盖前面的自我,作为ACC的需要。传感器使用自我中的演员提出了车辆坐标生成列表的车辆检测前的自我。最后,使用时钟块为例,说明车辆会有集中的时间源。使用的时间是多目标跟踪。

场景创建

驾驶场景设计师应用程序允许您定义道路和车辆在道路上移动。对于本例,您常曲率的定义两个平行的道路。定义,定义道路中心、道路宽度、和银行的角度(如果需要)。选择的道路中心抽样点沿着圆弧,跨越60度的转弯恒定曲率半径。

您定义的所有车辆的场景。你定义的运动车辆,定义他们的轨迹路标点和速度。快速定义路径点的方法是通过选择道路中心前面定义的一个子集,以抵消到左边或者右边路的中心控制的车道的车辆。

这个例子展示了四个工具:一个快速移动的汽车在左边的车道,缓慢移动的汽车在右车道,一辆车接近的对面马路,右车道上一辆车开始,然后移动到左边的车道通过缓慢的汽车。

场景可以修改使用驾驶场景设计师应用,导出并保存到同一个场景文件ACCTestBenchScenario.m。读者块的场景模拟运行时自动拿起了变化。以编程方式构建场景,您可以使用helperScenarioAuthoring函数。

plotACCScenario

生成代码的控制算法

虽然整个模型不支持代码生成,万博1manbetxACCWithSensorFusionMdlRef模型配置为支持使用嵌入式编码器软件生成C代码。万博1manbetx检查如果你有访问嵌入式编码器,运行:

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

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

如果hasEmbeddedCoderLicense rtwbuild (“ACCWithSensorFusionMdlRef”)结束

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

如果hasEmbeddedCoderLicense set_param (“ACCTestBenchExample / ACC与传感器融合”,“SimulationMode”,“Software-in-the-loop (SIL)”)结束

当您运行这个ACCTestBenchExample模型、代码生成、编译和执行ACCWithSensorFusionMdlRef模型。这使您能够通过模拟测试编译的代码的行为。

结论

这个例子展示了如何实现一个完整的自适应巡航控制(ACC)与传感器融合,弯曲的道路测试它在仿真软件使用合成数据生成的自动驾驶工具箱,组件化,并自动生成代码。万博1manbetx

bdclose所有

另请参阅

相关的话题