作者 | 白鹡鸰 编辑 | 3D视觉之心
原文链接:https://zhuanlan.zhihu.com/p/687711005
点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
本文只做学术分享,如有侵权,联系删文
沉寂快两年之后,终于开始重新更新知乎。这是对于开源驾驶仿真平台测评 - 2021 的更新、扩展与补充,也是个人工作的介绍和宣传。
本文的详细版本敬请期待 Choose Your Simulator Wisely: A Review on Open-source Simulators for Autonomous Driving。这篇论文中:
回顾了驾驶仿真器至今为止发展历史,预测了之后可能的发展趋势;
调研了截止2023年为止具有一定影响力的开源驾驶仿真器的维护状态、功能、性能、适用场景,基于用途,对现有驾驶仿真器进行了分类和推荐;
论证了目前开源驾驶仿真器中存在的关键问题,主要划分为真实性和仿真性能两大方面,讨论了这些关键问题的重要性,并调研了可能的解决方案。
论文目前处于Early Access状态,完整版估计要下个月才会上线。
动机
博士生涯之初,因为对CV不是那么感兴趣,我强转去研究驾驶决策算法,并一度沉迷强化学习。然而,在验证算法性能之前,找到合适的实验平台和benchmark是非常重要的。而调研过程中,我发现开源驾驶仿真器充斥着各式各样的问题,导致基于仿真验证的驾驶决策算法在投稿时容易因为不具有实用性遭到质疑。近年来,开源的驾驶仿真平台层出不穷,但是由于性能、维护状态等问题,它们不一定有让研究者能更轻松地在这个领域起步,反而是多了一个个需要亲自趟过的坑。
这种情况下,我们有必要对适用于自动驾驶相关任务的仿真器进行较为全面的调研,检查目前仍然值得使用的开源驾驶仿真器还有哪些,并讨论现有开源仿真器中存在的局限,从而有意识地避免由于相关方面的算法验证实验不够充分导致的质疑。另一方面,本文也可以视为对开源驾驶仿真器的开发者的建议,从用户的角度列举许愿了目前呼声较高的待解决的关键问题,有利于开发者们更有针对性地优化自己的仿真器。
历史
驾驶仿真器的发展历史与本篇博客的关联性不大,在此略过。
总览
筛选标准
在回顾仿真器历史和分类仿真器的过程中,由于商业仿真器在某些任务上具有开源仿真器不可比拟的优势——有些领域中甚至是商业仿真器独大的,因此我们必须将它们纳入调研范围。但是在推荐工具和讨论现有不足的环节,考虑本文主要面对的是广大资源体量较小的学术实验室和个人研究者(而且我也没有拿到那么多授权),所以会回退到仅讨论开源仿真器的状态。
因为近年来发布的仿真器数量较多,而我们人手有限,所以在调研过程开始前,设置了几条较为简单粗暴的基准来筛选候选仿真器,若有遗漏还请多多包涵:
商业仿真器的调研主要基于工业界合作方和专家推荐,需要该仿真器有可访问的官方网站;
开源仿真器的论文在google scholar上已有大于等于100的引用量;
开源仿真器的仓库有大于100的star;
考虑到手头资源的局限性,我们没有实际测试各个仿真器的硬件在环测试(Hardware-in-the-loop testing)能力,而是总结了软件所有者在网站/论文中自我声明的支持水平。
目前不同类型的仿真器大致情况如表所示。我们判定维护状态的方式是检查该软件在一年的时间内是否有进行过任何类型的更新,若没有则视为不再积极维护,若最近更新恰好是在一年左右,则标注为问号,一年以内有更新则视为正常维护状态。完整表格请见正式发表的论文。

分类
本节对于上表中的仿真器类别定义进行简单的说明,并基于相关任务推荐开源仿真器(在正式论文中有更详细的表格列举不同类型仿真器的具体功能)。

交通流仿真器
这类仿真器主要用于模拟大规模的车流在交通系统中的运行状态,它们的特征一般包括可以编辑的路网结构、微观交通流,并通常采用模式较为单一的驾驶行为模型操纵车辆。自动驾驶中研究车路协同、车队、联网智能车(Connected and Autonomous Vehicle, CAV) 相关的任务可以用到这类仿真器。这类仿真器中,目前还处于积极维护状态的热门开源仿真器只有SUMO。
传感数据仿真器
这类仿真器的目的是弥补真实数据中缺少极端天气样本,增强感知模型的泛化性。它们追求的是在各类不同光照、能见度、反光率等状态下,通过渲染或学习类方法生成高真实性的光学类感知数据(RGB图像、语义分割、实例分割、甚至是激光雷达)。因为这类仿真器的开发成本高、难度大,而实际收益较低,相关的开源仿真器已经基本停止维护。如果有利用仿真器生成训练/测试感知数据的需求,目前较为合适的选项是综合型仿真器CARLA。
驾驶决策仿真器
驾驶决策仿真器是指用途仅为验证驾驶决策算法的仿真器,它们与综合型仿真器的主要区别在于,为了节约开发成本,这些仿真器往往省略或简化了车辆动力学模型的建模,也无法生成真实的原始感知数据。大部分驾驶决策仿真器只提供了鸟瞰视角的语义分割数据,不过,相应地,在多智能体并行仿真、交通参与物行为模式模拟方面,它们往往有更好的表现。对于模仿学习算法的研究者来说,只要保证环境能够提供理想的环境感知结果,决策模型的运行基本可以脱离环境,所以选择仿真器时会有更大的自由度。除了VDrift,其他积极维护中的仿真环境基本都提供了原生的RL训练支持,所以也可以基于需求选择。MetaDrive作为一款轻量级的、有3D图像界面、可以无限生成交通场景的仿真器,在训练端对端的驾驶决策模型时较为推荐。
车辆动力学仿真器
这类仿真器主要模拟的是车辆的物理运动表现,早早在车辆设计工程中有所应用,因此历史悠久。在自动驾驶相关的任务中,车辆控制通常需要在高真实性的车辆动力学仿真器上验证。这类仿真器需要收集大量实车在各类极限状态下的行为数据,这意味着,如果没有与车辆制造商的紧密合作,想凭空建模一个准确的车辆物理模型是几乎不可能的。这类仿真器的开发也不出意外地被一些老牌商业软件所垄断。开源软件中,机器人学中常用的Gazebo是为数不多可用的选项,而基于Matlab的车辆动力学在学界的实践中也较为常见(工业界的请不要来得瑟了,卑微.jpg)。
综合型仿真器
综合型仿真器是能为多个自动驾驶相关任务提供仿真验证的软件。在Nvidia Drive Sim可能的开源之前,开源软件中,能够独占鳌头的工作,毫无悬念地是CARLA。
说起来也挺好笑的,前几年调研时看好的LGSVL和AirSim都转成Archive模式了,只能说仿真本身是真的难做 ಥ_ಥ
关键问题
目前开源仿真器普遍面临真实性、仿真效率方面的问题。这里提供对关键问题的简单描述,对于可能改进方法的调研请见论文。
真实性-感知数据
感知模块面临一大挑战是算法的泛化性。即使是物体检测这类基础任务,在极端天气时,感知模型的性能也会大幅度下降。通过收集真实数据确实可以解决这个问题,但是极端天气在现实中的出现往往非常随机,想创造相关的大规模数据集对时间和成本要求都很高。有必要充分发挥仿真器的优势,去生成更真实的不同模态的原始感知数据。
其实,在游戏开发领域,已经积累了大量渲染相关的技术基础,如果能在仿真器中应用这些技术自然是最好的。但考虑到游戏的图像渲染未必能在真实性上达到要求,另外一种思路是仿真器提供原生接口,允许接入基于学习的图像生成/风格处理类型的算法,访问三维建模,并直接对其进行处理。
真实性-交通场景
交通场景中主要可以分成几个部分:静态的地图和交通标志、随时间规律变化的交通规则(指红绿灯等)、和随机性强的交通参与物。地图和交通规则主要是在自动构建方面存在瓶颈,影响了仿真器的发展,这个之后会说明。而影响交通场景真实性的主要因素是交通参与物的行为模型。前几年,大部分仿真器中要么提供基于统一规则的行为模型,仅在参数上有一定多样性;要么直接规避掉这个问题,只提供记录回放功能。近年来,InterSim,TBSim的出现反应了相关问题在逐渐得到重视,但仍然需要进一步的研究。
真实性-车辆模型
车辆模型的真实性一直是阻碍基于仿真器验证的自动驾驶系统直接上实车的拦路虎。正如前文提到的,独立的研究者们想要分头解决这个问题是不现实的,理想主义的情况下,要么等待车辆制造商良心发现,公布他们的核心机密,或者大家可以基于手头的实车,共享一些实体个例实验车辆的运行记录,创建符合某种社区规范的公共数据集。事实上,在现实中这两种模式都基本是幻想,这边也就做做梦。
仿真效率-数据准备-格式不一致性
现在很多开源仿真器对于公开轨迹数据集、地图格式的支持还有所不足,导致研究者们反复造轮子,或者为了使用特定的数据集/地图格式而在某几个仿真器之间跳来跳去。这极大地拖慢了仿真数据的准备过程。
仿真效率-数据准备-手动地图标注
目前的地图标注过程中仍有大量手工劳动的成分,OpenDRIVE地图如此,三维高精地图更是如此。这对于批量创造多样化的交通场景来说是一个瓶颈。近年来,快速自动构建地图的算法在大力发展,NeRF基本可以说是无人不晓,但是NeRF在数据格式和粒度方面显然都还无法达到工程要求,需要进一步发展。
仿真效率-运行速度
因为开源仿真器的开发者大部分是在为爱发电,势单力薄,在仿真软件的性能、远程/分布式部署、并行运算等方面显然难以做到尽善尽美。甚至有一部分开源仿真器不一定能够实时运行,想要以现实的多倍速加速训练和测试过程更是相当困难,但这往往是用户需求最强烈的问题,所以有必要进行优化。
仿真效率-迁移-HIL测试
开源仿真器与商业软件的一大差距也在于对HIL测试的支持。从表格中可以看出,有这一功能的开源仿真器寥寥无几。不过这主要是一个工程问题,搭建和维护HIL测试的接口都需要大量人力物力,只能说,用户在进行仿真测试的时候,需要注意被测算法往往距离上实车存在差距,并在描述实验设计时需要注意防范可能的漏洞。
开源仿真器联合宣传
以下是与正文有关的广告环节~
这些描述均为我带着个人感情色彩的一家之言,并没有被任何期刊正式收录,所以请仔细甄别,自行判断信息价值。
Tactics2D
这是我正在开发的驾驶策略仿真器。沿袭我们朴素型决策模型研究者的风格,提供BEV视角的语义分割图作为环境反馈,除此之外,还添加了单线激光雷达的感知结果。
github链接:https://link.zhihu.com/?target=https%3A//github.com/WoodOxen/tactics2d
疯狂的轨迹数据集兼容:如果大家有对其他数据集的解析需求,欢迎提issue~
Argoverse;
DLP泊车场景数据集 (这位作者人超好,帮忙写了个自动下载数据的脚本,指路数据的下载网址;
INTERACTION
LevelX系列(highD, inD, rounD, uniD, exiD):这两天因为数据提供方要求,移除了数据集中的原始数据样本,但我自己标注的地图应该很快会重新放出来
NuPlan
Waymo Motion Open Dataset(地图处理还有一些bug要修)
花式地图格式兼容:V1.0.0中会提供对OSM,Lanelet2标注风格OSM,OpenDRIVE的解析支持。基于现在为数不多的用户的反馈,之后计划添加地图&场景导出为SUMO路网的支持。
泊车/赛车场景生成:自制了一个无限生成泊车场景的RL环境,还基于Gym-box2d优化了一下CarRacing,打算继承维护。
基于log replay的可交互场景生成:通过加载上述数据集中的场景,随机选取车辆作为决策模型控制的代理,并对其他场景内车辆注入行为模型,在代理车辆影响log轨迹时接管车辆并进行交互。
高度自定义性:你几乎可以自定义交通场景中的任何部件——交通参与物、地图元素、环境的奖惩函数、新的行为模型导入。我们非常欢迎新功能的加入。目前智能体交互模块还没调试好,打包发布的流程也还在测试,预计在这个月底前正式发布V1.0.0版本。欢迎大家早早关注,加入discord社群来帮忙内测 QAQ。
MetaDrive
这是 @Blackmore 大神主导开发的仿真器,是一份非常nb的工作,唯一的缺点是我的仿真器在某些方面的性能干不过他的,只好灰溜溜去开发其他特色,避免成为竞品(手动狗头)。
github链接:https://link.zhihu.com/?target=https%3A//github.com/metadriverse/metadrive
特色:
非常轻量级,多智能体模式下仿真效率非常高,我拿2080的显卡,跑30 agent的场景,还能保持20Hz的运行速度。
无限的交通场景生成:Open-Source Platform for Large-Scale Traffic Scenario Simulation and Modeling
支持远程部署和并行计算。
还有很多其他功能,欢迎大家自行探索。
Tactics
显然,这是Tactics2D的兄弟。很不幸的是,它的完成度非常低,在我博士毕业之前,基本不要指望它能发布。
它的建设目标是一个高真实度但是轻量级的三维仿真器,能够满足对极端天气的传感数据模拟需求,内带拖拽式地图编辑功能(参考city skyline),基于感知数据自动生成3D高精地图(这一部分将由我明年入学的学弟主导进行,可想而知这个仿真器的开发周期),也会提供对于一些冷门类型,如二截式拖挂车的动力学模型仿真。
它的最大特色同样也包括了高度的自定义性,我打算尽可能地保持软件本身的鲁棒性,允许它接入各式各样的渲染后处理模型、交通参与物行为模型、动力学模型。作为理想主义的神经病,我真的在考虑围绕Tactics搭建一个类似Steam创意工坊的平台,允许大家共享各式各样的车辆、标志、道路类型参数——说不定最后你就是通过Steam下载它。
因为这个项目的常驻开发者只有我一个人,前面三年我只设计好了整个系统的架构,搞明白了开发它需要哪些方面的专业知识,功能实现目前还是鸡零狗碎的,只做了极端天气和动力学模型。如果有对这个项目感兴趣的朋友,非常欢迎私信我,大家一起来堆城堡~
gitlab链接:https://link.zhihu.com/?target=https%3A//github.com/WoodOxen/tactics

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!
自动驾驶感知:目标检测、语义分割、BEV感知、毫米波雷达视觉融合、激光视觉融合、车道线检测、目标跟踪、Occupancy、深度估计、transformer、大模型、在线地图、点云处理、模型部署、CUDA加速等技术交流群;
多传感器标定:相机在线/离线标定、Lidar-Camera标定、Camera-Radar标定、Camera-IMU标定、多传感器时空同步等技术交流群;
多传感器融合:多传感器后融合技术交流群;
规划控制与预测:规划控制、轨迹预测、避障等技术交流群;
定位建图:视觉SLAM、激光SLAM、多传感器融合SLAM等技术交流群;
三维视觉:三维重建、NeRF、3D Gaussian Splatting技术交流群;
自动驾驶仿真:Carla仿真、Autoware仿真等技术交流群;
自动驾驶开发:自动驾驶开发、ROS等技术交流群;
其它方向:自动标注与数据闭环、产品经理、硬件选型、求职面试、自动驾驶测试等技术交流群;
扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】平台矩阵,欢迎联系我们!