概述
作者:刘博聪,刘少山,James Peng
责编:周建丁(投稿请联系zhoujd@csdn.net)
声明:《程序员》原创文章未经允许不得转载,更多精彩文章请订阅2016年程序员:http://dingyue.programmer.com.cn/
摘要:本文为《程序员》无人驾驶技术系列文章的第一篇,深入解析光学雷达(LiDAR)在无人车研发中的应用,包括光学雷达的工作原理,在地图绘制、定位以及障碍物检测等环节的应用,以及面临的挑战。
无人驾驶汽车的成功涉及高精地图、实时定位以及障碍物检测等多项技术,而这些技术都离不开光学雷达(LiDAR)。本文将深入解析光学雷达是如何被广泛应用到无人车的各项技术中。文章首先介绍光学雷达的工作原理,包括如何通过激光扫描出点云;然后详细解释光学雷达在无人驾驶技术中的应用,包括地图绘制、定位以及障碍物检测;最后讨论光学雷达技术目前面临的挑战,包括外部环境干扰、数据量大、成本高等问题。
无人驾驶技术简介
无人驾驶技术是多个技术的集成,包括了传感器、定位与深度学习、高精地图、路径规划、障碍物检测与规避、机械控制、系统集成与优化、能耗与散热管理等等。虽然现有的多种无人车在实现上有许多不同,但是在系统架构上都大同小异。图1显示了无人车的通用系统架构,系统的感知端(图1左)由不同的传感器组成,其中GPS用于定位,光学雷达(Light Detection And Ranging,简称 LiDAR)用于定位以及障碍物检测,照相机用于基于深度学习的物体识别以及定位辅助。
在传感器信息采集后,我们进入了感知阶段,主要是定位与物体识别(图1中)。在这个阶段,我们可以用数学的方法,比如Kalman Filter与 Particle Filter等算法,对各种传感器信息进行融合,得出当前最大几率的位置。如果使用LiDAR为主要的定位传感器,我们可以通过LiDAR扫描回来的信息跟已知的高精地图做对比,得出当前的车辆位置。如果没有地图,我们甚至可以把当前的LiDAR扫描信息与之前的扫描信息用ICP算法做对比,推算出当前的车辆位置。在得出基于LiDAR的位置预测后,可以用数学方法与其它传感器信息进行融合,推算出更精准的位置信息。
最后,我们进入了计划与控制阶段(图1右)。在这个阶段,我们根据位置信息以及识别出的图像信息(如红绿灯)实时调节车辆的行车计划,并把行车计划转化成控制信号操控车辆。全局的路径规划可以用类似A-Star的算法实现,本地的路径规划可以用DWA等算法实现。
光学雷达基础知识
先来了解下光学雷达的工作原理,特别是产生点云的过程。
工作原理
光学雷达是一种光学遥感技术,它通过首先向目标物体发射一束激光,再根据接收-反射的时间间隔来确定目标物体的实际距离。然后根据距离及激光发射的角度,通过简单的几何变化可以推导出物体的位置信息。由于激光的传播受外界影响小,LiDAR能够检测的距离一般可达100m以上。与传统雷达使用无线电波相比较,LiDAR使用激光射线,商用LiDAR使用的激光射线波长一般在600nm到1000nm之间,远远低于传统雷达所使用的波长。因此LiDAR在测量物体距离和表面形状上可达到更高的精准度,一般可以达到厘米级。
LiDAR系统一般分为三个部分:第一是激光发射器,发射出波长为600nm到1000nm之间的激光射线;第二部分是扫描与光学部件,主要用于收集反射点距离与该点发生的时间和水平角度(Azimuth);第三个部分是感光部件,主要检测返回光的强度。因此我们检测到的每一个点都包括了空间坐标信息(x, y, z)以及光强度信息(i)。光强度与物体的光反射度(reflectivity)直接相关,所以根据检测到的光强度也可以对检测到的物体有初步判断。
什么是点云?
无人车所使用的LiDAR并不是静止不动的。在无人车行驶的过程中,LiDAR同时以一定的角速度匀速转动,在这个过程中不断地发出激光并收集反射点的信息,以便得到全方位的环境信息。LiDAR在收集反射点距离的过程中也会同时记录下该点发生的时间和水平角度(Azimuth),并且每个激光发射器都有编号和固定的垂直角度,根据这些数据我们就可以计算出所有反射点的坐标。LiDAR每旋转一周收集到的所有反射点坐标的集合就形成了点云(point cloud)。
如图2所示,LiDAR通过激光反射可以测出和物体的距离distance,因为激光的垂直角度是固定的,记做a,这里我们可以直接求出z轴坐标为sin(a)*distance。由cos(a)*distance我们可以得到distance在xy平面的投影,记做xy_dist。LiDAR在记录反射点距离的同时也会记录下当前LiDAR转动的水平角度b,根据简单的集合转换,可以得到该点的x轴坐标和y轴坐标分别为cos(b)*xy_dist和sin(b)*xy_dist。
LiDAR 在无人驾驶技术中的应用领域
接下来介绍光学雷达如何应用在无人驾驶技术中,特别是面向高精地图的绘制、基于点云的定位以及障碍物检测。
高清地图的绘制
这里的高清地图不同于我们日常用到的导航地图。高清地图是由众多的点云拼接而成,主要用于无人车的精准定位。高清地图的绘制也是通过LiDAR完成的。安装LiDAR的地图数据采集车在想要绘制高清地图的路线上多次反复行驶并收集点云数据。后期经过人工标注,过滤一些点云图中的错误信息,例如由路上行驶的汽车和行人反射所形成的点,然后再对多次收集到的点云进行对齐拼接形成最终的高清地图。
基于点云的定位
首先介绍定位的重要性。很多人都有这样的疑问:如果有了精准的GPS,不就知道了当前的位置,还需要定位吗?其实不然。目前高精度的军用差分GPS在静态的时候确实可以在“理想”的环境下达到厘米级的精度。这里的“理想”环境是指大气中没有过多的悬浮介质而且测量时GPS有较强的接收信号。然而无人车是在复杂的动态环境中行驶,尤其在大城市中,由于各种高大建筑物的阻拦,GPS多路径反射(Multi-Path)的问题会更加明显。这样得到的GPS定位信息很容易就有几十厘米甚至几米的误差。对于在有限宽度上高速行驶的汽车来说,这样的误差很有可能导致交通事故。因此必须要有GPS之外的手段来增强无人车定位的精度。
上文提到过,LiDAR会在车辆行驶的过程中不断收集点云来了解周围的环境。我们可以很自然想到利用这些环境信息来定位。这里我们可以把这个问题用一个简化的概率问题来表示:已知t0时刻的GPS信息,t0时刻的点云信息,以及t1时刻无人车可能所在的三个位置:P1、P2和P3(这里为了简化问题,假设无人车会在这三个位置中的某一个)。求t1时刻车在这三点的概率。根据贝叶斯法则,无人车的定位问题可以简化为如下概率公式:
右侧第一项表示给定当前位置,观测到点云信息的概率分布。其计算方式一般分局部估计和全局估计两种。局部估计较简单的做法就是通过当前时刻点云和上一时刻点云的匹配,借助几何推导,可以估计出无人车在当前位置的可能性。全局估计就是利用当前时刻的点云和上面提到过的高清地图做匹配,可以得到当前车相对地图上某一位置的可能性。在实际中一般会两种定位方法结合使用。右侧第二项表示对当前位置预测的概率分布,这里可以简单的用GPS给出的位置信息作为预测。通过计算P1、P2和P3这三个点的后验概率,就可以估算出无人车在哪一个位置的可能性最高。通过对两个概率分布的相乘,可以很大程度上提高无人车定位的准确度,如图3所示。
障碍物检测
众所周知,在机器视觉中一个比较难解决的问题就是判断物体的远近,基于单一摄像头所抓取的2D图像无法得到准确的距离信息。而基于多摄像头生成深度图的方法又需要很大的计算量,不能很好地满足无人车在实时性上的要求。另一个棘手的问题就是光学摄像头受光照条件的影响巨大,物体的识别准确度很不稳定。图4展示了光线不好的情况下图像特征匹配的问题:由于相机曝光不充分,左侧图中的特征点在右侧图中没有匹配成功。图5左侧展示了2D物体特征匹配成功的例子:啤酒瓶的模板可以在2D图像中成功识别。但是如果将镜头拉远,如图5右所示,我们只能识别出右侧的啤酒瓶只是附着在另一个3D物体的表面而已。2D物体由于维度缺失的问题很难在这个情境下做出正确的识别。
利用LiDAR所生成的点云可以很大程度上解决上述两个问题,借助LiDAR的特性,我们可以对反射障碍物的远近、高低甚至是表面形状有较为准确的估计,从而大大提高障碍物检测的准确度,而且这种方法在算法的复杂度上低于基于摄像头的视觉算法,因此更能满足无人车的实时性需求。
LiDAR技术面临的挑战
前文我们专注于LiDAR对无人驾驶系统的帮助,但是在实际应用中,LiDAR也面临着许多挑战,包括技术、计算性能以及价格挑战。要想把无人车系统产品化,我们必须解决这些问题。
技术挑战:空气中悬浮物
LiDAR的精度也会受到天气的影响。空气中悬浮物会对光速产生影响。大雾及雨天都会影响LiDAR的精度,如图6所示。
图7测试中使用了A和B两个来自不同制造厂的LiDAR,可以看到随着实验雨量的增大,两种LiDAR的最远探测距离都线性下降。雨中或雾中的传播特性最近几年随着激光技术的广泛应用越来越受到学术界的重视。研究表明:雨和雾都是由小水滴构成的,雨滴的半径直接和其在空中的分布密度直接决定了激光在传播的过程中与之相撞的概率。相撞概率越高,激光的传播速度受影响越大。
计算性能挑战:计算量大
从表1可以看到,即使是16线的LiDAR每秒钟要处理的点也达到了30万。要保证无人车定位算法和障碍物检测算法的实时性,如此大量的数据处理是面临的一大挑战。例如,之前所说的LiDAR给出的原始数据只是反射物体的距离信息,需要对所有产生的点进行几何变换,将其转化为位置坐标,这其中至少涉及4次浮点运算和3次三角函数运算,而且点云在后期的处理中还有大量坐标系转换等更复杂的运算,这些都对计算资源 (CPU、GPU、FPGA) 提出了很大的需求。
型号 | Channel 数量 | 每秒产生点数 |
---|---|---|
Velodyne HDL-64E | 64 Channels | 2,200,000 |
Velodyne HDL-32E | 32 Channels | 700,000 |
Velodyne VLP-16 | 16 Channels | 300,000 |
成本挑战:造价昂贵
LiDAR的造价也是要考虑的重要因素之一。上面提到的Velodyne VLP-16 LiDAR官网报价为税前7999美元,而Velodyne HDL-64E LiDAR预售价在10万美元以上。这样的成本要加在本来就没有很高利润的汽车价格中,无疑会大大阻碍无人车的商业化。
展望未来
尽管无人驾驶技术渐趋成熟,但LiDAR始终是一个绕不过去的坎。纯视觉与GPS/IMU的定位以及避障方案虽然价格低,却还不成熟,很难应用到室外场景中;但同时LiDAR价格高居不下,消费者很难承受动辄几十万美元定价的无人车。因此,当务之急就是快速把系统成本特别是LiDAR的成本大幅降低。其中一个较有希望的方法是使用较低价的LiDAR,虽然会损失一些精确度,但可以使用其它的低价传感器与LiDAR做信息混合,较精准地推算出车辆的位置。换言之,就是通过更好的算法去弥补硬件传感器的不足,我们相信这是无人车近期的发展方向。而高精度LiDAR的价格由于市场需求大增也将会在未来的一两年内出现降幅,为无人车的进一步普及铺路。
作者简介:
刘博聪,百度公司美国研发中心架构师,目前主要负责百度无人车系统架构。卡内基梅隆大学电子与计算机工程硕士,研究方向包括嵌入式系统,机器学习算法研究。曾在Qualcomm从事手机芯片和车载芯片的工作。
刘少山,PerceptIn公司联合创始人。加州大学欧文分校计算机博士,研究方向包括智能感知计算、系统软件、体系结构与异构计算(FPGA、GPU)。现在PerceptIn主要专注于增强现实、虚拟现实、机器人的核心SLAM技术及其在智能硬件上的实现与优化。创立PerceptIn之前在百度美国研发中心工作。
James Peng,百度公司首席架构师。清华大学本科,纽约州立大学硕士,斯坦福大学博士,云计算平台,深度学习,数据建模,大规模数据库等。曾在谷歌工作多年,参与和负责完成多个项目。
无人驾驶技术系列后续的文章将讨论ROS系统、高精地图、路径规划、底层控制和视觉识别等技术,敬请期待:
- Lidar
- ROS
- Map
- GPS + IMU
- Camera
- Planning
- Control
- Data platform
- Simulation
- Communications
最后
以上就是安详画板为你收集整理的【无人驾驶系列】光学雷达(LiDAR)在无人驾驶技术中的应用的全部内容,希望文章能够帮你解决【无人驾驶系列】光学雷达(LiDAR)在无人驾驶技术中的应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复