自动驾驶决策 AI 的研究离不开仿真软件,一方面因为自动驾驶的实车测试需要在保证安全的环境中,这使得采用AI模型的实验难以开展;另一方面,对大部分研究者来说,实车测试的条件复杂且昂贵,难以满足。
同时,不论是以模仿学习为代表的监督学习算法,还是需要与环境交互的强化学习算法,都需要从驾驶环境中获取相当数量的样本案例,因此一款好的合适的模拟器能够帮助研究者快速上手驾驶实验,高效地部署算法和仿真实验并提供有价值的解决方案。
本文从决策 AI 研究的角度评测当下各种常见的开源自动驾驶仿真软件,从各个角度帮助读者分析和挑选适用于不同任务和场景的自动驾驶仿真器。
CarSim是由Mechanical Simulation Cooperation开发的一款高自由度的车辆模型仿真软件。CarSim隶属于一个仿真软件大家族,如TruckSim、BikeSim等,主要用于对不同车辆进行动力学仿真。
CarSim主要模拟了真实世界中驾驶员对车辆控制到车辆的运动、位姿变化以及燃料消耗等。CarSim是目前最接近真实世界的驾驶模拟器之一,它考虑了真实世界中的各种物理模型,考虑了汽车内部结构、动力和制动系统、空气动力学、路面摩擦等对控制结果的影响,可用于车辆底层控制系统的开发和研究。
CarSim自带了MATLAB和Simulink仿真接口,可以通过MATLAB仿真软件进行开发。CarSim 还自带了可视化模块,可以方便地依据运行结果对算法进行调整和查错。CarSim现在也支持了一些实际驾驶场景中的仿真功能,可以对驾驶算法在实际道路上的运行结果进行仿真试验。CarSim是考虑车辆动力学模型下最适用于自动驾驶仿真研究的模拟器,也提供了一些相关的适配硬件来方便部署以及一些实车运行收集到的数据等。
其主要缺点是计算太过复杂,仿真速度慢,因此主要用于车辆机械结构、传导和动力系统、能源消耗等车辆工程问题,结合环境中地驾驶表现和驾驶形态的仿真。较少用于自动驾驶算法的研究。
CarSim官网链接:
https://www.carsim.com/products/carsim/
CarSim运行实例图
Carla是由英特尔实验室联合巴塞罗那计算机视觉中心开发的自动驾驶仿真模拟器,它基于虚幻引擎(Unreal Engine4)实现,主要用于城市级场景自动驾驶系统的开发和设计。
Carla拥有相对复杂的驾驶底层引擎,接近真实的渲染场景,包括道路以及道路外的其他障碍物,还有各种行人、车辆的模型等。Carla主要针对单车视角的城市驾驶环境,用于从传感信息出发,训练驾驶策略得到控制信号。
使用上,Carla分为Server端和Client端,Server端运行引擎和环境渲染,Client端可通过TCP Link访问Server,从中获取数据及向车辆发送命令。
Carla仿真器中包含各种传感器和环境组件,囊括了RGB、Depth、Segmentation、LiDAR、GNSS等自动驾驶领域常见的传感器,能够调节环境的光照、天气、地面摩擦系数等环境和渲染参数,也能对行人和他车的数量和行为分布做自由定制。以上功能可以通过PythonAPI接口进行访问和配置。
Carla Server端和Client端可视化示例
Carla是目前学术界关注最多,也是研究领域使用并产出最多的自动驾驶仿真软件。在介绍Carla的研究文献中,有作者尝试并对比了三种常见的驾驶策略接口:模块化的传统方法、端到端的模仿学习策略、端到端的强化学习策略。
后续的研究者从这些Baseline出发提出了各种改进方案,现在Carla拥有一套标准的决策AI环境构造方案和Benchmark 训练测试场景用于对比,同时有新方法不断刷新这些Benchmark场景中的Performance。还有不少开发者在Carla默认组件的基础上添加了新的Planner、Controller等模块,丰富了Carla的功能和定制自由度,降低了Carla的使用难度。
一些由Carla团队或其他团队开发代码库在基本功能上继续扩展了其他内容,如支持场景构造和测试的Scenario Runner、强化学习环境Gym-Carla、全面的决策AI自动驾驶训练和测试平台DI-drive等。
DI-drive运行Carla 示例
Carla的主要缺点是仿真速度慢,对系统的依赖较为复杂,需要图形界面等。由于其底层基于UE4开发,无法实现以远超真实世界运行速率的方式进行采样,这对强化学习训练不利。
Carla官网链接:http://carla.org
SUMO 的全称是 Simulation of Urban Mobility,是一款路网交通仿真模拟器。SUMO主要是从交通路网和车流的层面出发,进行自动驾驶和交通流的仿真,支持对道路和车道的编辑,车流和信号灯的定义等。
对自动驾驶决策AI来说,SUMO的优势是可以方便地定义各种路网场景,如Highway、Merge、Roundabout等,同时也易于定制路网中他车的数量和路线。SUMO还支持运行现实世界中的路网,只要将其转为可以接受的格式即可。SUMO的运行效率极高,可以运行大到整个街区,涵盖数平方公里多达几万车辆的连续交通仿真。
SUMO路网实例图
SUMO的使用方式主要是按照标准形式定义道路文件和车流的路由文件,随后进行运行。SUMO在运行时会提供一个可视化界面可以实时显示仿真的结果,也支持通过界面来交互式地定义路网、车流和信号灯等。另外SUMO也支持通过Python或C++接口对交通和驾驶策略进行自定义。
SUMO是主要用于交通领域的仿真器,近年来也开始应用于自动驾驶当中。但SUMO的问题是其驾驶模型过于简单,没有考虑车辆的物理模型和底层控制模块,而是采用滑块引擎,即只能定制纵向的控制,横向仅支持在不同车道之间横移,并且是瞬间完成的。
一些采用SUMO仿真器做自动驾驶研究仅保留了地图和环境传感等定义,额外开发了相对真实的车辆控制模块来做驾驶仿真。总之将SUMO应用于单车自动驾驶研究还需要一些额外的开发工作。
SUMO官网链接:
https://www.eclipse.org/sumo/
(未完待续,请期待下一期)
扫码了解更多开源决策ai项目