基于MATLAB&SIMULINK开发自动驾驶系统第二十三讲利用驾驶场景测试闭环ADAS和智能驾驶算法
本讲展示了如何在Simulink中测试一个闭环ADAS(高级驾驶辅助系统)算法。在闭环ADAS算法中,随着仿真的推进,被控车辆由其场景环境的变化来控制。
为了测试该场景,使用从驾驶场景设计器应用程序中保存的驾驶场景。在这个模型中, 使用场景阅读器块读取场景,然后在鸟瞰范围上直观地验证算法的性能,即自主紧急制动(AEB)系统。
23.1 检查驾驶场景
本讲使用的驾驶场景是基于可以通过驾驶场景设计器应用程序访问的预建EURO-NCAP测试场景之一。有关这些场景的详细信息,请参见 "《基于MATLAB&SIMULINK开发自动驾驶系统第十三讲驾驶场景设计器中的Euro-NCAP驾驶场景》"及《直播回放:Euro-NCAP-驾驶辅助系统测试规程解读 》。
在应用程序中打开场景文件:
drivingScenarioDesigner ('AEB_PedestrianChild_Nearside_50width_overrun.mat')
点击运行,仿真场景。在这个场景中,被控车辆与正在过马路的行人小孩相撞。
在本讲使用的模型中,使用AEB传感器融合算法探测行人小孩,并测试被控车辆是否及时刹车避免碰撞。
23.2 检查模型
该模型使用了 "传感器融合的自主紧急制动 "中所述的AEB算法例子,例子讲解请查看《直播回放-基于MATLAB的传感器融合算法实现自动紧急制动(AEB)算法仿真》。打开模型:
open_system('AEBTestBenchExample')
Scenario Reader块从指定的场景文件中读取非被控执行器和道路相关信息,并输出非被控执行器的运动和状态信息。被控车辆通过输入端口传入该块。
Scenario Reader块位于车辆环境>执行器和传感器仿真子系统中。打开这个子系统。
open_system('AEBTestBenchExample/Vehicleand Environment/Actors and Sensor Simulation')
在 "场景阅读器 "模块中,"驾驶场景设计器 "文件名参数指定场景文件的名称。可以指定MATLAB搜索路径上的场景文件,如本讲中使用的场景文件,或场景文件的完整路径。或者,可以通过将驾驶场景的来源设置为来自工作空间,然后将MATLAB或模型工作空间变量名称设置为有效的drivingScenario的名称来指定一个drivingScenario对象。对象工作区变量。在闭环仿真中,指定drivingScenario对象是有用的,因为它可以更精细地控制指定模型中被控车辆的初始位置。
Scenario Reader块输出了场景中非被控执行器的姿势,这些姿势被传递给视觉和雷达传感器,它们的探测用于确定AEB控制器的行为。这些姿态被传递给视觉和雷达传感器,它们的探测结果被用来决定AEB控制器的行为。
执行器姿态是以车辆坐标输出的,其中:X轴从车辆坐标出发,指向前方。
- X轴指向被控车辆的前方。
- Y轴指向被控车辆的左边。
- 原点位于被控车辆的后轴中心。
虽然这个场景包括一个预定义的被控车辆,但场景阅读器块被配置为忽略这个被控车辆定义。取而代之的是,被控车辆在模型中被定义,并被指定为Scenario Reader块的输入(被控车辆参数的来源被设置为Input port)。随着仿真的推进,AEB算法会确定被控车辆的姿势和跟踪。如果正在开发一个开环算法,其中被控车辆是在驾驶场景中预定义的,则将被控车辆参数Source设置为Scenario。请参考 "《基于MATLAB&SIMULINK开发自动驾驶系统第二十二讲利用驾驶场景开环测试ADAS算法》"。
23.3 可视化仿真
要使方案可视化,请使用 "鸟瞰范围"。从Simulink工具条,在Review Results下,点击Bird's-Eye Scope。然后,在Scope中,点击Find Signals并运行仿真。利用AEB算法,被控车辆及时刹车,避免碰撞。