基于MATLAB的传感器融合算法实现自动紧急制动(AEB)算法仿真

本例展示了如何使用自动驾驶工具箱,通过传感器融合算法实现自动紧急制动(AEB)算法仿真开发。

在本例中,将:

1 整合一个基于Simulink和Stateflow的AEB控制器,一个传感器融合算法,被控车辆的车辆动力学模型,一个驾驶场景阅读器,以及雷达和视觉检测发生器。
2 使用驾驶场景设计器应用程序创建的一系列测试场景,在闭环Simulink模型中测试AEB系统。
3 配置软件在环仿真的代码生成设置,自动生成控制算法的C代码。

1. 概述 

自动紧急制动(AEB)是一种先进的主动安全系统,可帮助驾驶员避免或减轻与其他车辆或易受伤害的道路使用者的碰撞。AEB系统可通过以下方式提高安全性:
1. 通过早期识别危急情况并向驾驶员发出警告来预防事故。
2. 通过降低碰撞时速度,减少不可避免的事故的严重性。在某些情况下,AEB系统可以使车辆和被动安全系统为撞击做好准备。
欧洲新车评估项目(Euro NCAP)从2014年开始将AEB城市和城市间系统纳入其安全评级。Euro NCAP继续扩展AEB系统的功能,以保护行人和骑车人等弱势道路使用者。
现在的AEB体系多利用雷达和视觉传感器来辨认被控车辆前方的潜在碰撞目标。为了实现准确、可靠、稳定的检测,同时最大限度地减少误报,往往需要多个传感器。所以传感器融合技术对AEB系统起着重要作用。

2. AEB MIL测试系统的Simulink模型概述

将示例文件文件夹添加到MATLAB搜索路径中。然后,打开本例中使用的主Simulink模型:
addpath(genpath(fullfile(matlabroot,'examples','driving')))
open_system('AEBTestBenchExample')
该模型主要由两个子系统组成:
1.  AEB with Sensor Fusion,包含传感器融合算法和AEB控制器。
2.  Vehicle and Environment,它对被控车辆动力学和环境进行建模用于模拟真实的车辆和周围环境。它包含驾驶场景阅读器和雷达及视觉检测生成器。这些模块为物体检测提供合成传感器数据。
要绘制合成传感器检测、跟踪对象和地面环境的真实数据,请使用鸟眼视图。Bird's-Eye Scope是一个模型级的可视化工具,可以从Simulink模型中打开,工具栏->在 "仿真 "选项卡上,在 "查看结果 "下,单击 "Bird's-Eye Scope"。打开视图后,单击 "查找信号 "来设置信号。仪表板面板显示本车车辆速度、加速度以及自主紧急制动(AEB)和前向碰撞警告(FCW)控制器的状态。

3. 带传感器融合的AEB控制器

打开带有传感器融合子系统的AEB控制器:
open_system('AEBTestBenchExample/AEBwith Sensor Fusion')
该子系统包含跟踪和传感器融合算法以及速度控制器和AEB控制器。
- 跟踪和传感器融合子系统处理来自车辆和环境子系统的视觉和雷达探测的感知信息,并生成最重要物体(MIO)轨迹及其相对于被控车辆的位置和速度等信息。
- 速度控制器子系统通过使用比例积分(PI)控制器使被控车辆以驾驶员设定的速度行驶。
- 加速机器人子系统在AEB被激活时释放车辆节气门,放开车辆动力驱动控制。
- AEB控制器子系统基于刹车时间计算方法实现前向碰撞预警(FCW)和AEB控制算法。
停车时间是指从本车车辆第一次减速踩刹车,到完全停止的时间。停车时间可由下式得到:
FCW系统提醒驾驶员即将与前车发生碰撞。驾驶员要对警报做出反应,并在延迟时间内踩下刹车 Treact
本车车辆与前方目标车辆相撞前的总行驶时间可以用以下方式表示:
当目标车辆的碰撞时间(TTC)变得小于时,FCW警报会被激活。
如果驾驶员没有及时刹车,比如由于分心,AEB系统就会独立于驾驶员采取行动,避免或减轻碰撞。AEB系统通常采用多级制动方式,包括部分制动,然后是完全制动。
打开AEB控制子系统:
open_system('AEBWithSensorFusionMdlRef/AEB Controller')

AEB控制器由多个功能模块组成:

- TTCCalculation,利用目标车辆或最重要物体(MIO)的相对距离和速度计算TTC。

- StoppingTimeCalculation,分别计算FCW、第一和第二阶段部分制动(PB)和完全制动(FB)的停车时间。

- AEB_Logic,它是一个状态机,比较TTC和停车时间,以确定FCW和AEB的激活状态。

4. 车辆和环境
打开 "车辆与环境 "子系统。
open_system('AEBTestBenchExample/Vehicle and Environment')
- 车辆动力学子系统用车辆动力学Blockset中的Vehicle Body 3DOF(Vehicle Dynamics Blockset )模块对本车车辆动力学进行建模。
- 驾驶员转向模型子系统生成驾驶员转向角度,以使本车车辆保持在其车道上,并遵循由曲率K定义的弯曲道路。
- 执行器和传感器仿真子系统生成跟踪和传感器融合所需的合成传感器数据。就在加载Simulink模型后,执行一个回调函数来创建一个具有道路和多个执行器在道路上移动的仿真环境。
也可以通过从主Simulink模型中单击 "运行设置脚本 "或从命令提示符中键入以下内容来运行回调函数。

4.1 helperAEBSetUp脚本

可以从列表中指定与所需场景名称对应的场景编号。

% Create driving scenario

scenariosNames={                            %scenarioNumber

'AEB_CCRs_100overlap.mat',...%1

'AEB_CCRm_100overlap.mat',...%2

'AEB_CCRb_2_initialGap_12m_stop_inf.mat',...%3

'AEB_CCRb_6_initialGap_40m_stop_inf.mat',...%4

'AEB_PedestrianChild_Nearside_50width_overrun.mat'};%5

scenarioNumber= 5;

场景名称是由智能驾驶驾驶场景仿真工程师创建的场景文件:

[scenario,egoCar,actor_Profiles]=...

helperSessionToScenario(scenariosNames{scenarioNumber});

场景文件可以通过drivingScenario使用helperSessionToScenario脚本读取,Scenario Reader块从场景文件中读取执行器姿势数据,该块将场景的世界坐标转换为被控车辆坐标。该块将场景的世界坐标中的执行器姿态转换为本车车辆坐标。并将目标车辆姿态信息传到由该块生成的总线上。视觉检测生成块和雷达检测生成块分别合成目标执行器的视觉和雷达检测目标。

5. 基于Euro-NCAP测试规程的测试AEB系统

Euro-NCAP提供了一系列测试规程,以测试AEB系统在车对车后部(CCR)追尾和易受伤害的道路使用者(VRU)碰撞情况下的性能。

- Euro-NCAP AEB--车对车后部追尾碰撞测试规程。

- Euro-NCAP AEB----易受伤害的道路使用者碰撞测试规程.

自动驾驶工具箱根据Euro-NCAP测试协议为AEB系统提供了预先设计好的驾驶场景。可以使用驾驶场景设计器查看此场景。
AEB Simulink模型读取驾驶场景文件并运行仿真。真模型0.1秒:
sim('AEBTestBenchExample','StopTime','0.1');% Simulate 0.1 seconds
Bird's-Eye Scope显示车辆和儿童行人的地面真实数据。它还显示雷达探测、视觉探测和多物体跟踪器跟踪的物体。在仿真时间的0.1秒,由于儿童行人被车辆挡住,视觉和雷达传感器无法检测到。
仿真模型3.8秒:
sim('AEBTestBenchExample','StopTime','3.8'); % Simulate 3.8seconds
仿真时间为3.8秒时的鸟瞰视图中显示,传感器融合和跟踪算法检测到儿童行人是最重要的对象,AEB系统应用刹车避免了碰撞。

仪表盘面板与鸟瞰视图显示,AEB系统实施了分级制动,被控车辆在碰撞前刹停。AEB状态颜色表示AEB的激活后的制动级别水平。

- 灰色--未激活AEB。
- 黄色--第一阶段部分制动被激活。
- 橙色 - 第二阶段部分制动已激活。
- 红色--完全制动被激活。
将仿真进行到底,结果如图:

sim('AEBTestBenchExample');% Simulate to end of scenario

观察仿真结果

helperPlotAEBResults(logsout);

- 第一张图(TTC与停车时间)分别显示了FCW、第一阶段部分制动、第二阶段部分制动和完全制动的碰撞时间(TTC)和停车时间的比较。

- 第二张图显示了AEB状态机如何根据第一张图的对比结果确定FCW和AEB的激活。

- 第三张图显示的是被控车辆的速度。
- 第四张图显示了被控车辆的加速度。
- 第五张图显示了被控车辆与MIO之间的跟车间距。
在前2秒,被控车辆加速达到设定速度。在2.3秒时,传感器融合算法开始检测儿童行人。检测到后,立即启动FCW。
在2.4秒时,实施第一级别的部分制动,本车车辆开始减速。在2.5秒时,再次实施第二级别的部分制动。
当3.9秒时,被控车辆刹停,被控车辆与儿童行人之间的间隔约为2.4米。在这个场景下,AEB系统已经做出了完全的避免碰撞的动作。

6. 生成控制算法的代码

AEBWithSensorFusionMdlRef模型被配置为支持使用Embedded Coder®软件生成C代码。要检查是否有访问Embedded Coder的权限,请运行。
hasEmbeddedCoderLicense = license('checkout','RTW_Embedded_Coder')
可以为模型生成一个C函数,并通过运行探索代码生成报告:
if hasEmbeddedCoderLicense

rtwbuild('AEBWithSensorFusionMdlRef')

end

可以使用软件在环(SIL)仿真来验证编译后的C代码的行为是否符合预期。要在SIL模式下仿真ACCWithSensorFusionMdlRef引用的模型,请使用。
if hasEmbeddedCoderLicense
set_param('AEBTestBenchExample/AEBwith Sensor Fusion',...
'SimulationMode','Software-in-the-loop(SIL)')
end
当运行AEBTestBenchExample模型时,将为AEBWithSensorFusionMdlRef模型生成、编译和执行代码。这能够通过仿真来测试编译代码的行为。

7. 总结

在这个例子中,用一个闭环的Simulink模型实现了一个AEB系统。该模型由一个基于Simulink和Stateflow的AEB控制器、一个传感器融合算法、被控车辆动力学模型、一个驾驶场景阅读器以及雷达和视觉检测生成器组成。
使用驾驶场景设计器创建的一系列测试场景对AEB系统进行了测试。
现在可以使用其他Euro-NCAP的AEB测试场景来测试AEB系统。可以从驾驶场景设计器中访问这些场景。
从MATLAB搜索路径中删除示例文件文件夹。
rmpath(genpath(fullfile(matlabroot,'examples','driving')))
(0)

相关推荐