主要内容

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

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

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

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

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

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

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

  5. 将scenario对象导入应用程序,以模拟修改后的场景或生成其他场景。或者,要在Simulink®中模拟修改后的场景,可以通过使用万博1manbetx场景的读者块。

该图表显示了该工作流的可视化表示。

在App中构建场景

使用驾驶场景设计师交互式地构建一个驾驶场景,在此基础上测试你的算法。有关构建场景的更多细节,请参见交互式创建驾驶场景,生成合成传感器数据

这个示例使用了一个基于预构建场景的驱动场景,您可以从驾驶场景设计师应用程序。

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

drivingScenarioDesigner(“LeftTurnScenarioNoSensors.mat”)

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

为简单起见,此场景不包括安装在ego车上的传感器。

导出MATLAB功能的场景

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

开放LeftTurnScenarioNoSensors.m

调用这个函数将返回驱动场景的这些方面。

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

  • egoVehicle-场景中定义的Ego车辆,返回为车辆对象。具体操作请参见车辆函数。

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

修改创建场景变体功能

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

开放LeftTurnScenarioNoSensorsModified.m

在这个修改过的函数中:

  • egoSpeed作为输入参数包含。

  • 速度,删除常量变量。

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

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

要产生额外的变化,请考虑:

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

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

  • 修改车辆的尺寸

调用函数来生成编程场景

使用修改后的功能,生成一个自我汽车以每秒20米的恒定速度行驶的场景的变化。

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

将修改后的场景导入App

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

drivingScenarioDesigner(场景)

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

在处理drivingScenario对象,记住这些要点。

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

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

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

将修改后的场景导入Simulink万博1manbetx

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

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

  2. MATLAB或模型工作区变量名名字drivingScenario变量。

在处理drivingScenario对象,请记住这些要点。万博1manbetx

  • 自我载体的来源被设置为场景,模型使用在您的drivingScenario对象。块根据指定的对象决定哪个角色是自我载体ActorID行为人的财产。这个行动者必须是车辆对象(如车辆).更换指定的自我车辆,更新自我车辆ActorID参数。

  • 当将输出actor姿态连接到传感器块时,确认在传感器块中,指定actor配置文件来源的参数被设置为从场景读取器块.选择此选项后,传感器块直接从您的drivingScenario对象。

另请参阅

应用程序

功能

对象

相关的话题