与传感器融合自动紧急制动
这个例子展示了如何实现自动紧急制动(AEB)使用一个传感器融合算法。
介绍
自动紧急制动是一种先进的主动安全系统,帮助司机避免或减轻与其他车辆碰撞。
欧洲新车评估项目(欧洲五星®)包括AEB城市和都市间的系统自2014年以来其安全评级。欧元NCAP继续促进AEB系统保护易受伤害的道路使用者,如行人和骑自行车的人。
今天,AEB系统大都使用雷达和视觉传感器来识别潜在的碰撞伙伴的自我。这些系统通常需要多个传感器获取准确、可靠和健壮的检测,同时尽量减少误报。结合各种传感器的数据,多个传感器AEB系统使用传感器融合技术。这个例子展示了如何使用一个传感器融合算法实现AEB。在本例中,您:
探索试验台模型——模型包含传感器和环境中,传感器融合和跟踪,决策逻辑、控制和车辆动力学。
AEB控制器模型——使用仿真万博1manbetx软件®和Stateflow®集成制动控制制动控制器和非线性模型预测控制器(NLMPC)加速度和转向控制。
模拟试验台模型——你可以配置试验台模型为不同的场景基于欧洲五星测试协议。
生成c++代码——生成c++代码和测试software-in-the-loop (SIL)模拟传感器融合的决策逻辑,控制算法。
探索更多的场景在附加条件下,这些场景测试系统。
探索试验台模型
在本例中,您使用系统级仿真试验台模型来探索AEB系统控制器的行为。
探索试验台模型,打开一个工程实例文件的工作副本。MATLAB®将文件复制到一个文件夹中,这样您就可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”)helperDrivingProjectSetup (“AutonomousEmergencyBraking.zip”workDir = pwd);
减少输出命令窗口,关闭模型预测控制(MPC)更新消息。
mpcverbosity (“关闭”);
打开系统级仿真试验台模型。
open_system (“AEBTestBench”);
打开这个模型运行helperSLAEBSetup
helper函数,初始化场景中使用drivingScenario
对象的基本工作空间。它运行默认的测试场景,scenario_25_AEB_PedestrianTurning_Nearside_10kph
,包含一个自我车辆和行人。这个设置功能还配置控制器设计参数、车辆模型参数,仿真软件总线信号定义所需的输入和输出万博1manbetxAEBTestBench
模型。
试验台模型包含这些模块:
传感器和环境
子系统,指定了道路、演员、摄像头,用于模拟和雷达传感器。传感器融合和跟踪
——算法模型,融合的车辆检测相机的雷达传感器。AEB决策逻辑
——算法模型,指定了横向和纵向的决策逻辑,它提供了最重要的对象(绪)相关信息和自我车辆控制器参考路径信息。AEB控制器
——算法模型,指定了转向角和加速度控制。车辆动力学
子系统,指定自我车辆的动态模型。指标的评估
——子系统评估系统级的行为。
的车辆动力学
自我车辆使用自行车模型子系统模型,并使用命令收到更新其状态AEB控制器
模型。为更多的细节车辆动力学
子系统,看到高速公路车道后的例子。
情节合成传感器探测、跟踪对象,和地面实况数据,使用鸟瞰的范围。的鸟瞰的范围是一个模型级可视化工具,您可以打开工具栏从仿真软件模型。万博1manbetx在模拟选项卡,在审查结果,点击鸟瞰的范围。打开范围后,单击更新信号设置信号。仪表盘面板显示这些自我车辆参数:速度,加速度,AEB状态,向前碰撞警告(结合)状态和安全状态。
的传感器和环境
子系统配置道路网络,定义目标演员轨迹,综合传感器。打开传感器和环境
子系统。
open_system (“AEBTestBench /传感器和环境”)
自我的子系统指定场景和传感器车辆使用这些块:
的场景的读者块读取
drivingScenario
对象从基地工作区,然后读取演员来自该对象的数据。块使用自我车辆信息进行闭环仿真,然后输出的地面实况信息场景演员和他们在自我车辆轨迹坐标。
的传感器融合和跟踪
算法模型流程视觉和雷达探测和生成的位置和速度跟踪车辆相对于自我。打开AEBSensorFusion
算法模型。
open_system (“AEBSensorFusion”);
的AEBSensorFusion
模型包含这些块:
检测连接-结合了视觉和雷达探测到一个输出总线。
多目标跟踪,执行传感器融合和输出固定和移动对象的轨迹。这些跟踪更新预测的时间,指定一个数字时钟块
传感器和环境
子系统。
的AEBDecisionLogic
算法模型指定了横向和纵向的决定基于预定义的自我参考路径和轨迹。打开AEBDecisionLogic
算法模型。
open_system (“AEBDecisionLogic”);
的AEB决策逻辑
算法模型包含这些块:
自我参考路径生成器
——估计曲率、相对偏航角和横向偏差的自我车辆使用当前自我位置和参考路径信息传感器和环境
子系统。块也决定如果自我车辆达到它的目标。
发现领导的车
——发现领导的车,前面的绪自我车辆在同一车道上。此块输出自我车辆之间的相对距离和相对速度和绪。
模型AEB控制器
的AEBController
算法模型实现的主要算法指定纵向和横向控制。打开AEBController
算法模型。
open_system (“AEBController”);
的AEBController
模型包含这些子系统:
控制器模式选择器
——释放车辆油门当AEB被激活。
NLMPC控制器
——读自我纵向速度、曲率序列,相对偏航角和横向偏差,然后输出自我车辆的转向角和加速度。打开NLMPC控制器
引用的子系统。
open_system (“AEBController / NLMPC控制器”)
这个例子使用一个非线性MPC控制器的预测模型有7个州,三个输出变量,两个操纵变量。
州
横向速度
偏航率
纵向速度
纵向加速度
横向偏差
相对偏航角
输出扰动相对偏航角
输出变量
纵向速度
横向偏差
偏航角和偏航角的和输出扰动
被操纵的变量
加速度
操舵
控制器模型道路曲率和纵向速度的乘积作为测量的干扰。预测层和控制层是指定的helperSLAEBSetup
函数。状态函数的非线性植物模型及其雅可比矩阵指定helperNLMPCStateFcn
功能和helperNLMPCStateJacFcn
函数,分别。NLMPC控制器使用的连续时间预测模型的输出方程中定义helperNLMPCOutputFcn
函数。操纵变量的约束和权重标准MPC成本函数中定义helperSLAEBSetup
当它创建函数nlmpc
对象。在这个例子中,NLMPC控制器不支持零初始速度的自我。万博1manbetx
在这个例子中,一个扩展卡尔曼滤波器(EKF)提供了七个州的状态估计。卡尔曼滤波器的状态转换函数的定义helperEKFStateFcn
功能,测量中定义的函数helperEKFMeasFcn
函数。更多细节设计一个非线性MPC控制器,明白了使用非线性模型预测控制后巷(模型预测控制工具箱)。
的制动控制器
子系统实现了结合和AEB控制算法基于制动时间的计算方法。
停止时间指的是时间从自我车辆第一次应用它刹车时,当涉及到一个完整的停止。你可以找到停车时间利用这个方程:
,
在哪里是自我车辆的速度。
结合系统提醒司机即将碰撞导致车辆。司机预计将反应警报和制动延迟时间,。
的总旅行时间自我车辆在碰撞导致车辆可以表示为:
当time-to-collision (TTC)领导车辆小于,结合警报激活。
如果司机不能及时制动,如由于分心,AEB系统独立于司机的行为,以避免或减轻碰撞。AEB系统通常应用级联制动,它由多级部分制动完全制动[1]。
打开制动控制器
子系统。
open_system (“AEBController /制动控制器”)
的制动控制器
子系统包含这些块:
TTCCalculation
——计算使用的相对距离和速度的TTC引导车辆。StoppingTimeCalculation
——结合计算停车时间,第一阶段的部分制动(PB),和全制动(神奇动物)。AEBLogic
状态机,比较了TTC计算停车时间来确定结合和AEB激活。
AEB控制器
输出的转向角和加速度命令确定加速或减速。
探索指标评估
的指标的评估
子系统支持系统级指标评价使用地面实况信息的场景。打开指标的评估
子系统。
open_system (“AEBTestBench /指标评估”);
在本例中,您可以使用这些度量评估AEB系统:
检查碰撞
——验证是否与目标演员自我车辆碰撞仿真期间任何时候。检查安全
——自我验证车辆在规定的阈值safetyGoal
在整个模拟。使用helperAEBSetup
post-load回调函数定义safetyGoal
。
模拟AEB模型
模拟试验台模型与场景基于欧洲五星测试协议。欧洲五星提供一系列的测试协议测试AEB系统的性能在一辆车搬到另外一辆车,后面(CCR)[2]和弱势道路使用者(VRU)[3]场景。
这个示例使用的闭环仿真这两个场景。然后分析结果。
scenario_23_AEB_PedestrianChild_Nearside_50width
scenario_25_AEB_PedestrianTurning_Nearside_10kph
模拟scenario_23_AEB_PedestrianChild_Nearside_50width
配置AEBTestBench
模型scenario_23_AEB_PedestrianChild_Nearside_50width
场景。在这个场景中,一个孩子步行穿越从右边路的左边。自我车辆向前行驶,与儿童行人碰撞。在碰撞时,行人的50%在自我的宽度。
helperSLAEBSetup (scenarioFcnName =“scenario_23_AEB_PedestrianChild_Nearside_50width”);
试验台模型读取drivingScenario
对象和运行一个模拟世界中。
模拟模型0.1秒。
sim卡(“AEBTestBench”StopTime =“0.1”);%模拟0.1秒
的鸟瞰的范围显示的地面实况数据和儿童行人车辆。它还显示了雷达检测、视觉检测、多目标跟踪和对象跟踪。模拟以0.1秒的成绩,摄像机和雷达传感器不检测儿童行人和其他车辆阻碍他们的视线。
模拟模型2.8秒。
sim卡(“AEBTestBench”StopTime =“2.8”);%模拟2.8秒
更新鸟瞰的范围。注意,传感器融合和跟踪算法检测儿童行人绪,这AEB系统适用于刹车以避免碰撞。
仪表盘面板显示AEB系统应用级联刹车停止自我车辆在碰撞点。AEB指示器的颜色指定AEB激活水平。
灰色——AEB不激活。
黄色——第一阶段部分制动。
橙色-第二阶段部分制动。
红色——全制动。
模拟的场景。然后,绘制结果通过helperPlotAEBResults
helper函数。
sim卡(“AEBTestBench”);%模拟的场景helperPlotAEBResults (logsout scenarioFcnName);
TTC和停止时间——比较time-to-collision和停止时间结合,第一阶段部分制动,第二阶段部分制动,分别和全制动。
结合和AEB状态——显示结合和AEB激活状态根据比较结果从第一个情节。
自我汽车加速度——显示自我车辆的加速度。
自我汽车偏航和偏航率——显示了偏航和偏航率的自我。
自我的车速度——显示自我的车辆的速度。
进展——展示了自我的车辆之间的进展和绪。
在第一个2秒,自我车辆加速达到指定的速度。在2.3秒,传感器检测到的第一个孩子行人。后立即检测,结合自动化系统激活。
在2.4秒,AEB系统应用的第一阶段部分制动,和自我车辆开始慢下来。
当涉及到一个完整的自我车辆停在4.1秒,自我之间的进展车辆和孩子步行约2.1米。AEB系统完全避免碰撞在这个场景中。
模拟与scenario_25_AEB_PedestrianTurning_Nearside_10kph
配置AEBTestBench
模型scenario_25_AEB_PedestrianTurning_Nearside_10kph
场景。在这种情况下,自我车在一个十字路口向右拐,碰撞和成年行人过马路的对面的十字路口。在碰撞的时候,行人穿越的宽度的50%额自我车辆的结构。
helperSLAEBSetup (scenarioFcnName =“scenario_25_AEB_PedestrianTurning_Nearside_10kph”);
模拟模型和阴谋的结果。
sim卡(“AEBTestBench”);helperPlotAEBResults (logsout scenarioFcnName);
第9.5秒,自我车辆在指定的速度传播。首先在9.5秒,传感器检测到行人在路口,自我车辆后右拐。尽管短期进展自我之间的车辆和行人,AEB系统只适用于第一个部分制动由于低自我车辆的速度。
生成c++代码
如果你有许可证仿真软件编码器™和嵌入式编码™,您可以生成便万博1manbetx于部署的代码如AEB传感器融合算法模型,AEB决策逻辑,AEB控制器嵌入式实时(ERT)目标。
你可以验证编译c++代码使用software-in-the-loop模拟表现如预期。模拟被引用的模型在SIL)模式下,输入这些命令。
set_param (“AEBTestBench /传感器融合和跟踪”,……SimulationMode = " Software-in-the-loop (SIL)”) set_param (“AEBTestBench / AEB决策逻辑”,…SimulationMode = " Software-in-the-loop (SIL)”) set_param (“AEBTestBench / AEB控制器”,…SimulationMode = " Software-in-the-loop (SIL)”)
当您运行这个AEBTestBench
模型、代码生成、编译和执行AEBSensorFusion
,AEBDecisionLogic
和AEBController
模型。这使您能够通过模拟测试编译的代码的行为。
探索更多的场景
在这个例子中,你有探索的系统行为scenario_25_AEB_PedestrianTurning_Nearside_10kph
和scenario_23_AEB_PedestrianChild_Nearside_50width
场景。这个示例提供了额外的场景兼容的AEBTestBench
模型:
scenario_01_AEB_Bicyclist_Longitudinal_25width
scenario_02_AEB_Bicyclist_Longitudinal_50width
scenario_03_AEB_Bicyclist_Longitudinal_75width
scenario_04_AEB_CCRb_2_initialGap_12m
scenario_05_AEB_CCRb_2_initialGap_40m
scenario_06_AEB_CCRb_6_initialGap_12m
scenario_07_AEB_CCRb_6_initialGap_40m
scenario_08_AEB_CCRm_50overlap
scenario_09_AEB_CCRm__50overlap
scenario_10_AEB_CCRm_75overlap
scenario_11_AEB_CCRm__75overlap
scenario_12_AEB_CCRm_100overlap
scenario_13_AEB_CCRs_50overlap
scenario_14_AEB_CCRs__50overlap
scenario_15_AEB_CCRs_75overlap
scenario_16_AEB_CCRs__75overlap
scenario_17_AEB_CCRs_100overlap
scenario_18_AEB_Pedestrian_Farside_50width
scenario_19_AEB_Pedestrian_Longitudinal_25width
scenario_20_AEB_Pedestrian_Longitudinal_50width
scenario_21_AEB_Pedestrian_Nearside_25width
scenario_22_AEB_Pedestrian_Nearside_75width
scenario_23_AEB_PedestrianChild_Nearside_50width
scenario_24_AEB_PedestrianTurning_Farside_10kph
scenario_25_AEB_PedestrianTurning_Nearside_10kph
(默认)scenario_26_AEB_CCFtap_VUT_10kph_GVT_30kph
这些场景创建使用驾驶场景设计师应用程序,然后出口到场景文件。您可以配置AEBTestBench
模型和模拟这些场景使用工作区helperSLAEBSetup
函数。例如,配置的模拟scenario_01_AEB_Bicyclist_Longitudinal_25width
场景中,输入这个命令。
helperSLAEBSetup (scenarioFcnName =“scenario_01_AEB_Bicyclist_Longitudinal_25width”);
当你完成这个示例,使货币政策委员会再次更新消息。
mpcverbosity (“上”);
引用
[1]Hulshof,卫斯理,伊恩•奈特,阿历克斯爱德华兹,马修·艾弗里和科林格。“自动紧急制动测试结果。”在学报》第23届国际技术会议上加强安全的车辆(ESV)13号,纸- 0168。首尔,韩国:ESV会议,2013。
[2]欧洲新车评估项目(欧洲五星)。测试协议- _AEB系统。2.0.1版本。2017年11月,欧洲NCAP)。
[3]欧洲新车评估项目(欧洲五星)。测试协议- AEB VRU系统。2.0.2版本。2017年11月,欧洲NCAP)。