大家好,我已经把CSDN上的博客迁移到了知乎上,欢迎大家在知乎关注我的专栏慢慢悠悠小马车(https://zhuanlan.zhihu.com/duangduangduang)。希望大家可以多多交流,互相学习。
自动驾驶算法的调试和效果评测首先要在仿真环境中去做,因此,一个强大、灵活的仿真环境是开发、测试过程中必不可少的要素。我在查找可用的仿真工具时主要关注以下几个特性:
- 开源,免费
- 包含高速场景
- 可以便捷的控制、切换场景的环境,场景、环境尽可能的丰富与真实
- 可以便捷的控制、切换场景内移动物体(如车辆、行人等)的行为模式,行为模式尽可能的丰富与真实
第一条基本上把商用的软件排除掉了,如PreScan等······在检索过程中,CARLA是出现频率最高的,因此先介绍它的特性如何。本文主要是对CARLA论文的梳理,这篇文章是2017年发布的,后续CARLA进行了很多更新和release,本文主要针对地图场景进行了补充。
简介
CARLA包含了自动驾驶系统的3种方法:
- 经典模块化方法,包含基于视觉的感知模块,基于规则的规划器,还有行为控制器。
- 端到端的模仿学习方法。
- 端到端的强化学习方法。
针对3D的城市场景(urban driving),开源免费,支持感知、规划、控制。
基于Unreal Engine 4,server-client结构。
可安装于Linux和Windows。
Python API,没有C++ API。
环境
包含静态物体的3D模型,如建筑物、草地绿植、交通标志、基础设置等,动态物体如车辆、行人等。累计40种不同的建筑物,16种车辆,50种行人模型。能反映真实物体的大小。
创建城市环境的3个步骤:
- 排布道路和人行道
- 放置房子、绿植、地形、交通基础设施
- 指定动态物体可以出现的地点
最初有2个town,training town有2.9Km可行驶道路,testing town有1.4Km。更新后的版本逐渐支持了如下towns:
-
0.8.3版本,添加了two-wheeled vehicles, 3 bicycles and 4 motorbikes
-
0.8.4版本,开始支持ROS,添加了Tesla Model 3。
-
0.9.0版本,Every vehicle can now be controlled, cameras can be placed anywhere, and any number of client applications can connect simultaneously to the same instance of the simulator.
-
0.9.1版本,Town03,a complex urban scene with multi-lane roads, tunnels, roundabouts and many other interesting features, as an example of a map generated semi-automatically from an external tool.
-
0.9.2版本,新的ROS-bridge。Town03 has been upgraded to include a setup of traffic lights that is compatible with US standards,包含了unsignalized intersection。Changed traffic lights in Town03 to American style。Added new junction types with only stop signs。
-
0.9.3版本,Town04,最大的地图,用来测试高速路以及不同高度的坡道, connection ramps with different heights and a small town。Town05包含一小段高速和大量的街道以及交叉路口。Town05 includes a small freeway and a lot of different street layouts with more junctions.
-
0.9.4版本,Town06,用来测试“Michigan Left”,以及高速路中的进出匝道和变道,on-and-off connections ramps between two highways and dedicated turning lanes。增加了可导入地图。
-
0.9.5版本,Rural Town: Town07,用来测试狭窄道路、缺少交通信号灯、没有信号标识的交叉路口等场景。
non-player车辆的行为包括:车道跟随、遵守交通灯、速度限制、路口的决策。
支持2种光照条件:正午和傍晚;9种天气。
传感器
只有RGB相机一种传感器和2种分别提供深度信息和语义信息的伪传感器,语义包含物体的12种分类。
提供有GPS坐标、朝向、速度、加速度、碰撞等数据,以及交通规则评估数据,如行驶过的轨迹占据错误的车道比例等,还提供了所有动态物体的准确位置和bounding boxes。
0.9.1版本,增加了检测碰撞和变道的传感器,增加了对Lidar的支持。
经典模块
没有使用带长度的地图(即没有长度单位),局部规划仅依赖于感知探测到的环境。内部有状态机:车道跟随,左转,右转,路口前进,停车。
PID控制。
感知的语义分割基于RefineNet。
判断是否处于路口基于AlexNet二分类。
强化学习
A3C算法(asynchronous advantage actor-critic algorithm)
问题
目前好像在使用RoadRunner生成自定义的地图时,会遇到一些问题。具体可以关注issues。