基于MATLAB&SIMULINK开发自动驾驶系统第十讲创建驾驶场景并生成合成传感器数据

本节展示了如何通过使用驾驶场景设计器应用程序创建一个驾驶场景,并从场景中生成视觉和雷达传感器探测。可以使用这些合成数据来测试的控制器或传感器融合算法。

这个例子展示了创建场景和生成合成传感器数据的整个工作流程。另外,还可以从预建场景中生成传感器数据。请关注本公众号,后续持续更新。

10.1创建驾驶场景

要打开应用程序,在MATLAB命令提示符下,输入

drivingScenarioDesigner

10.2增加一条道路

在场景画布上添加一条弯曲的道路。在应用工具条上,单击 "添加道路"。然后单击画布的一个角,将道路延伸到另一个角,并双击画布以创建路。

要使道路成为曲线,请在其周围添加一个道路中心,使其成为曲线。右击道路中间,选择添加道路中心。然后将添加的道路中心拖到画布的一个空角上。

要进一步调整道路,可以点击并拖动任何一个道路中心。要创建更复杂的曲线,请添加更多的道路中心。

10.3 添加车道

默认情况下,道路是单车道,没有车道标记。为了使场景更逼真,请将道路转换为双车道公路。在左窗格中,在 "道路 "选项卡上,展开 "车道 "部分。将 "车道数 "设置为[1 1]。应用程序将车道宽度参数设置为3.6米,这是一个典型的高速公路车道宽度。

道路两边的白色实心车道标线表示是路肩。中间的黄色双实线标记表示该道路为双向道路。要检查或修改这些车道,可从车道标记列表中选择其中一条车道并修改车道参数。

10.4 添加车辆

默认情况下,添加到场景中的第一辆车是被控车辆,它是驾驶场景中的主车。车辆包含探测车道标记、行人或场景中其他车辆的传感器。添加被控车辆后,再添加第二辆车供被控车辆探测。

10.4.1 添加被控车辆

要添加被控车辆,右击道路一端,选择添加汽车。要指定小汽车的跟踪,右击小汽车,选择添加航点,沿路添加小汽车要经过的航点。在添加沿路的最后一个航点后,按 Enter。汽车会按照第一个航点的方向自动旋转。为了在跟踪上获得更高的精度, 可以调整航点。

也可以右键单击路径来添加新的航点。

三角形表示车辆的姿势,原点位于车辆后轴中心。

调整汽车的速度。在左侧窗格的 "执行器"选项卡上,将 "恒定速度 "设置为15米/秒。要想更多地控制汽车的速度,可在航点、速度、等待时间和偏航表的v (m/s)列中设置航点之间的速度。

10.4.2添加第二辆车

为被控车辆传感器探测添加车辆。在应用工具条上,点击 "添加执行器",选择 "汽车"。添加第二辆带有航点的汽车,在与被控车辆相反的车道上行驶,并在道路的另一端。保持汽车的速度和其他设置不变。

10.5增加一个行人

在场景中添加一个过马路的行人。放大马路中间,右键点击马路一侧,然后点击添加行人。然后,为了设置行人的路径,在道路的另一侧添加一个航点。

默认情况下,行人的颜色几乎与车道标线的颜色一致。为了使行人更加突出,在 "执行器 "选项卡中,点击行人对应的颜色补丁,修改其颜色。

要测试汽车和行人的速度,请运行仿真。从"执行器 "选项卡的左侧窗格中选择执行器,根据需要调整执行器的速度或其他属性。

例如,如果汽车与行人相撞,在航点、速度、等待时间和航向角的v(m/s)栏中,调整汽车或行人的速度。另外,在表中的等待(s)栏中,设置行人过街前汽车在航点的等待时间。

默认情况下,当第一个执行器完成其跟踪时,仿真就会结束。要在所有执行器完成其跟踪后才结束仿真,在应用程序工具条上,首先单击 "设置"。然后,将 "停止条件 "设置为 "最后一个执行器停止"。

10.6 添加传感器

给被控车辆添加摄像头、雷达和激光雷达传感器。使用这些传感器来生成场景中的探测和点云数据。

10.6.1 添加摄像头

在应用程序工具条上,单击 "添加相机"。传感器画布显示了放置传感器的标准位置。点击最前面的预定义传感器位置,将摄像头传感器添加到被控车辆的前保险杠上。

为了更精确地放置传感器,可以禁用捕捉选项。在传感器画布的左下角,单击配置传感器画布按钮 。

默认情况下,摄像机只探测执行器,不探测车道。要启用车道探测,请在左侧窗格的传感器选项卡上,展开 "探测参数 "部分并将 "探测类型 "设置为 "对象和车道"。然后展开车道设置部分,并根据需要更新设置。

10.6.2 添加雷达 

将雷达传感器卡在前左轮上。右键单击车轮的预定义传感器位置,然后选择添加雷达。默认情况下,添加到车轮上的传感器是短程传感器。

将雷达传感器向车头倾斜。将光标移动到覆盖区域,然后单击并拖动角度标记。

在前右轮上添加一个相同的雷达传感器。右键单击前左轮上的传感器,然后单击复制。然后右键单击前右轮的预定义传感器位置,并单击粘贴。复制的传感器的方向与对面轮子上传感器的方向一致。

10.6.3 添加激光雷达

将激光雷达传感器卡在车顶中心。右键单击车顶中心预定义的传感器位置,选择添加激光雷达。

激光雷达传感器显示为黑色。车辆周围的灰色是传感器的覆盖区域。放大可查看不同传感器覆盖区域的全貌。

10.7生成合成传感器数据

要从传感器生成数据,请单击 "运行"。随着方案的运行,"鸟瞰图 "将显示探测到的数据和点云数据。

以被控为中心的视图从被控车辆的角度显示场景。

由于 指定了激光雷达传感器,"被控中心视图 "和 "鸟瞰图 "都显示了执行器的网格表示,而不是立方体表示。激光雷达传感器使用这些更详细的执行器表示来生成点云数据。场景画布仍然只显示立方体表征。雷达和视觉传感器的探测基于立方体表示。

要关闭执行器网格、某些类型的探测或显示的其他方面,请使用应用程序工具条上显示下的属性。

默认情况下,当第一个执行器停止移动时,场景就会结束。若要在设定的时间内运行场景,在应用工具条上,点击设置并更改停止条件。

接下来,导出传感器探测。

- 要将传感器数据导出到MATLAB工作区,在应用程序工具条上,选择导出>导出传感器数据。命名工作区变量,然后单击 "确定"。应用程序将传感器数据保存为包含传感器数据的结构,如执行器姿势、物体探测和车道探测,在每个时间步骤。

- 要导出生成场景及其传感器数据的 MATLAB 函数,请选择导出 > 导出 MATLAB 函数。该函数将传感器数据作为结构返回,将场景作为驾驶场景对象返回,将传感器模型作为视觉探测生成器返回。

radarDetectionGenerator和lidarPointCloudGenerator系统对象。通过修改该函数, 可以创建原始场景的变体。关于这个过程的例子,请看 "以编程方式创建驾驶场景变体"。

10.8 保存场景

生成探测后,单击 "保存 "保存场景文件。也可以将传感器模型保存为单独的文件,并将道路和执行器模型一起保存为单独的场景文件。

可以从应用程序中重新打开这个场景文件。另外,在MATLAB命令提示符下, 可以使用这个语法。

drivingScenarioDesigner(scenarioFileName)

还可以通过使用导出的drivingScenario对象重新打开场景。在 MATLAB 命令提示符下,使用以下语法,其中 scenario 是导出对象的名称。

drivingScenarioDesigner(scenario)

要重新打开传感器,请使用这个语法,其中sensor是一个传感器对象或这种对象的单元格阵列。

drivingScenarioDesigner(scenario,sensors)

如果 在Simulink中开发驾驶算法,可以使用Scenario Reader块从场景文件或drivingScenario对象中读取道路和执行器到 的模型中。该块不直接读取传感器数据。要将在应用程序中创建的传感器添加到Simulink模型中。

通过选择 Export > Export Simulink Model 生成包含的场景和传感器的模型。在模型中,生成的场景阅读器块读取场景,生成的传感器块定义传感器。

(0)

相关推荐