正文
激光雷达的原理
如下图所示,激光雷达的发射器发射出一束激光,激光光束遇到物体后,经过漫反射,返回至激光接收器,雷达模块根据发送和接收信号的时间间隔乘以光速,再除以2,即可计算出发射器与物体的距离。
图片出处:http://slideplayer.com/slide/7103535/
自动驾驶用的LiDAR通过测量激光束在空中的飞行时间(从发射窗口发射,照射到目标,再反射回接收窗口所需要的时间),乘以光速,得到测距仪到目标的距离。因此,激光探测属于既需要发射又需要接受的主动探测。这种模式下,探测距离和能接收到的返回激光的能量有关。雷达方程可以完美表述这一过程(看看就好):
有一点比较蛋疼。我们都知道,激光的波束很窄;目标还都不是反射镜;所以在车载环境下,我们要靠目标的一点点漫反射来获取距离信息。
那激光具体是怎么反射回来的呢?
首先,光源发出的光束,经过发射透镜组准直后从发射窗射出。发射透镜组反射、吸收、畸变损耗了一部分能量。
其次,反射光束在空气中和空气分子、尘埃等发生作用,绝大部分被散射,一部分被吸收。所以为什么激光雷达怕雾霾、雨雪,因为还没达到目标,能量已经被散射的差不多了。
再次,光束照射到目标表面后,一部分被目标吸收,剩余的以漫反射(不是镜面反射)的方式反射到四面八方,只有很小的一部分可以原路返回回去。
最终,反射光能有幸最终抵达接收窗口,汇聚后又只有一部分能落到接收传感器的敏感区域。(问题,它怎么知道哪些是它发射的光呢?它有可能接收到一系列的漫反射的光信息,怎么过滤出它自己发射出去的光呢?是不是频率?在探测器前面还有一个过滤器,只允许波长相近的电磁波通过,同时阻挡其他电磁波。对于相同波长的多个雷达,可能存在接错数据源的问题,还存在同一个物体的反射波经过多个路径后被接收的情况,这些都会对测距的结果产生影响,具体的应对措施可以看https://zhuanlan.zhihu.com/p/326421564)
看一个例子,对于发射功率50W,使用直径20mm的透镜接受的测距仪:
- 当目标5m远,目标反射率为80%(白色漫反射目标)时, 0.15mw的功率能最终返回。
- 目标200m远,目标反射率为20%(深灰色漫反射目标),只有 0.024微瓦的功率能最终返回(聊胜于无)。
目标距离远了40倍,接收到的功率足足弱了6250倍,你说心塞不心塞。
包含散射和回波特征的实际数据(弱弱的回波)
激光雷达的分类
激光雷达根据安装位置的不同,分类两大类。一类安装在无人车的四周,另一类安装在无人车的车顶。
安装在无人车四周的激光雷达,其激光线束一般小于8,常见的有单线激光雷达和四线激光雷达。
安装在无人车车顶的激光雷达,其激光线束一般不小于16,常见的有16/32/64线激光雷达。
单线激光雷达
图片出处:http://robotsforroboticists.com/sick-lms511-lidar-review/
单线激光雷达是目前成本最低的激光雷达。成本低,意味着量产的可能性大。
前两天朋友圈刷屏的“北京首个自动驾驶测试场启用”新闻中出现的福田自动驾驶汽车就使用了4个单线激光雷达,分别布置于无人车的前后左右,用于车身周围障碍物的检测,如下图。
单线激光雷达的原理可以通过下图理解。
图片出处:http://www.mdpi.com/1424-8220/16/6/933/htm
单束激光发射器在激光雷达内部进行匀速的旋转,每旋转一个小角度即发射一次激光,轮巡一定的角度后,就生成了一帧完整的数据。因此,单线激光雷达的数据可以看做是同一高度的一排点阵。
单线激光雷达的数据缺少一个维度,只能描述线状信息,无法描述面。如上图,可以知道激光雷达的面前有一块纸板,并且知道这块纸板相对激光雷达的距离,但是这块纸板的高度信息无从得知。
四线激光雷达
如上图所示,四线激光雷达基本都像这样。
全新的奥迪A8为了实现Level 3级别的自动驾驶,也在汽车的进气格栅下布置的四线激光雷达ScaLa。
有了之前单线激光雷达的原理介绍,四线激光雷达的工作原理就很容易理解了。
如下图所示,不同的颜色代表不同的激光发射器。
图片出处:https://www.youtube.com/watch?v=lj5B2g4MyMM
四线激光雷达将四个激光发射器进行轮询,一个轮询周期后,得到一帧的激光点云数据。四条点云数据可以组成面状信息,这样就能够获取障碍物的高度信息。
根据单帧的点云坐标可得到障碍物的距离信息。
根据多帧的点云的坐标,对距离信息做微分处理,可得到障碍物的速度信息。
实际应用时,在购买激光雷达的产品后,其供应商也会提供配套的软件开发套件(SDK,Software Development Kit),这些软件开发套件能很方便地让使用者得到精准的点云数据,而且为了方便自动驾驶的开发,甚至会直接输出已经处理好的障碍物结果。
如下图绿的的矩形框即为障碍物相对于自车的位置,矩形框的前端有个小三角,表示障碍物的运动方向。
16/32/64线激光雷达
图片出处:http://velodynelidar.com/news.php
16/32/64线的激光雷达的感知范围为360°,为了最大化地发挥他们的优势,常被安装在无人车的顶部。
三款激光雷达的技术参数和成本如下图。(更多Velodyne激光雷达的技术资料/使用手册等,可在公众微信号 自动驾驶干货铺 里回复 Velodyne 获取)
图片出处:http://auto.qq.com/a/20170609/058173.htm
360°的激光数据可视化后,就是大家经常在各种宣传图上看到的效果,如下图。
图中的每一个圆圈都是一个激光束产生的数据,激光雷达的线束越多,对物体的检测效果越好。比如64线的激光雷达产生的数据,将会更容易检测到路边的马路牙子。
16/32/64线的激光雷达只能提供原始的点云信号,没有对应的SDK直接输出障碍物结果。因此各大自动驾驶公司都在点云数据基础上,自行研究算法完成无人车的感知工作。
激光雷达的数据
激光雷达的点云数据结构比较简单。以N线激光雷达为例来讲解点云的数据结构。
在实际的无人驾驶系统中,每一帧的数据都会有时间戳,根据时间戳进行后续和时间有关的计算(如距离信息的微分等)。因此N线激光雷达的点云数据结构如下图。
每一线点云的数据结构又是由点云的数量和每一个点云的数据结构组成。由于激光雷达的数据采集频率和单线的点云数量都是可以设置的,因此1线点云数据中需要包含点云数量这个信息。
最底层的是单个点云的数据结构。点的表达既可以使用theta/r的极坐标表示,也可以使用x/y/z的3维坐标表示。
每个点云除了坐标外,还有一个很重要的元素,那就是激光的反射强度。激光在不同材料上的反射强度是不一样的。以3维坐标的表示方法为例,单个点云的数据结构如下图。X/Y/Z方向的偏移量是以激光雷达的安装位置作为原点。
激光雷达能做什么?
激光雷达点云数据的一般处理方式是:数据预处理(坐标转换,去噪声等),聚类(根据点云距离或反射强度),提取聚类后的特征,根据特征进行分类等后处理工作。
以百度Apollo 2.0目前已开放的功能为例,看看激光雷达能完成哪些工作。
障碍物检测与分割
图片出处:http://data.apollo.auto/?locale=zh-cn&lang=en
利用高精度地图限定感兴趣区域(ROI,Region of Interest)后,基于全卷积深度神经网络学习点云特征并预测障碍物的相关属性,得到前景障碍物检测与分割。
可通行空间检测
利用高精度地图限定ROI后,可以对ROI内部(比如可行驶道路和交叉口)的点云的高度及连续性信息进行判断点云处是否可通行。
高精度电子地图制图与定位
利用多线激光雷达的点云信息与地图采集车载组合惯导的信息,进行高精地图制作。自动驾驶汽车利用激光点云信息与高精度地图匹配,以此实现高精度定位。
障碍物轨迹预测
根据激光雷达的感知数据与障碍物所在车道的拓扑关系(道路连接关系)进行障碍物的轨迹预测,以此作为无人车规划(避障、换道、超车等)的判断依据。
小结
当前人工智能的算法还不够成熟,纯视觉传感器的无人驾驶方案在安全性上还存在较多问题,因此现阶段的无人车的开发还离不开激光雷达。强如Google,目前不也还没开发出脱离激光雷达的自动驾驶方案么。
不过成本是激光雷达普及所遇到的最大问题。毕竟一款比车还贵的传感器是车企无法接受的。激光雷达的降本路任重道远啊。
好了\(^o^)/~,这篇分享基本上让大家了解了无人车所使用到的激光感知技术。
原文及参考:
https://zhuanlan.zhihu.com/p/326421564
https://zhuanlan.zhihu.com/p/33792450