基于MATLAB&SIMULINK开发自动驾驶系统第二十二讲利用驾驶场景开环测试ADAS算法
本讲讲述了如何在基于MATLAB&SIMULINK开环测试ADAS(高级驾驶辅助系统)算法。在开环ADAS算法中,被控车辆行为是预定义的,在仿真过程中不会随着场景的推进而改变。
为了测试该算法,使用从驾驶场景设计器应用程序中保存的驾驶场景。在这个例子中, 通过使用场景阅读器块读取场景,然后在鸟瞰范围上可视化场景和传感器探测。
22.1 检查驾驶场景
本讲使用的驾驶场景基于通过驾驶场景设计器应用程序访问的预建场景之一。有关这些场景的详细信息,请参见 "《基于MATLAB&SIMULINK开发自动驾驶系统第十二讲驾驶场景设计器中的预设的驾驶场景》" 。
在应用程序中打开场景文件。
drivingScenarioDesigner('LeftTurnScenario.mat')
要仿真这个场景,点击运行。在这个场景中,被控车辆向北行驶,直行通过一个十字路口。一辆从十字路口左侧驶来的车辆向左转弯,最后以在被控车辆前。
被控车辆有这些传感器:
- 前面的雷达,用于物体探测功能
- 一种用于生成物体和车道边界探测的前置摄像头和后置摄像头。
- 其车顶中心的激光雷达,用于生成场景的点云数据。
22.2 检查模型
本讲中的模型是通过选择 "导出">"导出Simulink模型 "从应用程序中生成的。在模型中,一个Scenario Reader块从场景文件中读取执行器和道路,并输出非被控执行器和车道边界。打开模型。
open_system('OpenLoopWithScenarios.slx')
在 "场景阅读器 "块中,"驾驶场景设计器 "文件名参数指定场景文件的名称。可以指定MATLAB搜索路径上的场景文件,如本例中使用的场景文件,或场景文件的完整路径。另外,也可以通过将驾驶场景的Source设置为From工作空间,然后将MATLAB或模型工作空间变量名称设置为有效的drivingScenario对象工作空间变量的名称,来指定一个drivingScenario对象。
Scenario Reader块输出场景中非被控车辆的姿势和被控车辆的左车道和右车道边界。要输出道路上的所有车道边界,其中的 被控车辆正在行驶中,选择对应的车道边界选项输出参数。
执行器、车道边界和被控车辆姿势被传递给包含传感器块的子系统。打开子系统。
open_system('OpenLoopWithScenarios/DetectionGenerators')
雷达探测生成器、视觉探测生成器和激光雷达点云生成器块从场景中产生合成探测。可以融合这些传感器数据来生成跟踪。
该模型中传感器块的输出以车辆坐标为单位,其中
- X轴从被控车辆向前指。
- Y轴指向被控车辆的左边。
- 原点位于被控车辆的后轴中心。
因为这个模型是开环的,被控车辆的行为不会随着仿真的推进而改变。因此,将被控车辆参数的来源设置为Scenario,块从scenario文件中读取预定义的被控车辆姿势和跟踪。对于车辆控制器和其他闭环模型,将被控车辆参数的来源设置为输入端口。使用该选项,可以指定模型中定义的被控车辆作为场景阅读器块的输入。
22.3 可视化仿真
要可视化方案和传感器探测,请使用"鸟瞰范围"。在Simulink工具条上,在Review Results下,单击Bird's-Eye Scope。然后,在范围中,单击查找信号并运行仿真。
22.4更新仿真设置
这个模型使用默认的仿真停止时间为10秒。由于场景只有5秒左右,所以即使在场景结束后,仿真也会在鸟瞰范围内继续运行。为了同步仿真和场景的停止时间,在Simulink模型工具栏上,将仿真停止时间设置为5.2秒,这正是应用场景的停止时间。运行仿真后,应用会在场景画布的右下角显示这个数值。
如果仿真在 "鸟瞰范围 "中运行速度过快,可以通过使用仿真步调来减慢仿真速度。在Simulink工具条上,选择 "运行">"仿真步调"。选择 "Enable pacing to slow down simulation"复选框,并将仿真时间减少到略小于1秒/挂钟秒,如0.8秒。然后,在 Bird's-Eye Scope 中重新运行仿真。