主要内容

以编程方式创建驾驶场景变化

方法构建的驾驶场景的变体,此示例演示如何以编程方式创建驾驶场景设计通过编程方式创建场景的变化,使您能够在多种条件下快速测试您的驾驶算法。

要创建驾驶场景的程序化变化,请遵循以下步骤:

  1. 控件交互式地构建一个驾驶场景驾驶场景设计应用程序。

  2. 导出一个MATLAB®函数,该函数生成与此场景等效的MATLAB代码。

  3. 在MATLAB编辑器中,修改导出的函数以创建原始场景的变体。

  4. 调用该函数生成drivingScenario对象,该对象表示场景。

  5. 将场景对象导入应用程序以模拟修改后的场景或生成其他场景。或者,要在Simulink®中模拟修改后的场景,请使用对象导入到Simulink模型中金宝app场景的读者块。

该图显示了此工作流的可视化表示。ScenarioVariationsWorkflow.png

在App中构建场景

使用驾驶场景设计以交互方式构建一个驾驶场景,以测试您的算法。有关构建场景的详细信息,请参见交互式创建驾驶场景并生成合成传感器数据

的预构建场景之一为基础,此示例使用了一个驾驶场景驾驶场景设计应用程序。

在应用程序中打开场景文件。

drivingScenarioDesigner(“LeftTurnScenarioNoSensors.mat”)

点击运行模拟场景。在这个场景中,自我车向北行驶,径直穿过一个十字路口。与此同时,一辆从十字路口左侧驶来的车辆左转,最终在相邻车道上停在了那辆车的前面。

LeftTurnScenario.png

为了简单起见,这个场景不包括安装在自我车辆上的传感器。

导出MATLAB函数的场景

在查看和模拟该场景后,可以将该场景导出到MATLAB命令行。从驾驶场景设计应用程序工具条,选择导出> MATLAB函数.导出的函数包含用于生成应用程序中创建的场景的MATLAB代码。打开导出的函数。

开放LeftTurnScenarioNoSensors.m

调用此函数将返回驾驶场景的这些方面。

  • 场景-道路和演员的场景,返回作为一个drivingScenario对象。

  • egoVehicle-场景中定义的自我车辆,返回为车辆对象。详细信息请参见车辆函数。

如果您的场景包含传感器,则返回的函数包含用于生成传感器的额外代码。如果模拟包含这些传感器的场景,那么该函数还可以生成由这些传感器产生的检测。

修改功能创建场景变化

通过修改导出的MATLAB函数中的代码,可以生成单个场景的多个变体。一种常见的变化是在不同的速度下测试自我飞行器。在导出的MATLAB函数中,将ego车辆的速度设置为恒定值10m / s (速度= 10).要生成不同的车辆速度,可以将速度变量转换为函数的输入参数。打开包含已导出函数的修改版本的脚本。

开放LeftTurnScenarioNoSensorsModified.m

在这个修改后的函数中:

  • egoSpeed作为输入参数包含。

  • 速度,即常量变量被删除。

  • 为了计算自我飞行器的轨迹,egoSpeed用来代替速度

该图显示了这些脚本修改。

LeftTurnScenarioFunctionModified.png

为了产生更多的变化,考虑:

  • 修改道路和车道参数以查看对车道检测的影响

  • 修改车辆的轨迹或起始位置

  • 修改车辆的尺寸

调用函数生成编程场景

使用修改后的函数,生成一个场景的变化,其中自我车辆以每秒20米的恒定速度行驶。

scene = LeftTurnScenarioNoSensorsModified(20)% m / s
scene = drivingScenario with properties: SampleTime: 0.0400 StopTime: Inf SimulationTime: 0 IsRunning: 1 Actors: [1x2 driving.scenario. properties]车辆]障碍物:[0x0驾驶。场景。停车场:[0x0 driving.scenario.ParkingLot]

将修改后的场景导入App

要将修改后的场景和修改后的车辆导入应用程序,请使用drivingScenarioDesigner函数。指定drivingScenario对象作为输入参数。

drivingScenarioDesigner(场景)

LeftTurnScenarioModified.png

此前,另一辆车先通过了十字路口。现在,随着自我车辆的速度从每秒10米增加到每秒20米,自我车辆首先通过十字路口。

当与drivingScenario应用程序中的对象,请记住这些要点。

  • 要尝试不同的自我车辆速度,再次调用导出函数,然后导入新的drivingScenario对象使用drivingScenarioDesigner函数。该应用程序不包括导入这些对象的菜单选项。

  • 如果你的场景包括传感器,你可以使用下面的语法重新打开场景和传感器:drivingScenarioDesigner(场景、传感器)

  • 如果对参与者的维度进行了重大更改,请确保ClassID属性对应于a类ID值。例如,在应用程序中,汽车有一个类ID1卡车有一个类ID2.如果以编程方式将汽车更改为具有卡车的尺寸,则更新ClassID那辆车的财产1(汽车)2(卡车)。

将修改后的场景导入Simulink金宝app

若要将修改后的场景导入到Simulink模型中,请使用金宝app场景的读者块。这个块从应用程序中保存的场景文件或文件中读取道路和演员drivingScenario变量保存到MATLAB工作空间或模型工作空间。向模型中添加Scenario Reader块并设置这些参数。

  1. 驾驶场景来源从工作空间

  2. MATLAB或模型工作区变量名以之名drivingScenario工作区中的变量。

当与drivingScenario在Simulink中的金宝app对象,请记住这些要点。

  • 自我载体的来源设置为场景,该模型使用定义在你的自我载体drivingScenario对象。该块根据指定的属性确定哪个参与者是自我载体ActorID参与者的属性。这个演员一定是个车辆对象(如车辆).要更改指定的自我载具,请更新自我车辆ActorID参数。

  • 当将输出参与者姿势连接到传感器块时,请确认在传感器块中,用于指定参与者概要文件源的参数设置为来自场景读取器块.选择此选项后,传感器块直接从您的数据库中指定的参与者获取参与者概要drivingScenario对象。

另请参阅

应用程序

功能

对象

相关的话题