MATLAB自动驾驶学习(3)——以编程方式创建驾驶场景的变体

前言

以编程方式创建使用驾驶方案设计器应用生成的驾驶方案的变体,便于基元场景的快速组合生成,能够在多个条件下快速测试驾驶算法,一般在自动化测试时很有用。主流的自动驾驶仿真软件中都支持在程序中直接改变场景,比如PreScan、Carla、Apollo和PanoSim等,MATLAB也支持。

国产自动驾驶仿真软件PanoSim的自动化测试操作流程可见下面链接:

PanoSim 5 功能模块简介--TestBuilder - 知乎 (zhihu.com)

MATLAB具体流程如下图所示:

步骤简要介绍如下:

  1. 使用驾驶方案设计器应用以交互方式生成初始交通场景(包含道路,交通参与者的位置,运动学参数等基础信息)。

  2. 导出一个生成与此方案等效的 MATLAB 代码的 MATLAB 函数,此函数便是后续场景更改的基础。

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

  4. 调用该函数以生成表示方案的驱动对象。

  5. 将方案对象导入应用以模拟修改后的方案或生成其他方案。或者,要在 Simulink中模拟修改后的方案,请使用方案读取模块将对象导入到 Simulink 模型中。

详细步骤:

第一步:将示例文件夹添加到 MATLAB 搜索路径。(便于通过程序的方式直接调用软件自带的实例)。在命令行直接输入如下代码:

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

第二步:构建初始场景。

不是本文重点,这里从驾驶方案设计器应用加载的预生成场景之一的驾驶场景。在命令行直接输入如下代码:

drivingScenarioDesigner('LeftTurnScenarioNoSensors.mat')

打开了对应的预定义场景文件。

单击“运行”以模拟该场景。在这种情况下,自车向北行驶并直接穿过一个十字路口。同时,一辆从十字路口左侧驶来的车辆左转,最终在相邻车道上的自车前方。

第三步:导出上述场景的MATLAB函数

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

如果不是示例文件,需要将导出的函数重命名并保存下来。

本文是示例文件,可以通过指令打开对应的函数。代码如下:

open LeftTurnScenarioNoSensors.m

函数如下图所示:

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

  • scenario— 场景的道路和参与者,作为场景对象返回。

  • egoVehicle— 场景中定义的自车,作为对象返回。

如果场景包含传感器,则返回的函数将包含用于生成传感器的其他代码。如果模拟了包含这些传感器的场景,则该函数还可以生成这些传感器生成的检测。本文不做过多考虑。

第四步:修改函数以创建场景变体

通过修改导出的 MATLAB 函数中的代码,可以生成单个方案的多个变体。一个常见的变化是以不同的速度测试自车。在导出的 MATLAB 函数中,自车辆的速度设置为每秒 10 米的常量值 (speed = 10)。要生成不同的 ego 车辆速度,可以将速度变量转换为函数的输入参数。

由于是示例文件,这里可以打开包含导出函数的修改版本的脚本。

open LeftTurnScenarioNoSensorsModified.m

下图表述了修改前与修改后的区别:

 

而且修改后的egoSpeed是作为函数的输入的

生成其他变体,可以考虑如下几点:

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

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

  • 修改车辆的尺寸

第五步:调用函数以生成场景

使用修改后的函数,生成自车以每秒 20 米的恒定速度行驶的场景变体。代码如下:

scenario = LeftTurnScenarioNoSensorsModified(20) % m/s

第六步:将修改后的场景导入仿真应用

使用如下代码直接生成新的仿真界面,不影响原有的仿真。

drivingScenarioDesigner(scenario)

 在应用程序中处理对象时,请记住这些要点。

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

  • 如果场景包括传感器,则可以使用以下语法重新打开方案和传感器。

drivingScenarioDesigner(scenario,sensors)
  • 如果对执行组件的维度进行重大更改,请确保执行组件的属性对应于应用中指定的类 ID 值。例如,在应用程序中,汽车的类 ID 为1 ,卡车的类 ID 为 2。如果以编程方式将汽车更改为具有卡车的尺寸,请将该车辆的属性从(汽车)更新为(卡车)。

第七步:将修改后的场景导入Simulink模型中

要将修改后的方案导入 Simulink 模型,使用场景读取(Scenario Reader)模块。此块从从应用程序保存的方案文件或保存到 MATLAB 工作区或模型工作区的变量中读取道路和参与者。将方案读取器块添加到模型并设置这些参数。

  1. “驾驶方案的来源”设置为 From workspace。

  2. 将 MATLAB 或模型工作区变量名称设置为工作区中变量的名称。

 第八步:完成后从 MATLAB 搜索路径中删除示例文件夹。

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

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
MATLAB,可以使用驾驶场景设计器来创建自动驾驶场景。首先,打开驾驶场景设计器应用工具栏,选择“创建新的驾驶场景”。然后,按照以下步骤进行操作: 1. 添加道路:在场景添加道路,可以选择不同的道路类型和形状。 2. 添加车道:在道路上添加车道,可以设置车道的宽度和车道线的类型。 3. 添加车辆:在场景添加车辆,可以设置车辆的初始位置、速度和行为。 4. 添加行人:在场景添加行人,可以设置行人的初始位置、速度和行为。 5. 添加传感器:在车辆上添加传感器,可以选择不同类型的传感器,如相机、雷达和激光雷达。 完成场景创建后,可以查看和模拟运行场景。还可以将场景导出到MATLAB命令行,生成用于在应用程序创建场景MATLAB代码。可以通过选择“导出>导出MATLAB函数”来导出函数,并打开导出的函数进行查看。 此外,还可以以编程方式创建使用驾驶场景设计器应用生成的驾驶场景变体。这样可以快速组合生成基本场景,并在多个条件下快速测试驾驶算法MATLAB也支持在程序直接改变场景,这在自动化测试时非常有用。 综上所述,MATLAB提供了强大的工具和功能来创建和模拟自动驾驶场景。 #### 引用[.reference_title] - *1* [matlab自动驾驶(3) 建立一个驾驶场景并生成综合检测——driving scenario Designer](https://blog.csdn.net/weixin_42722455/article/details/109126046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MATLAB自动驾驶学习(3)——以编程方式创建驾驶场景变体](https://blog.csdn.net/weixin_44727682/article/details/126690780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UC_Gundam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值