无人驾驶技术是多项技术的集成,包括传感器、定位与深度学习、高精地图、路径规划、障碍物检测与规避、机械控制、系统集成与优化、能耗与散热管理等。无人车系统的感知端由不同的传感器组成,其中包括GPS(用于定位)、激光雷达(用于定位及障碍物检测)、RGB照相机(用于深度学习的物体识别),以及定位辅助。
在传感器采集到信息后,我们就进入了感知阶段,主要工作是定位与物体识别。在这个阶段,可以用数学的方法,比如卡尔曼滤波与粒子滤波等算法,对各种传感器信息进行融合,并得出当前最大概率的位置。如果使用激光雷达为主要的定位传感器,则可以将激光雷达扫描回来的信息跟已知的高精地图做对比,从而得出当前的车辆位置。如果当前没有地图甚至可以将当前的激光雷达扫描与之前的激光雷达扫描用ICP(Iterative Closest Point,迭代最近点)算法做对比,从而推算出当前的车辆位置。在得出基于激光雷达的位置预测后,可以用数学的方法与其他传感器信息进行融合,推算出更精准的位置信息。
最后我们进入规划与控制阶段。在这个阶段,我们根据位置信息及识别出的图像信息(比如红绿灯),实时调节车辆的行车规划,并把行车规划转化成控制信号去操控车辆。全局的路径规划可以用A-Star类似的算法实现,本地的路径规划可以用DWA等算法实现。
激光雷达是一种光学遥感技术,它向目标物体发射一束激光,根据接收——反射的时间间隔确定目标物体的实际距离。然后根据距离及激光发射的角度,通过简单的几何变化推导出物体的位置信息。由于激光的传播受外界影响小,激光雷达能够检测的距离一般可以达到100m以上。与传统雷达使用无线电波相比,激光雷达使用激光射线,商用激光雷达使用的激光射线波长一般在600nm~1000nm,远远低于传统雷达使用的波长。因此激光雷达在测量物体距离和表面形状上可达到更高的精准度,一般精准度可以达到厘米级。
激光雷达系统一般可以分为三个部分:第一部分是激光发射器,发射出波长为600~1000nm的激光射线;第二部分是扫描与光学部件,主要用于收集反射点距离与该点反射的时间和水平角度(Azimuth);第三部分是感光部件,主要检测返回光的强度。因此,我们检测到的每一个点都包括了空间坐标信息 ( x , y , z ) (x,y,z) (x,y,z)及光强度 i i i。光强度与物体的光反射度直接相关,所以从检测到的光强度我们也可以对检测到的物体有初步判断。
无人车所使用的激光雷达并不是静止不动的。在无人车的行驶过程中,激光雷达同时以一定的角速度匀速转动,在这个过程中不断地发出激光并收集反射点的信息,以便得到全方位的环境信息。激光雷达在收集反射距离的过程中会同时记录该点发生的时间和水平角度,并且,每个激光发射器都有其编号和固定的垂直角度,根据这个数据就可以计算出所有反射点的坐标。激光雷达每旋转一周,收集到的所有反射点坐标的集合就形成了点云(Point Cloud)。
如图所示,激光雷达通过激光反射可以测出和物体的距离(distance),因为激光的垂直角度是固定的,记作 a a a,这里我们可以直接求出 z z z轴坐标为 s i n ( a ) ⋅ d i s t a n c e sin(a)\cdot distance sin(a)⋅distance。由 c o s ( a ) ⋅ d i s t a n c e cos(a)\cdot distance cos(a)⋅distance可以得到 d i s t a n c e distance distance在 X Y XY XY平面的投影,记作 x y _ d i s t xy\_dist xy_dist。激光雷达在记录反射点距离的同时也会记录当前激光雷达转动的水平角度 b b b,这样根据简单的几何转换就可以得到该点的 x x x、 y y y坐标,分别为 c o s ( b ) ⋅ x y _ d i s t cos(b)\cdot xy\_dist cos(b)⋅xy_dist和 s i n ( b ) ⋅ x y _ d i s t sin(b)\cdot xy\_dist sin(b)⋅xy_dist。
高精地图不同于我们日常使用的导航地图。高精地图是由众多的点云拼接而成的,主要用于无人车的精确定位。高精地图的绘制也是通过激光雷达完成的。安装激光雷达的地图数据采集车在想要绘制高精地图的路线上多次反复行驶,并收集点云数据。后期经过人工标注,首先将过滤一些点云图中的错误信息,例如路上行驶的汽车和行人反射所形成的点,然后对多次收集到的点云进行对齐拼接,形成最终的高精地图。
激光雷达会在车辆行驶过程中不断地收集点云来了解周围的环境。我们可以很自然地想到利用这些观察到的环境信息帮助我们定位。可以把这个问题简化为 :已知 t 0 t_0 t0时刻的GPS信息, t 0 t_0 t0时刻的点云信息,以及无人车 t 1 t_1 t1时刻可能在三个位置 P 1 P_1 P1、 P 2 P_2 P2、 P 3 P_3 P3。求 t 1 t_1 t1时刻车在这三个点的概率。根据贝叶斯法则,无人车的定位问题可以简化为下面这个概率公式:
P ( X t ) ≈ P ( Z t ∣ X t ) ⋅ P ( X t ) ˉ P(X_t)\approx P(Z_t|X_t)\cdot{\bar{P(X_t)}} P(Xt)≈P(Zt∣Xt)⋅P(Xt)ˉ
其中 P ( Z t ∣ X t ) P(Z_t|X_t) P(Zt∣Xt)表示给定当前位置,观测到点云信息的概率分布。其计算方式一般分为局部估计和全局估计。局部估计较简单的做法就是通过当前时刻点云和上一时刻点云的匹配,借助几何上的推导,估计出无人车在当前位置的可能性。全局估计就是利用当前时刻的点云和上面提到过的高精地图做匹配,从而得到当前车相对地图上某一位置的可能性。在实际应用中一般会将两种定位方法结合使用。第二项 P ( X t ) ˉ \bar{P(X_t)} P(Xt)ˉ表示对当前位置的预测的概率分布,这里可以简单地用GPS给出地位置信息作为预测。通过计算P1,P2,P3这三个点的后验概率,可以估算出无人车在哪一个位置的可能性最高。通过对两个概率分布相乘,可以很大程度上提高无人车定位的准确度。
在机器视觉中,一个比较难解决的问题就是判断物体的远近,基于单一摄像头抓取的2D图像无法得到准确的距离信息,而基于多摄像头生成深度图的方法需要很大的计算量,不能很好的满足无人车在实时性上的要求。另一个棘手问题是光学摄像头受光照条件的影响巨大,物体的识别准确度很不稳定。
利用激光雷达生成的点云可以很大程度上解决上述两个问题,借助激光雷达本身的特性,可以反射障碍物的远近、高低甚至表面形状,做出较准确的估计,从而大大提高障碍物检测的准确度,而且其算法的复杂度低于基于摄像头的视觉算法,因此更能满足无人车的实时性要求。
激光雷达的精度会受到天气的影响,由于空气中的悬浮物会对光速产生影响。外部环境(大雾及雨天)也会影响激光雷达的精度。
即使是16线的激光雷达,每秒要处理的点也达到了30万个。如此大量的数据处理是无人车定位算法和障碍物检测算法的实时性需要面临的一大挑战。例如之前所说的激光雷达给出的原始数据只是反射物体的距离信息,需要对所有产生的点进行几何变换,将其转换为位置坐标,其中至少涉及4次浮点运算和三次三角函数运算,而且点云在后期的处理中还有大量坐标系转转等更多复杂的运算,这些都对计算资源(CPU、GPU和FPGA)提出了很大的需求。
型号 | Channel数量 | 每秒产生的点数 |
---|---|---|
Velodyne HDL-64E | 64 Channels | 2200000 |
Velodyne HDL-32E | 32 Channels | 700000 |
Velodyne HDL-16E | 16 Channels | 300000 |
上面提到的Velodyne VLP-16激光雷达官网税前售价为7999美元,而Velodyne HDL-64E激光雷达售价也在10万美元以上。这些成本要加在本来就没有过高利润的汽车价格中,无疑会大大阻碍无人车的商业化。
无人驾驶对激光雷达提出了新的需求,核心指标是分辨率和探测距离,以及传感器的几何大小和成本,等等,点云分辨率和探测距离对激光雷达的应用效果有着决定性影响
以Velodyne为代表的多线扫描低分辨率雷达在自动驾驶系统中被广泛采用。这类激光雷达的典型架构如图所示。由多组光路延纵向排列构成,每一组光路有独立的发射接收光路,以覆盖纵向视场内的多个离散角度。整个系统绕纵轴360°旋转,覆盖横向视场的整个范围。纵向视场角内的线数通常在16线到64线之间。
尽管无人驾驶技术渐趋成熟,但激光雷达始终是一个绕不过去的技术。纯视觉与GPS/IMU的定位及避障方案价格虽然低,却不成熟,很难应用到室外场景中。同时,激光雷达的价格居高不下,消费者很难承受动辄几十万美元定价的无人车。因此,当务之急就是快速把系统成本特别是激光雷达的成本大幅降低。其中一个交由希望的方法是使用较低价的激光雷达,虽然会损失一些精度,但可以用其他低价的传感器与激光雷达做信息混合,较精准的推算出车辆的位置。简而言之就是用更好的算法弥补硬件传感器的不足。