这个例子显示了如何以编程方式创建一个使用内置的驱动方案的变化驾驶场景设计师应用程序。以编程方式创建一个场景的变化使您能够快速测试多种条件下的驾驶算法。
要创建驾驶场景的程序化变体,请遵循以下步骤:
通过使用交互式建立的驱动方案驾驶场景设计师应用程序。
导出生成MATLAB代码,就相当于这种情况下一个MATLAB®功能。
在MATLAB编辑器,修改导出的函数创建原始场景的变化。
调用函数生成一个drivingScenario
对象,该对象表示场景。
将scenario对象导入应用程序,以模拟修改后的场景或生成其他场景。或者,要在Simulink®中模拟修改后的场景,可以通过使用金宝app场景的读者块。
该图表显示了该工作流的可视化表示。
使用驾驶场景设计师交互式地构建一个驾驶场景,在此基础上测试你的算法。有关构建场景的更多细节,请参见交互式创建驾驶场景,生成合成传感器数据.
这个示例使用了一个基于预构建场景的驱动场景,您可以从驾驶场景设计师应用程序。
在应用程序中打开场景文件。
drivingScenarioDesigner( 'LeftTurnScenarioNoSensors.mat')
点击运行来模拟这个场景。在这个场景中,自我汽车向北行驶,径直穿过一个十字路口。与此同时,一辆从十字路口左侧驶来的车辆向左转弯,最终停在邻近车道的小我车前面。
为简单起见,这种情况下不包括安装在自主车辆传感器。
在查看和模拟场景之后,可以将场景导出到MATLAB命令行。从驾驶场景设计师应用程序将来发布,选择导出> MATLAB函数.导出的函数包含用于生产应用程序创建方案的MATLAB代码。打开导出的函数。
开放LeftTurnScenarioNoSensors.m;
调用该函数返回的驱动方案的这些方面。
场景
-道路和演员的场景,返回作为一个drivingScenario
目的。
egoVehicle
- 自我车辆在方案中规定,返回为车辆
目的。有关详细信息,请参阅车辆
函数。
如果场景包含传感器,则返回的函数包含用于生成传感器的额外代码。如果您模拟了包含这些传感器的场景,那么该函数还可以生成由这些传感器产生的检测。
通过修改导出的MATLAB函数中的代码,可以生成单个场景的多个变体。一个常见的变化是测试自我汽车在不同的速度。在导出的MATLAB函数中,将ego车辆的速度设置为10米/秒(速度= 10
).要生成不同的自我车辆速度,您可以将速度变量转换为函数的输入参数。打开包含导出函数的修改版本的脚本。
开放LeftTurnScenarioNoSensorsModified.m;
在这个修改过的函数中:
egoSpeed
被包含作为输入参数。
速度
,删除常量变量。
为了计算自我飞行器的轨迹,egoSpeed
是用来代替速度
.
这个图显示了这些脚本修改。
为了生产更多的变化,可以考虑:
修改道路和车道参数,以查看对车道检测的影响
修改轨迹或启动车辆的位置
修改车辆的尺寸
使用修改后的功能,生成一个自我汽车以每秒20米的恒定速度行驶的场景的变化。
场景= LeftTurnScenarioNoSensorsModified(20)% m / s
场景= drivingScenario与属性:SampleTime:0.0400停止时间:Inf文件SimulationTime:0 IsRunning:1个演员:[1×2 driving.scenario.Vehicle]障碍:为0x0 driving.scenario.Barrier] ParkingLots:为0x0 driving.scenario.ParkingLot]
要与修改后的车辆导入修改后的方案到应用程序,使用drivingScenarioDesigner
函数。指定drivingScenario
对象作为输入参数。
drivingScenarioDesigner(场景)
之前,另一辆车先通过十字路口。现在,随着“自我”车的速度从每秒10米增加到每秒20米,“自我”车首先通过了十字路口。
当工作drivingScenario
对象,记住这些要点。
尝试不同的自车辆的速度,再次调用导出函数,然后导入新drivingScenario
对象使用drivingScenarioDesigner
函数。该应用程序不包括导入这些对象的菜单选项。
如果您的方案包括传感器,则可以通过使用此语法重新打开这两个场景和传感器:drivingScenarioDesigner(场景、传感器)
.
如果您对参与者的维度进行了重大更改,请确保ClassID
演员的属性对应于一个班级号值在应用程序指定。例如,在应用程序中,汽车有班级号的1
卡车有一个班级号的2
.如果编程更改一辆车有车的尺寸,更新ClassID
那辆车的财产1
(汽车)2
(卡车)。
要导入修改后的方案为Simulink模型,使用金宝app场景的读者块。此块从无论是从应用程序或保存的场景文件中读取道路和演员drivingScenario
变量保存到MATLAB工作区或模型工作区。一个方案读卡器模块添加到您的模型,并设置这些参数。
集驾驶场景的来源来从工作空间
.
集MATLAB或模型工作区中的变量名到的名称drivingScenario
变量在您的工作空间。
当工作drivingScenario
在Simulink对象金宝app,牢记这几点。
什么时候自我载体的来源被设定为场景
,模型使用在您的drivingScenario
目的。块确定哪一个演员是基于所述指定的自主车辆ActorID
行为人的财产。这个行动者必须是车辆
对象(见车辆
).要更改指定自车辆,更新自我车辆ActorID参数。
当连接输出演员姿势到传感器块,确认的是,在传感器块,用于指定的演员轮廓的源的参数被设置为从场景读取器块
.选择此选项后,传感器块直接从您的drivingScenario
目的。