MATLAB自动驾驶学习(3)——以编程方式创建驾驶场景的变体
前言
以编程方式创建使用驾驶方案设计器应用生成的驾驶方案的变体,便于基元场景的快速组合生成,能够在多个条件下快速测试驾驶算法,一般在自动化测试时很有用。主流的自动驾驶仿真软件中都支持在程序中直接改变场景,比如PreScan、Carla、Apollo和PanoSim等,MATLAB也支持。
国产自动驾驶仿真软件PanoSim的自动化测试操作流程可见下面链接:
PanoSim 5 功能模块简介--TestBuilder - 知乎 (zhihu.com)
MATLAB具体流程如下图所示:
步骤简要介绍如下:
使用驾驶方案设计器应用以交互方式生成初始交通场景(包含道路,交通参与者的位置,运动学参数等基础信息)。
导出一个生成与此方案等效的 MATLAB 代码的 MATLAB 函数,此函数便是后续场景更改的基础。
在 MATLAB 编辑器中,修改导出的函数以创建原始场景的变体。
调用该函数以生成表示方案的驱动对象。
将方案对象导入应用以模拟修改后的方案或生成其他方案。或者,要在 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 工作区或模型工作区的变量中读取道路和参与者。将方案读取器块添加到模型并设置这些参数。
将“驾驶方案的来源”设置为
From workspace。
将 MATLAB 或模型工作区变量名称设置为工作区中变量的名称。
第八步:完成后从 MATLAB 搜索路径中删除示例文件夹。
rmpath(genpath(fullfile(matlabroot,'examples','driving')))
MATLAB自动驾驶学习(3)——以编程方式创建驾驶场景的变体相关推荐
- 动态生成word文档原来如此简单!Aspose.Words助力以Java编程方式创建丰富的Word文档
近年来,Word文档的动态生成已成为组成报告,报价,发票和其他类型文档的流行功能.各种制造公司都基于数据库中存储的数据生成发票.在这种情况下,文档自动化可以节省手动文档创建过程中所需的时间,精力和资源 ...
- java生成和读取keystore_java-如何以编程方式创建新的KeyStore?
java-如何以编程方式创建新的KeyStore? 我正在尝试以编程方式在Java中创建新的密钥库. 如下代码: KeyStore keyStore = KeyStore.getInstance(Ke ...
- labview圆环里实物动画图形_LabVIEW编程技巧:功能强大的变体数据类型用法
变体数据类型简介 LabVIEW是一种图形化编程语言,所以也叫G语言,在程序框图上连线时,必须相同类型或者能强制相互转换的类型端口才能连接在一起,例如我们不能将一个数值型的控件连接到布尔型的控件上,也 ...
- java 创建web项目_java – Eclipse:以编程方式创建动态Web项目
我尝试通过首先通过IProject创建 java项目然后使用IFacetedProject将其转换为动态Web项目来创建动态Web项目,但是只创建了静态项目-这是我已经完成的代码-请帮助我这--谢谢. ...
- java解析odt,如何用java以编程方式创建odt文件?
How can I create an odt (LibreOffice/OpenOffice Writer) file with Java programmatically? A "hel ...
- 怎么用java编程_如何使用java编程方式创建一个odt文件?
看看 ODFDOM – the OpenDocument API ODFDOM is a free OpenDocument Format (ODF) library. Its purpose is ...
- android attributeset,如何在android中以编程方式创建时传递AttributeSet
当您的视图从xml中膨胀时,将使用具有Context和AttributeSet的构造函数.您不应该使用它来创建对象.您应该使用带有Context作为参数的构造函数. AttributeSet是接口,您 ...
- 如何在Java中以编程方式阅读,添加或删除PPT中的幻灯片便笺?
幻灯片注释用于添加其他信息,作为演示文稿中的参考.演示者添加了这些注释,以回顾与他们的演示相关的要点.在本文中,将学习如何以编程方式操作演示文稿中的幻灯片注释.特别是,本文将介绍如何使用Java读取, ...
- 以编程方式进行NLog的配置【转】
步骤如下: 1. 创建一个LoggingConfiguration对象,用来保存配置信息 2. 至少创建一个输出目标对象 3. 设置该输出目标对象的属性 4. 设置LoggingRul ...
最新文章
- R语言使用persp函数绘制三维图像实战(3D):自定义3D图、图像旋转、添加轴标签
- nodejs fs path
- 强人工智能是潘多拉魔盒吗
- Java 面试经典题解析:谈谈你对 Java 平台的理解?
- JavaEE PO VO BO DTO POJO DAO 整理总结(转)
- tcp抓包返回fin_TCP/IP学习二TCP链接建立与断开
- Celery 源码解析六:Events 的实现
- 刘作虎:今年一加9系列不会送测DxO
- 2020各大网站rss订阅源地址_2020-20-18——DJANGO复习
- 随想录(关于ucore)
- cv2中函数名的规则
- 最新QQ空间免费导航代码
- 如何求绝对值最小的数
- 计算机分析学生表字段,巧用Excel数据透视表统计分析学生成绩
- 阿里巴巴图标库iconfont的使用
- matlab 汉字是方块,linux下Matlab 2020中文字体方框问题解决方法
- vivo是安卓手机吗_拜托你看看vivo手机自带的翻译功能,这么强大的功能浪费了合适吗...
- 高德地图API创建地理围栏
- ECDH secp256k1 集成
- Composer 基础使用
热门文章
- Vue中引入外部字体
- 金和C6协同办公中对用户密码的处理
- coms_ov7740驱动
- consumer editions和business editions的区别
- 点状字符的一种简便识别方式
- 2021年国考计算机网络原理,2021国考行测技巧:数字推理考点之“构造网络”
- MayaMel:UI—窗口简介
- python工程师需要什么技能_江门北大青鸟:Python工程师都会哪些技能?
- 如何做好网站建设需求分析
- 腾讯软件测试工程师工资,[深圳] 腾讯-招聘高级软件测试工程师,待遇福利从优!...