首先自动驾驶技术从业务流程上分为3个核心的流程,分别是环境感知定位、决策规划、执行控制。这3个核心流程的具体价值如下:
环境感知定位:主要是通过传感器技术和摄像头、GPS等技术获取汽车行驶过程中的环境指标,并且将数据采集
决策规划:通过收集的数据,对车辆的下一步行为作出判断和指导
执行决策:目前大部分车辆都采用线控设计,如何将决策通过信号指令控制汽车的油门、制动等相关系统
以上3个流程,每一个步骤都包含了许多核心技术和功能点,在接下来的系列文章中我将一一讲解,本篇文章作为综述,核心体现的是下面这种自动驾驶技术架构图,这张架构图包含了每个流程的核心功能。
环境感知和定位其实是由3个模块组成,分别是环境感知、定位、V2X组成。
环境感知模块主要是通过摄像头和各种雷达实现对道路和行驶路线的识别。而且通常理想情况下,环境的感知需要多种传感器的配合来实现。
摄像头是最接近于人眼的一种环境感知设备。常见的车载摄像头包含单目摄像头、双目摄像头、环视摄像头。单目摄像头一般一般至于车的顶端,负责监控前方的路障,但是对距离感知不太敏感。
而双目摄像头,可以利用视距差,通过三角测距技术获取障碍物到车辆的距离。比如下图P1和P2为两个摄像头,P为障碍物。可以通过三角测距获取P到车辆的距离。
而环视摄像头至少需要4个,可以360度的监控全车周边的情况。
采用摄像头识别的问题在于需要依赖大量的图像数据积累,并且训练生成视觉模型才能识别,整个的技术成长周期比较长。除了摄像头,还可以通过雷达实现环境感知。雷达分为激光雷达、毫米波雷达和超声波雷达。
其中激光雷达又称LiDAR,他的核心原理是通过发送一道光,这个光遇到障碍物会反弹回收,通过两者的时间差来判断距离。
另外,通过激光雷达的数据采集,可以绘制出点云图,从而实现对障碍物的形状、大小、距离的描绘,典型的点云图如下:
激光雷达的一个主要问题就是容易受到天气的影响,比如降雨天气下,水珠就容易对激光雷达的效果产生影响。
毫米波雷达也能起到车辆和物体的测距效果,通过发射信号和接收信号之间频率的转变实现速度的推送。毫米波雷达相较于激光雷达相比,穿透灰尘和烟的能力较强,在非常极端的天气条件下也可以正常工作。
超声波雷达是辅助驾驶领域应用比较多的一种雷达,常常安装到车后方的保险杠,用于倒车辅助功能。
原理是发出和接收相同频率的声波,然后通过时间差测量距离。超声波雷达不太适合远距离测距。
目前自动驾驶领域通常是摄像头和激光雷达、毫米波雷达配合使用。单一模式的环境识别都会存在一定的劣势。
环境感知技术主要是帮助车辆获取道路状况信息,定位服务可以帮助车辆获取到车辆所在的具体坐标,为车辆的决策规划提供依据。常见的定位系统有卫星定位、差分定位和惯性导航定位等。
卫星定位是日常大家非常熟悉的定位方式,常见的卫星定位服务有美国的GPS、欧洲的伽利略、中国的北斗导航等。这里多说一句,因为自动驾驶系统一旦商用,所有车辆运行轨迹将被定位系统监控,所以出于国家安全考虑,各国大概率将采用本国的卫星定位系统。
卫星定位的基本原理就是通过三角定位的方案,至少3颗卫星同时跟地面车辆连接,就可以计算出准确的车辆坐标。
差分定位原理是确定一个参考站,参考站跟卫星发生通信,得到当前位置的误差,也叫做差分校正量。然后流动站就是汽车,通过差分校正量为汽车的真实定位做校正。差分定位是一种提升GPS定位准确率的技术方案。
惯性定位不依赖任何光电技术。仅依赖于汽车当前的加速度,通过积分可以获得车的下一时间段的位移,当车速较快的时候,惯性定位会是卫星定位的很好地补充。
V2X(Vehicle to Everything)技术指的是车用无线通信技术,通过通信去连接其他应用,从而衍生出V2R(Vehicle to Road)、V2I(Vehicle to Infrastruction)、V2P(Vehicle to Prestrian)。
V2R技术指的是车辆间的通信,比如有一辆车要转向了,那么通过与后方车辆的通信,让后方车辆可以提前做避让。
这两个可以放到一起介绍,V2I指的是跟一些红绿灯等设施的通信。V2P可能是与一些行人的手表、手机相关的通信。
环境感知和定位主要起到的是确定外界环境状态的作用,为路径的决策和规划提供依据。在决策规划模块,主要解决的问题是车辆该怎么走的问题。这里面又分为两个方面,分别是路径的规划和行为的决策。
路径规划其实是高精度地图领域的技术。传统的人驾驶模式,如果地图导航出现了失误其实可以通过人肉修正。而自动驾驶时代,地图的准确性以及导航的准确性,将直接关乎安全性,所以自动驾驶时代的高精度地图技术非常重要。
那么如何在高精度地图领域做路径规划,其实就是求两点间最短路径问题。因为在自动驾驶技术成熟后,很可能乘客上车设置一个目的地就开始睡觉了,剩下路怎么走相关问题就依赖于汽车的路径规划。
常用的求最短距离的算法有Dijkstra、Floyd、A*、RRT算法等。在后续的文章将会逐步介绍这些算法。
因为车辆自动驾驶问题不是单一变量问题,车辆在形式的过程中既包含车本身的行为,也包含道路上其它行人、汽车的行为。所以行为决策主要包含两个方面,一个是车辆自己的形式决策,另一个是对于其它行驶车辆的行为的预测。
对于交通参与方的预测可以通过多种算法来实现,构建一套运动模型的方式。但是有的人会问?道路上其它车辆加速转弯等行为是存在很大不确定性的,这种情况怎么构建预测模型呢。
比较常用的解法是通过高斯噪声来代表交通参与者运动的不确定性,因为大部分参与方的行为一定是服从正态分布的,所以整个模型构建可以看作是一个高斯过程。对于交通参与方的行为和意图的预测,可以看作是一个动态的时序过程,可以用深度学习LSTM这样的循环神经网络解决相应的问题。
说回车辆自身,需要决策的指令集包含:行驶、跟车、转弯、换道、停车等。车辆如何做决策,或者做什么样的决策,需要放到一个场景下去判别。
整体流程应该分为4个步骤,首先感知环境的变化,比如前方有车并道了,然后做场景判断,前方有车并道场景该调取什么样的模型做预测,最终的行为输出可能是减速或者自己并到另一个道路。这中间的判断过程还要考虑其它车辆行为,以及是否符合道路规章制度。
每次行为的整体决策链路非常长,而且每一步决策相互影响,所以这种自动驾驶车辆行为决策的功能可以看成是一系列概率的加成,可以看成是马尔科夫决策过程。
经过环境感知和决策规划之后,就到了执行控制的环节。如何将决策传递给车辆的功能部件,把油门、制动、转向、换挡指令落实,是制动控制的关键,也是标准的动力学原理。
自动驾驶汽车目前比较可行的方案是通过CAN电力总线去控制每个部件的行为,将指令通过电子信号传达到每个部件,这也是目前电动汽车的主要传感方式。CAN总线的关键环节是如何通过电信号将指令发送以及接收,另外就是时间响应问题。这一套技术随着电动汽车的发展,相对比较成熟,就不过多介绍。
本文是我学习自动驾驶技术的开篇,还有很多不成熟,后续会不断修订。这篇文章是综述,把自动驾驶技术切分成环境感知和定位、决策规划、执行控制3个模块,后续会针对每个模块的具体算法以及原理进行详细的学习和分享。
感谢清华出版社的<自动驾驶系列丛书>,感谢在学习过程中和我一起讨论并给予帮助的朋友们。