在上一篇《详解激光雷达点云数据的处理过程》一文中,笔者主要详解了自动驾驶车辆上的激光雷达点云处理流程。
在与激光雷达公司和下游主机厂或者解决方案商的专家交流的过程中,笔者发现,当前激光点云的处理过程中,感知算法人员会遇到很多问题。比如,点云噪点的问题、点云的过多或者过少的问题、FOV的设计问题、点云重叠区域的问题、标定参数偏移的问题等。
本文将从技术层面和工程化层面两个维度,分别来阐述点云处理环节中遇到的问题以及相应的对策。
01、技术层面的问题及对策
1.1 点云噪点的问题及对策
点云噪点是指激光雷达采集到的一些无效点,它容易造成目标检测算法模型的误检。激光点云噪点的主要来源有两方面:一方面是目标物表面造成的噪点。比如,目标物表面材质的性质(高反射率的表面材质引起的点云反射能量过强,而使得目标物比实际大小更大)、粗糙程度(凹凸不平的表面使得点云的发射角度发生变化)等;另一方面是外部扫描环境造成的噪点,如雨雪雾尘等颗粒物遮挡了点云而无法反射回点云等。
上一篇《详解激光雷达点云数据的处理过程》的文章中提到,点云噪点的处理主要集中在预处理阶段的滤波处理环节。滤波处理是从算法应用的角度来处理噪点,但是有些噪点并不能简单地通过滤波算法来处理。比如,大雨或者大雪等环境不能直接用滤波算法处理。再比如,对于某些电信号对激光雷达的影响,滤波算法也不能直接处理。
接下来,笔者梳理了几个较为典型的噪点因素,并依次详述它们各自的问题和对策。
(1)物体表面引起的噪点
激光点云扫描到一些特殊的目标物表面时,由于目标物反射回来的点云能量过高(高反射率)而造成了一些噪点。
对于高反射率的目标物表面,激光点云通常会出现高反“鬼影”和高反“膨胀”的现象。其中,高反“鬼影”指的是由于激光雷达对于高反射率目标物反射回来的高强度回波非常敏感,这促使目标物除了在原有真实坐标系下存在一个真实点云图像外,在临近的其它位置也会出现一个大小和形状类似的点云图像。例如,交通指示牌、车牌照、尾灯等。高反“膨胀”指的是激光扫描到高反射率的目标物表面后,点云图像会出现向四周扩散的现象,使得原有的目标物点云图像显得更大。
图:点云图像中的“鬼影”现象(数据来源:速腾聚创)
图:点云图像中路牌的“高反”现象(数据来源:速腾聚创)
那么,无论是高反“鬼影”还是高反“膨胀”都会造成误检,两者都可能会迫使车辆采取本来毫无必要的避障措施。
物体表面引起的点云噪点主要可以通过硬件层面和算法层面来解决。
在硬件层面,技术人员通过加强激光雷达产品的出厂测试环节,从而提升激光雷达对高反射率物体和低反射率物体的分辨能力。
在算法层面,主要靠滤波算法来处理。纵目科技感知算法工程师汤强说:“物体表面引起的噪点通过设置阈值条件来把异常点去掉。”
关于如何设置阈值的条件,某自动驾驶公司的感知算法工程师说:“举例来说,算法模型会先定位到一片点云密集区域内,计算该区域内每个点到其中心点的平均距离,然后将这个平均距离设为初始阈值条件。若目标点云在这个初始阈值范围外,该点云就是噪点。”
(2)恶劣天气引起的噪点
恶劣天气是自动驾驶系统较难应付的环境因素,尤其是雨雪雾尘,这些天气环境会让激光点云产生非常多的噪点。下文将依次分析这四种环境对激光雷达点云产生的影响。
首先是雨天环境。雨滴主要是晶体状,激光打上去会损失一定的能量,因为水滴会让部分激光束产生一定的镜面折射。另外,随着雨量增大后,降雨可能会由于地面温差而形成团状雾,这会让自动驾驶系统误以为前方是一个“障碍物”。
其次是雪天环境。雪是固体状,并且容易形成体积更大的固体物。除了会堆积成团状的障碍物外,大雪天还容易让地面形成大面积的积雪,这将不利于在目标检测环节中做地面点云分割处理。
再者是大雾环境。一般来说,在雾天不严重的情况下,如轻雾(能见度为1km-10km),雾天并不会影响激光雷达点云的处理效果,但是当雾天能见度越来越低后,激光点云的透过率会下降,车辆前方的点云图像会形成类似团状物体的假象,这就会造成误检。
最后是粉尘环境。相比于前面三者,粉尘或许会更难应付。一方面,粉尘会形成团状物体,易导致激光雷达的误识别;另一方面,粉尘不同于雨雪雾,它附着于激光雷达表面后,不会变干后自然消失,需要用清洁装置立即进行清理。
那么,该如何去解决这些问题?
上汽高级经理殷玮说:“如果激光雷达只是用于识别障碍物的话,点云噪点的影响不会特别大;如果这些点云数据用于勾勒free space(即可行驶区域,其指的是自动驾驶车辆可以进行规划控制的区域)的话,就需要考虑使用传统的滤波算法进行处理,但滤波算法处理这些噪点的程度不一定能把控好。”
虽然传统的滤波算法可以用于点云去噪,但是该方法的计算量非常大,其算法最终的效果还依赖于技术人员的技术水平。所以,在自动驾驶行业内,技术人员也会采用神经网络模型来处理点云噪点。
某主机厂感知算法工程师说:“感知算法人员可直接利用深度学习模型去识别车辆前方的障碍物,将雨水等噪点直接忽略掉。”
总的来说,技术人员与其采用传统方法来识别这些噪点,不如忽略这些噪点,直接采用神经网络模型来识别前方的障碍物,如车辆、行人等,毕竟这些障碍物才是需要重点去检测的目标物,而雨雪雾尘(不严重的情况下)并不会影响正常的行车安全。
(3)电磁信号引起的噪点
如今,随着5G网络日益发达,各种手机、笔记本电脑等电子产品到处都是,而激光雷达作为一种精密器械,将会被这些电子产品产生的电磁波干扰,从而产生噪点。另外,当自动驾驶车辆经过一些特定区域时,如机场、发电引起,这些区域也会产生电磁波的干扰。
关于电磁信号引起噪点的原因,图达通系统及应用负责人Leon说:“主要是两方面的原因:其一,电磁信号会影响激光雷达的整个电路,比如电容等等;其二,电磁信号将影响激光雷达的接收端,由于接收器的灵敏度非常高,意味着它更容易受到电磁信号的干扰。”
为了解释电磁信号影响激光雷达内部电路和接收器的原因,某激光雷达公司的专家说:“较强的电磁信号在透射进入激光雷达内部后,对整个电路或者接收端的器件形成电压变化(超过了激光雷达部内的额定电压),影响了激光雷达内部的正常工作。”
结合上述原因来看,电磁信号引起的噪点,本质上是因为激光雷达的硬件端受到了干扰。因此,这种噪点无法通过滤波算法来处理。若要正确解决电磁信号引起的噪点,关键是靠激光雷达自身硬件质量是否过硬。
Leon说:“在前期研发阶段,激光雷达厂商会做一些EMC测试(电磁兼容测试),需要在不同频段上做屏蔽电路的测试。”
1.2 点云过多或者过少的问题及对策
点云过多的话,算法模型处理数据的难度和计算量会增加。比如,在点云分割过程中,由于点云数量过多,目标物之间的边缘可能无法快速进行特征计算和分割,从而导致计算量增加。
某主机厂感知算法工程师说:“目前车端的算力并不是那么高,点云过多的话,最直接的解决措施就是采取降采样——去除多余的点,但并不是随意删除,必须要最大程度地保留有用的信息(利用深度学习模型,提取目标物的主要特征)。举例来说,降采样方法会将90%的点云数据去除,但仍然保留了50%的有效信息。”
不过,目前行业内的关注点更多的还是点云信息不足的问题。那么,为什么点云过少会更受到关注?
目前,在自动驾驶行业内,点云在车端主要被用于感知,所以点云信息需要尽可能的多。
某主机厂的感知算法工程师说:“点云数据被用于目标检测时,感知算法人员不知道被测物体具体是什么,所以他们希望信息量尽可能地多。”
总的来说,点云过少的话,目标障碍物表面扫描到的点云数量过少,这可能会导致漏检。
纵目科技感知算法工程师汤强说:“点云过少的问题,主要有三种解决方案:第一,多帧叠加。举例来说,在处理点云图像时,感知算法人员会将当前帧点云前后各后5帧的pcd数据都投影到当前帧时刻上,这样就形成了共11帧的pcd数据,让点云显得更密。
“第二,深度补全——常见的传统方法主要是利用腐蚀和膨胀的形态学方法。比如,激光雷达扫描到一根铁丝上时,可能就只显示少量的点云,为了提升点云真值数据的准确性,就需要使用该方法将这根铁丝变得更粗。行业内也有很多通过深度学习来做深度补全的方案。
“第三,增加线束。一方面,使用性能更好的激光雷达产品,如32线的产品改用128线的产品;另一方面,技术人员通过堆激光雷达数量的方式,来增加感知区域的点云数量。”
1.3 不同技术路线引起的问题及对策
当前,由于车辆外观造型和成本等因素,量产车主要是以半固态的激光雷达为主。该章节部分将重点介绍半固态激光雷达引起的点云问题和相关对策。
按照扫描方式的不同,ToF激光雷达可分为机械式、半固态、纯固态三类。在实际的应用过程中,不同扫描技术路线的激光雷达会出现不同的点云问题。
一般来说,半固态激光雷达由于其扫描方式导致了点云中间密、两边稀疏的特点。除此以外,半固态激光雷达在面对低反射率物体时,存在识别能力较弱的问题。
某L4自动驾驶解决方案商技术专家说:“以对铁丝网的检测为例,半固态的激光雷达无论是转镜式、棱镜式,还是MEMS,它们一般都有5-6个激光发射器,通过扫瞄镜去分光,这种扫描方式造成了分光后激光点云的能量减少,致使扫描到的铁丝网会出现大面积的漏空或者识别不出的情况。”
解决上述问题的主要对策就是增加感兴趣区域的点云密度。比如,某些半固态激光雷达产品采取了角分辨率可调的方法,将原本激光雷达看得远的优势转化为角分辨率上的优势。根据不同的场景使用需求,自动驾驶的感知系统可直接根据场景需求来设置激光雷达在感兴趣区域的点云密度。
02、工程化层面的问题及对策
2.1 安装方式造成的问题及对策
在硬件性能固定的前提下,点云处理效果可能会与激光雷达安装的位置和对应的角度有关。不正确的安装可能会使得点云无法覆盖重点感知区域。
某激光雷达厂商的技术专家举例列出了三种可能会影响点云效果的不正确的激光雷达安装方式:“第一种是非正向的安装。比如,有些应用方可能会把激光雷达倒过来安装,这会影响激光雷达原有的内部结构。假设激光雷达里面有一根弹簧,在原本正向安装和使用时,弹簧是被压缩的,但倒过来安装和使用时,弹簧就会被拉升,这会影响激光雷达内部器件。
“第二种是激光雷达在垂直角度上安装得过偏。一般情况下,激光雷达在垂直角度上都是平向安装,而在水平角度上可根据具体需求来定,但有些时候车端的激光雷达在垂直角度上安装的过偏。比如,激光雷达在垂直角度上安装得过于朝上或者朝下,点云无法完全覆盖重点感知区域。
“第三种是安装得过低。激光雷达被安装在较低的位置,激光束与地面的夹角会减小,导致了点云反射回来的能量就比较弱,不利于实际的探测。所以,激光雷达一般会被安装在较高的位置。”
当然了,激光雷达具体怎么安装仍取决于具体需要实现什么功能。
某主机厂的感知算法工程师说:“抛开功能去做传感器的配置,这并不是正儿八经地做产品。如果激光雷达用于Robotaxi,激光雷达需要安装在车顶,这样可以实现360°的水平FOV。如果激光雷达用于检测盲区,激光雷达需要装在车的前后左右侧,这样可以实现行驶时的换道。如果激光雷达用于实现pilot功能(高速领航辅助功能),激光雷达一般就是装在车顶正前方。如果激光雷达用于交叉口的场景,激光雷达就需要在左右两侧的前端各装一个。”
2.2 FOV设计引起的问题及对策
哪怕安装方式没问题,如果FOV设计有短板,那激光雷达仍然会存在感知盲区。那么,激光雷达的水平或垂直FOV具体设计多少才合适?在水平方向上,多台激光雷达的FOV如何做拼接,才能将点云更有效地覆盖盲区?
表:部分激光雷达产品的FOV情况
数据来源:各激光雷达厂商官网
首先,在水平FOV方面,大部分的应用方肯定都希望激光雷达的水平FOV能够无死角的覆盖,但考虑到成本因素,具体水平FOV设计多少度需要根据激光雷达所实现的功能而定。
某主机厂感知算法工程师说:“对于城区或者高速场景,一个水平FOV为120度的激光雷达已经够用了。对于泊车场景,激光雷达的水平FOV就需要达到360度。”
在城区或者高速场景,当前的量产车主要可实现的功能是辅助驾驶,激光雷达主要功能在于对前方目标物的识别检测,所以单个水平FOV为120°的激光雷达即可实现。某些车企为了增加激光雷达前方的点云覆盖面积,也会采用了两颗主激光雷达方案,从而达到180°左右的FOV。还有些车企采用了1颗前向主雷达+2颗侧向补盲激光雷达的方案(布置在车辆左右两侧),使得整个水平FOV达到320°以上。
在泊车场景,为了实现高级别自动驾驶的AVP功能,激光雷达部署需要采用水平FOV为360度的方案(1颗前向主激光雷达+2颗侧向补盲激光雷达+1颗后向补盲激光雷达),可以让点云全场景的覆盖。
图:不同激光雷达配置下的水平FOV
(来源:速腾聚创)
其次,在垂直FOV方面,主激光雷达为了获得更多的前方信息,需要尽可能地减少垂直方向的FOV,从而增加车前方的点云数量,返回能量也能更多,所以垂直方向FOV一般仅为25°;而补盲激光雷达为了看清车身周围的环境,需要其垂直FOV水平能更大,可达到近90°。
某主机厂感知算法工程师说:“面对小孩和宠物等体积小并且会“乱跑”的目标物,,就需要补盲激光雷达的垂直FOV更大一些,这样可以更大程度地扫描到近距离的目标物,让激光雷达扫在目标物上面的点云能够更加完整。”
图:补盲激光雷达的垂直FOV(数据来源:速腾聚创)
2.3 多个激光雷达重叠区域的问题及对策
在设计多激光雷达部署方案时,多个激光雷达之间的水平FOV往往需要有重叠区域,而不是完美地无缝拼接在一起。设计点云重叠区域的理由主要是:
第一,激光雷达产品标注的官方FOV水平是一个较为理想的状态,而在产品实际应用时,其FOV水平并不一定能达到该理想水平。
图达通算法负责人许建博士说:“虽然激光雷达产品标称了水平视场角,但实际上水平视场角边缘的点云质量容易退化,点云拼接时最好能够有一定的重叠区域。”
第二,多个激光雷达的重叠区域主要覆盖在车辆盲区位置。比如1个主雷达+2个补盲雷达的方案,相互之间的重叠区域主要是分布在车前侧两端的位置,这个区域增加点云的数据信息可以提高模型对车辆盲区的感知能力。再比如,车前方两个主雷达的方案可以提高车前端感知区域的信息冗余安全。
某主机厂感知算法工程师说:“如果两个激光雷达只是简单地拼接在一起,当一个目标物处于它们各自的边缘区域时,感知系统可能会很难检测到该盲区位置的目标物。如果两个激光雷达有一定的重叠区域时,系统至少有很大一部分点云能覆盖到该目标物。”
所以,多个激光雷达的感知区域重叠是非常有必要的,重叠区域可以让点云更密、信息冗余安全更高。那么,在水平FOV方向上,点云重叠区域到底需要交叉多少才合适呢?
Leon说:“以应用方的反馈来看,他们会要求多个激光雷达之间有一定的重叠部分,可以保证自动驾驶系统在识别检测时不漏掉任何目标物。同时,他们也不希望重叠区域太多,这会造成资源的浪费。”
也就是说,点云重叠区域较小的话,由于某些半固态激光雷达扫描区域的边缘部分点云较稀疏,这使得点云配准难度会加大。点云重叠区域较大的话,会造成传感器硬件性能的浪费,使得最后多个激光雷达拼接成的整体水平FOV过小。
在与各专家的交流后,笔者整理出了多个激光雷达方案下点云重叠区域的大小范围:
两个前向主激光雷达方案:重叠部分分布在车头盖前面,重叠区域的度数约20-30度;
一个主雷达+两个侧向补盲雷达方案:重叠部分分布在车头前向两侧,重叠区域的度数大概不小于5度。
当然,上述重叠区域的大小是一个理想范围,而真正在车端应用时仍需要做严格的测试。
许建说:“多个激光雷达在部署时,关于重叠区域的度数,技术人员需要做一套严格的工程应用测试,而不会直接定一个确定的数值。首先,技术人员会按照给定的产品设计指标参数进行3D模拟测试。然后,他们会在模拟测试的基础上,再进行实地测试。最后才会给出相应的重叠区域设置。”
在确定完重叠区域的度数后,接下来需要解决的是如何去使用重叠区域的目标物点云数据。
重叠区域的点云数据并不意味地拿来即用,其存在着一定的困难。许建说:“一方面,重叠区域的点云可能来自两种不同技术路线的激光雷达,这两种激光雷达不仅功率、视场角、角分辨率等参数指标都不同,而且,实际用法也不同。”
通常情况下,由于各家应用方的技术方案不同,所以针对点云重叠区域的处理方案也是不同的。笔者整理了三种可能的应对方案。
第一种方案是直接采用主激光雷达来检测识别。
Leon说:“对于重叠区域,感知算法人员可以是通过多个激光雷达相互的信号补充,来增加识别的可信度,也可以只看主雷达的点云数据,毕竟相比侧端的补盲激光雷达,主激光雷达在探测的精细度、距离等各个方面的性能更高。”
第二种方案是先采用主激光雷达的点云数据,再采用补盲激光雷达的点云数据。
某主机厂感知算法工程师说:“在很多时候,两个不同性能指标的激光雷达点云重叠在一起,不可能将两块点云合成一个点云来使用,很多时候是主激光雷达去测一下,然后补盲激光雷达再去测一下。”
第三种方案是多激光雷达的点云融合。
禾赛某技术专家说:“为了降低算力消耗与提升算法效果,多激光雷达融合在主流方案里基本都是点云前融合然后进行后续处理。前融合的过程会将所有的点云都转换到车身坐标系进行同一处理,最大程度地解决不同安装位置带来的点云数据差异。”
2.4 标定参数偏移的问题及对策
为了更好地融合激光雷达和相机的数据,自动驾驶车辆需要在出厂时就做好两种传感器的标定。感知算法人员通过求取其外参后,将两种传感器的三维信息转换到统一坐标系下,进行融合定位建图或者感知检测。
已标定好的传感器参数并不是一成不变的。事实上,在车辆的行驶过程中,由于车辆不断地机械振动,使得激光雷达与相机之间的标定参数会发生偏移,这会影响点云的识别检测以及激光雷达与相机的融合处理。
某主机厂感知算法工程师说:“激光雷达和相机之间的标定较难,虽然出厂时,车端传感器的联合标定是已经做好的,但随着时间的推移,它们之间的标定关系会慢慢发生改变,这个时候也不可能是让车辆回厂后进行重新标定。
“对于量产车来说,车已经卖出去了,不可能开回车厂再重新标定。自动驾驶车辆只能做在线标定,系统会根据已收集的数据,在车开至某个特定的场景后(比如线和面的特征较多的场景),让自动驾驶系统重新标定。如果在高速公路上的话,自动驾驶车辆很难找到一个特定场景去重新标定,只能将车辆开至城区的特定位置后再标定。
“对于细分场景的低速车来说,由于大部分低速场景都是半封闭的场景,通常技术人员会在场景内选择一个容易标定的位置,把车开过去,再重新进行标定。最后,如果实在没法解决问题,自动驾驶企业才会派人去现场。”
参考文献
【1】自动驾驶发展面临的恶劣天气问题 https://mp.weixin.qq.com/s/oFjHLRX2c1y2eP00TRsBjg
【2】激光雷达,揭开面具下隐藏的“丑陋” https://mp.weixin.qq.com/s/XbUlUTr0jIDLcrquOleG6A
【3】补盲固态 E1 登场,补全车载激光雷达新时代的最后拼图 https://mp.weixin.qq.com/s/-bCgsSQBH89_tnmJmQGl1w