分享

基于MATLAB&SIMULINK开发自动驾驶系统第二十一讲使用驾驶场景设计器生成传感器感知模块

 小明师兄 2021-10-26

本讲展示了如何使用驾驶场景设计器应用程序更新Simulink模型的雷达和摄像头传感器。驾驶场景设计器应用程序使能够快速、互动地生成多个传感器配置。然后,可以在现有的Simulink模型中使用这些生成的传感器配置来更彻底地测试的自动驾驶算法。

在开始此讲之前,请将本讲文件文件夹添加到MATLAB搜索路径中:

addpath(genpath(fullfile(matlabroot,'examples','driving'))) 

检查和仿真模型

本讲中使用的模型实现了自主紧急制动(AEB)传感器融合算法。有关此模型的详细内容,请阅读《基于MATLAB的传感器融合算法实现自动紧急制动(AEB)算法仿真》。

打开此模型:

open_system('AEBTestBenchExample')                           

用于测试算法的驾驶场景和传感器探测生成器位于:

车辆环境 > 执行器和传感器仿真子系统。

打开这个子系统:

open_system('AEBTestBenchExample/Vehicleand Environment/Actors and Sensor Simulation')

场景读取器块从指定的驾驶场景设计文件中读取执行器和道路。该块输出非被控执行器,然后将这些执行器传递给雷达探测生成器和视觉探测生成器传感器块。然后,这些执行器被传递给雷达探测生成器和视觉探测生成器传感器块。在仿真过程中,这些块会生成非被控执行器的探测。 

在 "鸟瞰范围 "上仿真和可视化场景。在模型工具条上,在 "审查结果 "下,单击 "鸟瞰范围"。在范围中,单击查找信号,然后单击运行以运行仿真。在这个场景中,AEB模型使被控车辆及时刹车,避免了碰撞的发生与一个正在过马路的行人小孩。

在此讲中, 将用在驾驶场景设计器应用程序中创建的新传感器替换此模型中的现有传感器。

21.1 在应用程序中加载场景 

该模型使用的驾驶场景是基于预制的Euro-NCAP测试场景之一。可以从驾驶场景设计器应用程序加载这些场景。有关这些场景的更多详细信息,请参见 《基于MATLAB&SIMULINK开发自动驾驶系统第十三讲驾驶场景设计器中的Euro-NCAP驾驶场景》 。

将场景文件加载到应用程序中。

drivingScenarioDesigner ('AEB_PedestrianChild_Nearside_50width_overrun.mat')

要在应用中仿真场景,点击运行。在应用程序仿真中,与模型仿真中不同,被控车辆与行人相撞。应用程序使用预定义的被控车辆跟踪。而模型则采用AEB算法控制跟踪,使被控车辆制动。

21.2加载传感器

加载的场景文件只包含场景中的道路和执行器。另一个单独的文件包含传感器。要将这些传感器加载到场景中,在应用工具条上,选择打开 > 传感器。打开位于示例文件夹中的AEBSensor.mat文件。或者,从 的MATLAB根目录下

文件夹,导航到并打开这个文件:

matlabroot/examples/driving/AEBSensors.mat

一个雷达传感器安装在被控车辆的前保险杠上。一个摄像头传感器安装在被控车辆的前窗上。

21.3 更新传感器 

通过改变雷达和摄像头传感器在被控车辆上的位置来更新它们。

1 在 "传感器画布 "上,单击并将雷达传感器拖动到预定义的 "前窗口 位置。

2 单击并将相机传感器拖动到预定义的前保险杠位置。在此预定义位置,应用程序会将摄像头从短距离传感器更新为长距离传感器。

3 可选地,在左侧窗格的 "传感器 "选项卡上,尝试修改摄像头和雷达传感器的参数。例如,可以更改探测概率或精度和噪声设置。

4 将此新场景和传感器配置的副本保存到可写位置。

有关在应用程序中使用传感器的更多详情,请参阅 "《基于MATLAB&SIMULINK开发自动驾驶系统第十五讲交互式地创建车辆反向运动驾驶场景》"。

此图显示了更新的传感器配置示例。


21.4 将场景和传感器导出到Simulink

要为场景及其传感器生成Simulink块,请在应用程序工具条上选择 "导出">"导出Simulink模型"。该模型显示了从应用程序中导出的示例块:

open_system('AEBGeneratedScenarioAndSensors')

如果没有对场景中的道路和执行器进行任何更改,那么场景读取器块会读取AEB模型中使用的相同道路和执行器数据。雷达探测生成器和视觉探测生成器块对在应用程序中创建的雷达和摄像机进行建模。

21.5 将导出的场景和传感器复制到现有模型中 

用新生成的场景和传感器替换AEB模型中的场景和传感器。即使没有修改道路和执行器,也没有从同一个场景文件中读取数据,替换现有的Scenario Reader块仍然是一个最佳做法。使用这个生成的块可以使场景和传感器的总线名称保持一致,因为数据在它们之间传递。 

要开始,在AEB模型中,重新打开 "车辆环境">"执行器和传感器仿真 "子系统。

open_system('AEBTestBenchExample/Vehicleand Environment/Actors and Sensor Simulation') 

接下来,要应对生成的场景和传感器块,按照以下步骤进行。

1 删除现有的场景读取器、雷达探测生成器和视觉探测生成器模块,不要删除场景读取器模块的输入信号线和传感器模块的输出信号线。不要删除输入到场景读取器块或从传感器块输出的信号线。或者,断开这些块而不删除它们,并将它们从模型中注释出来。使用此选项,可以将现有的块与新的块进行比较,如果需要的话,可以返回。选择每个块。然后,在 " "选项卡上,选择 "注释"

2 将生成模型中的块复制到AEB模型中。

3 打开复制进来的Scenario Reader块,将被控车辆参数的来源设置为Input port。单击 "确定"。AEB模型在收拾被控行动器块中定义了被控车辆,将其连接到场景阅读器块的被控车辆端口。

4将现有的信号线连接到复制进来的块中。要清理模型的布局,在模型的 "格式 "选项卡上,选择 "自动排列"。

5 验证更新后的子系统块图是否与之前的块图相似。然后,保存模型,或将模型的副本保存到可写位置。

21.6 仿真更新的模型 

要想直观地看到更新后的场景仿真,请重新打开 "鸟瞰范围",点击 "查找信号",然后点击 "运行"。查看在这个更新的传感器配置下,被控车辆有没有及时刹车。

要尝试不同的传感器配置,请重新加载应用程序中的场景和传感器,导出新的场景和传感器,并将其复制到AEB模型中。

当完成仿真模型时,从MATLAB搜索路径中删除示例文件文件夹:

rmpath(genpath(fullfile(matlabroot,'examples','driving')))

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章