多角度解析为什么自动驾驶需要多传感器深度融合

 

来源 | 小马智行PonyAI    

多样的传感器配置,遇到不同的场景,对多传感器深度融合也带来一些新的挑战。

1.为什么需要多传感器深度融合?

首先,在自动驾驶中如果使用单一传感器,例如照相机、激光雷达、毫米波雷达,往往存在不小的局限和挑战。 我们先了解下常用的传感器的挑战是什么:

照相机的挑战

照相机数据遇到的挑战包括下面三点:

 

 

  •  没有深度信息(距离信息)。
  •  视场角有限,所以传感器配置需要比较多的摄像头,上图展示了6个摄像头覆盖了270°的视场角。
  •  摄像头受外界条件的影响也比较大,这是当车行驶到桥下时(上图右下方),由于背光,且光线变化比较大,导致无法识别正前方的交通灯。

激光雷达的挑战

激光雷达数据面临一个比较大的挑战是感知范围比较近,感知范围平均在150m左右,而且感知距离也会受到环境和障碍物的影响。激光雷达在角分辨度上远远不如照相机,如下图,有三条小狗在过马路,在照相机上可以清楚的看到,但是在激光雷达上,采集到的点是比较少的,这样的场景经常出现在复杂道路日常测试中。

激光雷达对环境的敏感度也是比较大的,往往会导致出现虚拟噪点的Case(情况)。下方右图里其他车辆行驶时溅起来的水花、左图里车前的扬起的尘土,反映在激光雷达数据上都可能会产生噪点。如何去除这样的噪点,也就是感知系统面对的挑战。

毫米波雷达的挑战

毫米波雷达,受自身性能所限,它的局限是无法反馈高度信息。毫米波雷达能告诉你所探测物体在哪个位置,但却不知道物体多高。举个例子,道路前面有一个比较高的指路牌,毫米波雷达能够探测到此处存在障碍物,但是不知道路牌是悬在道路上方的。

所以,为什么需要多传感器深度融合?

原因很简单。既然单一传感器在自动驾驶中存在挑战,通过多传感器深度融合,传感器之间便能够取长补短,帮助整个感知系统效果的提升。

下面展示的是 多传感器深度融合是如何提升感知的探测距离。当障碍物距离自动驾驶车150m左右时,激光雷达的反射点已经比较少了(如下图),但是这时毫米波雷达和照相机数检测还是非常稳定的。

 

当障碍物驶出200m范围时,基本上没有任何的激光雷达反射点了。然而自动驾驶的感知距离与自动驾驶车辆自身车速紧密相关,当车速较快时,超过200m的感知距离是非常必要的。此时只能通过毫米波雷达和摄像头,来确保感知系统对障碍物的感知距离,从下图可以看到系统稳定识别出来前方车辆(下图)。

 

2.多传感器深度融合的先决条件

 

先决条件一:运动补偿

首先,多传感器深度融合为什么需要做运动补偿?

    因为,在自动驾驶感知过程中,传感器采集数据一般都不是瞬时发生的。以激光雷达为例,采集一圈数据需要0.1s,在这0.1s内,自动驾驶车会发生一定的位移,障碍物也会发生一定的位移,如果我们不考虑这些位移,感知系统检测出来的位置则不准确。

自我运动的运动补偿

位移有两种,第一种就是车自身的位移(Ego motion)。

上图右边画了一个示意图,虚线部分可以认为是世界座标系,红色点代表一个静态的障碍物,在座标系中有一个稳定的座标(5,5)。蓝色部分代表自动驾驶车自己的局部座标系,也就是说世界座标系的(4,0)为局部座标系的原点。在T+1时刻,这个局部座标系移动到了(6,0)的位置,也就是自动驾驶车沿着X方向向前移动了2。也就是说,在T时刻,障碍物的在局部座标系下的座标是(1,5),而在T+1是时刻,它的座标变为了(-1,5)。

如果我们不对车自身运动的进行补偿,静止的障碍物在2帧之间,测量的局部座标是不一样的,这就会产生错误的速度。因此,我们需要基于车自身运动进行运动补偿。

这个问题解决起来比较简单,因为自动驾驶车拥有比较准确的实时定位信息,它可提供T和T+1两个时刻内,车本身的姿态差距,利用姿态差,我们就可以比较容易补偿自身移动了多少,也就能得出结论——静态障碍物其实是没有移动的。

被检测物体的运动补偿

第二种要考虑的是被检测的运动物体在传感器采集的时间段内发生的位移,相对于自身运动补偿,这是一个更难的case(情况)。因为,快速移动的物体很可能会被激光雷达扫到两次

上图的红圈内,被检测车辆的尾部出现了拖影。如何消除周围车辆的Motion(运动),对其进行运动补偿呢?

其实解决的方式有很多,目前激光雷达从自身硬件上已经有些相关配置来缓解此类现象。简单解释下,一辆自动驾驶车上采用多个激光雷达时,当激光雷达的激光按照同样的方式旋转来探测周围,那么在某一个特定的时段和方向,这些激光雷达应该扫到相同的物体,一定程度上这能够来减少快速移动的物体产生拖影的问题。

先决条件二:时间同步

目前,自动驾驶车辆传感器大部分支持 GPS时间戳的时间同步方法。这个方法比较简单,如果传感器硬件支持这个时间同步法,其给出的传感器数据包便会包含全局的时间戳,这些时间戳以GPS为基准,非常方便。

但是,时间戳查询数据存在一个比较明显的问题。举个例子,上图了包含来自三个传感器的三种数据。由于不同传感器是以不同频率来采集数据,以传感器2为例,在 T1 时刻,传感器2产生了一个数据,如果要进行时间同步,我们需要查找对应时刻的传感器1和传感器3的数据,而实际查找的方式就是找出与传感器2时间差最近的其他传感器数据包。这种方法会受所查数据包的时间戳和传感器2数据包的时间戳之间差距的影响,如果差距比较大,障碍物又都是在移动的,会导致时间同步的误差会比较大。

于是就有了第二种时间同步的方法,以缓解刚刚说的误差现象——也就是 主动数据同步方法。该方法可以以激光雷达作为触发其它传感器的源头,当激光雷达转到某个角度时,才触发该角度的摄像头,这可以大大减少时间差的问题。如果把这套时间同步方案做到硬件中,便可产生较低的误差,对齐效果也会更好。如上图所示,运用这种方法,激光雷达的数据和摄像头的数据很好的结合在一起。

除此之外,还可以借助激光雷达自身的功能减少多个传感器对同一物体检测的时间差问题。比如大部分的激光雷达可以支持一种叫做Phase Lock的功能,它能够保证在某一时刻,所有的激光雷达根据Phase Lock的配置,扫在固定的角度附近。

如果两个前向的激光雷达都设置同一个角度,在同一时刻,检测到的物体应该是类似的,这样对于一辆快速行驶的车,它被传感器扫到两次的概率就会减少。当然,这个办法也不能完全解决问题,比如有个人或物体以跟激光雷达同样的频率,绕着激光雷达旋转,那么在激光雷达扫描的点云中,人一直会出现,所以还要通过软件的方法,设置的一些规则或者模型来想办法剔除误差。

先决条件三:传感器标定

除了运动补偿与时间同步,传感器标定(Sensor Calibration)也是多传感器深度融合的重要部分。我这里主要是指传感器外参的标定。

传感器外参标定的核心是刚体旋转。刚体旋转即物体上的两个点,经过旋转和平移之后,两个点之间的3D位置是不会变的,所以叫刚体旋转。在自动驾驶和机器人上,刚体旋转还是比较常见的。

传感器外参的标定就是要找到这样的一个刚体旋转,可以把一个传感器的数据和另一个传感器对齐。相当于把一个传感器测量的数据从其本身的座标系,通过刚体旋转,转到另一个传感器座标系,这样就可以进行后续的数据融合。

上图中,左边为照相机图像,中间为激光雷达点云。借助一个比较好的外参工具,感知系统可以将激光雷达点云3D的点投射到2D图像上,同一物体的图像和激光点云都可以对应上,也就相当于把 2D维度上的像素加上了深度信息。那么,在图像质量并不是很高的情况下,通过这样的方式能把更多感知信息补回来。

传感器的标定一般涉及有两种思路,第一种是有激光雷达的传感器标定第二种是无激光雷达的传感器标定。这么区分是因为激光雷达采集的数据是完整的 3D 信息,空间中的 ( x,y,z ) 都是准确的,并不会有信息的丢失。照相机得到的数据,可以认为是极座标系下的座标,没有深度,而毫米波雷达数据是没有高度的。

所以,如果感知系统中某个传感器能够提供完全的 (x,y,z ) 座标,以此为参照物,其他传感器和它做绑定的话,标定结果会更容易和更准确。接下来我主要讲包含有激光雷达的传感器标定方法。

 

多激光雷达的标定

首先讲下多激光雷达是如何标定的。

上图可以看到展示了两个前向激光雷达点云数据,这两个激光雷达在前向180°是有比较大的覆盖区域。如果没有处理好两个激光雷达之间的旋转和平移,把二者的点云数据放在一起进行感知处理时,你会发现红框位置会存在比较大的分隔(黄线和蓝线分别代表两个前向激光雷达)。这种情况肯定是不希望遇到的,所以自动驾驶感知系统需要对多个激光雷达做到准确的标定。

标定的方法是已知的,这已经是比较好解决的问题。因为激光雷达本身拥有完全的3D信息,解决这样俩个数据集匹配的问题,就是采用ICP(Iterative Closest Point)迭代式最近点方法,这个方法有很多的变种,感兴趣的同学可以搜索下(下图)。

 

照相机和激光雷达的标定

第二就是照相机和激光雷达之间的标定。照相机本身是没有距离信息的,那么如何进行标定?

首先,激光雷达是有 3D 信息的,通过标定的方式,我们可以将激光雷达数据投到图像的座标系中,建立图像的像素点和激光雷达投影后的点云之间的匹配,最后通过优化方程来解决这个匹配问题

举一个简单的例子,比如现在需要选取一系列激光雷达检测出来的候选点,那么 这些点一定是在图像上比较容易能够识别出来的边界点

选取方法也比较简单,因为激光雷达数据有距离信息,只需要找相邻两个激光点之间的距离差,就可以判断这样一个点是不是边界点,最终可以轻易的选出这些帮助标定的候选点。通过这样的投影方式,上图中的红框便是我们要求的标定参数,K矩阵为照相机本身的内参,通过这个数学关系,前面从3D中检测的激光雷达候选点就能够投到2D图片上,上图中的X就是投射后的位置。

根据3D投影点和2D检测的边界,进行匹配,然后根据他们之间的距离匹配程度,建立这样一个优化方程,于是解这样一个优化问题,以得到标定的参数。

如果大家感兴趣,还可以参考一篇论文 《Automatic Online Calibration of Cameras and Lasers》,其详细讲述了照相机和激光雷达的标定的数值原理,上图种绿色的点是3D点云投射到图像上,展示的正是边界点候选的区域。如果标定结果比较好,边界点会很好地与图像进行匹配。

 

先决条件四:传感器视场角

这是传感器不同视场角示意图,它也会与多传感器深度融合相关。

假设在1、2两个位置上分别有一个激光雷达,它们有各自不同的视场角

前方障碍物 A 在传感器2的视场角内正好将障碍物B完全遮挡,也就是说障碍物B只出现在了两个中的一个传感器的视场角内部。它带来的问题是:感知系统到底该不该相信这里存在一个障碍物B?这类比较常见的视场角问题,可以经过不断的路测来积累并完善。

 

3.如何做多传感器深度融合?

照相机和激光雷达融合

照相机和激光雷达融合的第一个方法,我在前面标定部分提到了一些要点。激光雷达数据是包含了明确的(x,y,z)数据的3D观测, 通过标定参数与照相机本身的内参,多传感器深度融合可以实现把3D点投到图像上,图像上的某些像素也就打上了深度信息,帮助感知系统进行基于图像的分割或者训练Deep Learning Model(深度学习模型)。

需要注意的是,多传感器的视场角可能会不一样,有造成噪点或者漏点的可能,这里比较推荐的方法是把照相机和雷达安装在一起,越近越好

第二个比较直观的方法是 将2D检测出来的障碍物直接投影到3D数据上生成上图中类似的3D障碍物。这种方法在做很多的假设条件下(比如障碍物的大小,地面是否平整),也是可以实现的。上图中相机的内参、车的位置高度都是已知的,这时照相机在2D上识别出的每一帧的障碍物,都可以还原成3D在照相机座标系下的一条射线,通过找这条射线在3D座标系下和平面的交点,就能够估计出2D障碍物在3D上的距离。

 

毫米波雷达和激光雷达融合

毫米波雷达和激光雷达的融合方式比较简单。在笛卡尔座标系下,它们拥有完整的( x,y )方向的信息。因此在普适的笛卡尔座标系下,激光雷达和毫米波雷达可以 实现基于距离的融合。另外,毫米波雷达还可以探测到障碍物速度,而激光雷达通过位置的追踪,也会得到对障碍物速度的估计,对这些速度的信息进行融合,更能帮助筛选错误的匹配候选集。

 

下图展示的激光雷达和毫米波雷达融合的效果,红圈里的障碍物是由毫米波雷达补充的。

 

 

当然,不同传感器之间融合也存在不少特例,感知的工程师们会通过各类方法使得感知系统正确应对并解决问题。

总结来说,每个传感器自身都存在一些局限,而多传感器深度融合就是希望把这些传感器结合起来做取长补短,提升整个感知系统的精度和召回度。

 

其他参考:

无人驾驶-激光雷达与相机联合校准(Lidar Camera Calibration)

https://blog.csdn.net/mxdsdo09/article/details/88370662

https://blog.csdn.net/miracle629/article/details/88288669

 

 

感知系统的输入为多种传感器数据和高精地图,而上图展示了感知系统物体检测的输出结果,即能够检测车辆周围的障碍物,如车辆、行人、自行车等,同时结合高精度地图,感知系统也会对周边的Background(环境背景)信息进行输出。

 

如上图所示,绿颜色的块状代表一辆乘用车,橙色代表一辆摩托车,黄色代表一位行人,灰色则是检测到的环境信息,如植被。

 

 

感知系统结合多帧的信息(上图),还能对运动的行人和车辆的速度、方向、轨迹预测等进行精确的输出。

 

传感器配置与多传感器深度融合

 

了解了关于感知系统从输入到输出的大致介绍,接下来,我简要介绍一下小马智行第三代自动驾驶系统PonyAlpha的传感器安装方案以及多传感器深度融合的解决方案。

 

传感器安装方案

 

目前PonyAlpha传感器安装方案的感知距离能够覆盖车周360度、范围200米以内。

 

 

具体来看,这套方案用到了3个激光雷达,在车的顶部和两侧。同时,通过多个广角的摄像头来覆盖360度的视野。远处的视野方面,前向的毫米波雷达以及长焦相机将感知距离扩到200米的范围,使其可以探测到更远处的物体信息。这套传感器配置能保证我们的自动驾驶车辆在居民区、商业区、工业区这样的场景进行自动驾驶。

 

多传感器深度融合解决方案

 

多传感器深度融合的基础

多传感器深度融合的方案首要解决的是将不同的传感器的数据标定到同一个座标系里,包括了相机的内参标定,激光雷达到相机的外参标定,毫米波雷达到GPS的外参标定等等。

 

传感器融合重要前提是使标定精度达到到极高水平,不论对于结果层面的传感器融合还是元数据层面的传感器融合,这都是必要的基础。

 

 

通过上图你会发现,我们的感知系统将3D的激光点云精准地投射到影像上,可见传感器标定的精度是足够高的。

 

不同传感器的标定方案

整个传感器标定的工作基本上已做到完全自动化的方式。

 

 

首先是相机内参的标定(上图),这是为了修正由相机自身特性导致的图像扭曲等。相机内参的标定平台使每一个相机能够在两到三分钟之内完成传感器的标定。

 

 

其次是激光雷达与GPS/IMU的外参标定(上图),激光雷达的原始数据是基于雷达座标系,因此我们需要将点由雷达座标系转换为世界座标系,这就涉及到激光雷达与GPS/IMU相对位置关系的计算。我们的标定工具在室外通过优化的方案,能够快速找到最优的位置关系。

 

 

第三是相机到激光雷达的融合(上图)。激光雷达的感知环境是360度旋转的方式,每旋转一周是100毫秒,而相机是某一瞬时曝光,为了保证相机的曝光与激光雷达的旋转保证同步,需要对二者进行时间同步,即通过Lidar来触发相机曝光。比如说,可以通过激光雷达的位置信息来触发对应位置相机的曝光时间,以达到相机与激光雷达的精确同步。

 

3D(激光雷达)和2D(相机)彼此互补,二者更好的融合可使得感知得到更精确的输出。

 

 

最后是毫米波雷达(Radar)与GPS/IMU的标定(上图),同样是将Radar数据由Local(本地)座标系将其转换到世界座标系,我们将通过真实的3D环境来计算Radar与GPS/IMU的相对位置关系。好的标定结果能够保证感知系统给出200米距离以内障碍车的车道信息(如位于车道内或压车道线等)等。

车载感知系统架构

 

那么车载感知系统架构是什么样的?它的解决方案又是什么?

 

 

上图展示了整个车载感知系统的架构。首先激光雷达、相机、毫米波雷达三种传感器数据须进行时间同步,将所有的时间误差控制在毫秒级。结合传感器数据,感知系统以帧为基础(frame-based)进行检测(detection)、分割(segmentation)、分类(classification)等计算,最后利用多帧信息进行多目标跟踪,将相关结果输出。这个过程中将涉及到多传感器深度融合和深度学习相关的技术细节,我这里不做过多的讨论。

 

感知系统的解决方案应保证以下五点:

 

◆ 首先是安全,保证近乎百分之百的检测(Detection)召回率(Recall)。

 

◆ 精度(Precision)要求非常高,如果低于某个阈值,造成False Positive(误报),会导致车辆在自动驾驶状态下行驶得非常不舒适。

 

◆ 尽量输出所有对行车有帮助的信息,包括路牌,交通信号灯及其它场景理解的信息。

 

◆ 保证感知系统的高效运行,能够近实时处理大量的传感器数据。

 

 可扩展性(Scalability)也很重要。深度学习(Deep learning)依赖大量数据,其训练模型的泛化能力对于感知系统非常重要。未来,我们希望模型(model)和新算法有能力适配更多的城市和国家的路况。

 

 

感知技术的挑战

 

感知精度与召回率相平衡的挑战

 

 

上图展示了晚高峰时期十字路口的繁忙场景,此时有大量行人、摩托车穿过十字路口。

 

 

通过3D点云数据(上图),能够看到此时对应的感知原始数据。

 

这里挑战是,经过计算处理后,感知系统需要在这样环境下输出所有障碍物的正确的分割(segmentation)结果和障碍物类别。

 

除了繁忙的十字路口,感知系统在处理一些特殊的或者恶劣的天气条件,也面临不小挑战。

 

 

 

突降暴雨或者长时间降雨往往会造成路面积水,车辆经过自然会溅起水花。上方视频中白色点云展示了激光雷达检测到其他车辆经过溅起的水花并对其进行filter(过滤)的结果。如果感知系统不能对水花进行准确的识别和过滤,这会对自动驾驶造成麻烦。结合激光雷达与摄像头(Lidar&Camera)的数据,我们的感知系统对水花有很高的识别率。

 

长尾场景挑战

 

洒水车

上图是我们在路测时曾遇到的两类洒水车(上图)。左边洒水车采用向上喷的雾炮,而右边是向两侧喷洒的洒水车。

 

 

人类司机遇到洒水车时,可以很容易做出判断并超过洒水车,但是对于感知系统来说,则需要花一定时间去处理和识别这类场景和车辆,我们的自动驾驶在遇到类似场景已获得更优的乘坐体验。

 

小物体的检测

 

小物体检测的意义在于,面对意想不到的路测事件,比如流浪的小猫、小狗突然出现马路上,感知系统对这类小物体能够有准确的召回,以保证小生命的安全。

 

红绿灯

 

随着越来越多地区和国家开展自动驾驶路测,感知系统在处理交通信号灯总会遇到新的长尾场景。

 

 

例如,逆光的问题(上图)或者突然从桥洞中驶出后相机曝光的问题,我们可以通过动态调整相机的曝光等方法来解决问题。

 

 

还有红绿灯倒计时的场景(上图),感知系统可以识别出倒计时的数字,这样能够让自动驾驶车辆在遇到黄灯时/前,给出更优的规划决策应对,优化乘车体验。

 

 

雨天时,摄像头(照相机)会水珠密布(上图),感知系统需要处理这类特殊气候条件下的场景,准确识别红绿灯。

 

 

一些地区使用的红绿灯带有进度条(上图),要求感知系统能够识别进度条的变动,这样可以帮助下游的规划决策模块在绿灯将变黄时,提前给出减速。

发布了41 篇原创文章 · 获赞 4 · 访问量 5428
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章