有些朋友也许已经发现了,MATLAB R2020a推出了一个新工具——RoadRunner。这个工具是什么,怎么用,有什么特点?今天我们根据了解到的信息及使用体验,来对它做一个介绍。
1、背景介绍
RoadRunner——Design 3D scenes for automated driving simulation,这是MathWorks对RoadRunner的定位。可以看出,RoadRunner是为自动驾驶仿真测试而服务的。在V流程中,自动驾驶仿真测试包括MIL、SIL、HIL等环节。这三个测试环节都包含了三个要素:
- 车辆模型
- 驾驶场景和传感器模型
- 相关算法(感知、规划、控制等)
驾驶场景构建和模拟是自动驾驶仿真测试中的重要环节,也很大程度上影响着仿真测试的效果。关于驾驶场景构建,市面上已有不少工具,MathWorks也有一定的布局。针对不同的仿真测试需求,MathWorks提供了两套方案。两套方案的具体情况,请见下图。
第一套方案采用的场景构建工具是MathWorks自己开发的Driving Scenario Designer,可以构建“方块式”驾驶场景。它的优点是构建场景方便快捷,与Simulink无缝衔接,不足是构建的场景不逼真,适用于对融合、规划和控制算法的测试。
知乎视频www.zhihu.com第二套方案采用的场景构建工具是Epic Games开发的虚幻引擎Unreal Engine。它的优点是构建的场景很逼真,不足是构建场景不方便、入门难度高。正因为它能模拟出高保真的驾驶场景,所以它也适用于对感知算法进行测试。
知乎视频www.zhihu.com从上述可知,MathWorks的这两套方案都不完美。MathWorks在2017年推出自动驾驶工具箱Automated Driving Toolbox,并且在之后的每一年都投入了不少精力去完善这个工具箱。由此可以看出,MathWorks很重视自动驾驶业务。
在笔者看来,MathWorks在自动驾驶方面的耕耘,主要专注于两个领域:自动驾驶算法开发和自动驾驶仿真测试。前者继承MATLAB/Simulink/Stateflow在控制算法开发方面的优势,工具链完整且高质量;后者而言,在收购RoadRunner之前,MathWorks的两套方案都存在不足。很明显,MathWorks之前的两套场景构建方案是有点匹配不上他们想在自动驾驶领域有所建树的期望的。笔者猜测,正是基于这个原因,MathWorks收购了RoadRunner,以弥补自动驾驶仿真测试工具链的不足。
2、RoadRunner是什么
关于RoadRunner是什么,我们直接引用MathWorks对RoadRunner的描述。
RoadRunner 针对自动驾驶仿真设计三维场景ww2.mathworks.cnRoadRunner 是一个交互式编辑器,可用于针对自动驾驶系统仿真和测试设计三维场景。您可以创建区域特定的道路标志和标记以自定义道路场景。您可以插入标志、信号、护栏和道路损坏,以及绿化、建筑物和其他三维模型。RoadRunner 还提供工具,用于设置和配置交叉路口处的交通信号配时、相位和行车路径。
RoadRunner 支持激光雷达点云、航拍图像和 GIS 数据的可视化。您可以使用 OpenDRIVE® 导入和导出道路网络。使用 RoadRunner 构建的三维场景可导出为 FBX®、glTF™、OpenFlight、OpenSceneGraph、OBJ 和 USD 格式。导出的场景可在自动驾驶仿真器和游戏引擎中使用,包括 CARLA、Vires VTD、NVIDIA DRIVE Sim®、LGSVL、百度 Apollo®、Unity® 和虚幻引擎 (Unreal® Engine)。
借助 RoadRunner Asset Library,您可以使用多种逼真且视觉一致的三维模型快速填充三维场景。
3、RoadRunner有什么特点
笔者在使用RoadRunner一段时间后,初步总结了它的4个特点。
3.1 构建场景方便,功能强大
RoadRunner主要采用拖拽方式构建场景,操作方便,入门难度低。功能强大,具体的编辑工具包括:
3.1.1 道路工具
从左到右,依次是
- 常规道路部署工具
- 环形道路工具
- 道路界面编辑工具
- 道路高度编辑工具
- 道路截断工具
- 桥梁工具
- 道路滑移工具(包括匝道)
- 道路偏移工具
3.1.2 交叉路口工具
从左到右,依次是:
- 自定义交叉路口工具(两条及以上道路间,自定义构建交叉路口)
- 道路拐角编辑工具(编辑拐角形状)
- 交叉路口表面编辑工具
- 交通走向编辑工具
- 交通灯部署工具
3.1.3 车道编辑工具
从左到右,依次是:
- 车道工具(删除车道,修改车道方向)
- 车道宽度编辑工具
- 车道偏移工具
- Lane add tool
- Lane form tool
- Lane carve tool
- 车道截断工具
- 车道分割工具(将一条宽车道分割成两条窄车道
Lane add tool、Lane form tool和Lane carve tool的区别可见下图。
3.1.4 标记工具
从左到右,依次是:
- 车道线编辑工具(修改车道线类型,删除整条或者部分车道线,延长车道线等)
- 点状标记工具(添加、删除、编辑点状标记,比如限速标记、方向标记)
- 线形标记工具(添加、删除、编辑线形标记,比如限速路面油污)
- 区域标记工具((添加、删除、编辑区域标记,比如匝道标记)
- 车位标记工具
- 人行道标记工具
3.1.5 道具部署、编辑工具
从左到右,依次是:
- 点状道具工具(点状地部署道具,操作一次则部署一个道具)
- 线形道具工具(线形地部署道具,操作一次则部署一串道具)
- 区域道具工具(区域地部署道具,操作一次则部署一个区域的道具)
- 道具跨度工具(编辑道具间隔)
- 标牌编辑工具(编辑标牌的内容,支持图形、包括中文在内的多种语言)
以上操作及工具,可以从下面2分钟视频中做一个简单了解。
知乎视频www.zhihu.com@黄浴 博士早在一年前就对RoadRunner做了详细的介绍,可参看下文。
https://zhuanlan.zhihu.com/p/82062249zhuanlan.zhihu.com3.2 素材丰富
RoadRunner本身软件自带一个简单的素材库,同时它还提供了一个插件——RoadRunner Asset Library,提供了丰富的素材用以构建逼真场景。
RoadRunner Asset Libraryww2.mathworks.cnRoadRunner Asset Library提供的素材有:
- 组件。可自行将一些零件组合成一个组件(如杆子+交通信号灯+路灯),方便复用。
- 建筑。
- Dmage。模拟道路的损坏、污渍等。
- 道路栏杆。
- Marking。包括各种类型的车道线及人行道。
- 材料纹理。
- 树。
- 道路类型。可采用Asset库中现成的道路类型,也可基于这些道路修改编辑成自定义的道路,并将自定义道路保存为一种道路类型,方便复用。
- 交通信号灯。
- 交通标志。
- 交通控制物件。
- 路面交通符号。
- 车辆。
3.3 兼容性好
RoadRunner 支持激光雷达点云、航拍图像和 GIS 数据的可视化。您可以使用 OpenDRIVE® 导入和导出道路网络。使用 RoadRunner 构建的三维场景可导出为 FBX®、glTF™、OpenFlight、OpenSceneGraph、OBJ 和 USD 格式。导出的场景可在自动驾驶仿真器和游戏引擎中使用,包括 CARLA、Vires VTD、NVIDIA DRIVE Sim®、LGSVL、百度 Apollo®、Unity® 和虚幻引擎 (Unreal® Engine)。
3.3.1 导入GIS数据
知乎视频www.zhihu.com3.3.2 导入OpenDRIVE数据
知乎视频www.zhihu.com3.3.3 导入FBX文件
知乎视频www.zhihu.com3.3.4 导入SVG文件
知乎视频www.zhihu.com3.3.5 导出到Unity
知乎视频www.zhihu.com@李科男 兄台的文章提到百度阿波罗也在使用RoadRunner。
https://zhuanlan.zhihu.com/p/76980162zhuanlan.zhihu.com我们目前使用的是RoadRunner,它由VectorZero来开发的。这个软件的功能非常强大,它可以很轻易地编辑各种复杂的路网。
RoadRunner有一个很重要的功能是:它可以导出OpenDRIVE的地图格式,OpenDRIVE是现在比较通用的高精地图格式。我们可以使用脚本把OpenDRIVE地图格式转化成百度阿波罗的高精地图格式。
我们不仅需要每个路有不同车道,还需要这些车道的连接关系。哪个车道能转向哪个车道,哪个车道不能转向哪个车道,这些连接关系RoadRunner都可以帮我们生成,这对自动驾驶模拟是非常重要的。
3.3.6 导出到虚幻引擎 (Unreal Engine)
知乎视频www.zhihu.com3.3.7 导出到LGSVL
知乎视频www.zhihu.com3.3.8 导出到CARLA
How to make a new map with RoadRunner——CARLAcarla.readthedocs.io3.4 性价比不错
对于企业而言,相比于其他自动驾驶仿真商业软件,RoadRunner的价格不算高。而对于高校,据笔者了解,RoadRunner的价格很低,相当有吸引力。可以在下面的链接中申请试用版,笔者现在用的就是试用版。
试用申请链接ww2.mathworks.cn4、RoadRunner怎么用
本节不是介绍RoadRunner具体怎么操作,而是介绍RoadRunner怎么结合MATLAB/Simulink的工具链使用。
RoadRunner构建的场景可以导出到Driving Scenario Designer和虚幻引擎Unreal Engine。
4.1 RoadRunner结合Driving Scenario Designer
RoadRunner构建的场景可以导出成OpenDRIVE文件,MathWorks的Driving Scenario Designer可以加载该OpenDRIVE文件,从而打通了RoadRunner和Driving Scenario Designer。关于Driving Scenario Designer,有兴趣可以看看下面文章。
https://zhuanlan.zhihu.com/p/109939394zhuanlan.zhihu.com4.2 RoadRunner结合Unreal Engine
RoadRunner构建的场景可以导出成FBX文件,Unreal Engine可以加载该FBX文件,复现场景并做逼真的渲染。RoadRunner与Unreal Engine的结合,既实现了方便快捷地构建场景,又实现了对场景的高保真度模拟。同时,Simulink的自动驾驶工具箱Automated Driving Toolbox提供了与Unreal Engine场景交互的摄像头、激光雷达、毫米波雷达等传感器模型,去覆盖Perception-in-loop的应用。
关于MATLAB结合Unreal Engine进行自动驾驶仿真测试,有兴趣可以看看下面文章。
https://zhuanlan.zhihu.com/p/124845371zhuanlan.zhihu.com5、小结
从笔者的使用体验而言,RoadRunner是一个优秀的自动驾驶场景构建工具。在MathWorks的背书下,它将掀起多大波澜、占据多少市场,我们拭目以待。
另外,如果你也在使用RoadRunner,咱们可以一起交流学习一下。