姓名:李增辉
学号:19021210862
转载自:https://zhuanlan.zhihu.com/p/116901401
【嵌牛导读】本文介绍了自动驾驶中多传感器融合的原因与方法
【嵌牛鼻子】常见自动驾驶传感器的特性
【嵌牛提问】多传感器融合还面临什么问题?
【嵌牛正文】
一、多传感器融合的必要性
为什么一定要多传感器融合呢?主要是扬长避短、冗余设计,提高整车安全系数。多传感器融合系统所实现的功能要远超这些独立系统能够实现的功能总和。使用不同的传感器种类可以在某一种传感器全都出现故障的环境条件下,额外提供一定冗余度。这种错误或故障可能是由自然原因(诸如一团浓雾)或是人为现象(例如对摄像头或雷达的电子干扰或人为干扰)导致。各传感器优缺点如下:
相机:对目标的颜色和纹理比较敏感,可以完成目标分类、检测、分割、识别等任务,但是不能得到精确的探测距离,而且易受光照、天气条件的影响。
LiDAR:可以获得目标精确的3D信息,检测范围也能够到达150米。对光照不敏感,晚上也可以正常工作。但是角分辨率大,目标稀疏,无法获得目标纹理,分类不准,而且在雨、雾、雪等恶劣天气中,性能会下降。对扬尘、水雾也比较敏感,易产生噪点。
radar:可以提供精确的距离和速度信息,探测距离也比较远,可以全天候工作,但分辨率较低,无法提供物体高度信息。
相关传感器对比如下表:

二、多传感器融合的先决条件
众多的传感器装在同一辆车上,如nuscenes中使用了6个camera、1个lidar、5个radar,使用同一个系统来采集并处理数据,为了将他们规范,我们需要对这些传感器统一坐标系和时钟,目的就是为了实现三同一不同:同一个目标在同一个时刻出现在不同类别的传感器的同一个世界坐标处。
1,统一时钟
在这里要做的就是同步不同传感器的时间戳:
GPS时间戳的时间同步方法: 这个需要看传感的硬件是否支持该种方法,如果支持则传感器给出的数据包会有全局的时间戳,这些时间戳以GPS为基准,这样就使用了相同的时钟,而非各自传感器的时钟了。
但是还有一个问题,不同传感器的数据频率是不同的,如lidar为10Hz,camera为25/30Hz,那不同传感器之间的数据还是存在延迟,如下图所示。虽然可以通过找相邻时间戳的方法找到最近帧,但是如果两个时间戳差距较大,障碍物又在移动,最终会导致较大的同步误差。

硬同步方法:这种方法可以缓解查找时间戳造成的误差现象。该方法可以以激光雷达作为触发其它传感器的源头,当激光雷达转到某个角度时,才触发该角度的摄像头,这可以大大减少时间差的问题。这套时间同步方案可以做到硬件中,这样可以大大降低同步误差,提高数据对齐效果。
2,统一坐标系
统一坐标系有两步,一是运动补偿,二是传感器标定。
运动补偿主要针对长周期的传感器,如lidar,周期为100ms。由于所有的传感器都装在车上,车是运动的刚体。因此传感器在采集数据时,周期开始的时间点和结束时间点车辆是处于不同位置的,导致不同时刻采集的数据所处坐标系不同,因此需要根据车体的运动对传感器采集的数据进行运动补偿。如下图所示:虚线部分可以认为是世界坐标系,红色点代表一个静态的障碍物,在坐标系中有一个稳定的坐标(5,5)。蓝色部分代表自动驾驶车自己的局部坐标系,也就是说世界坐标系的(4,0)为局部坐标系的原点。在T+1时刻,这个局部坐标系移动到了(6,0)的位置,也就是自动驾驶车沿着X方向向前移动了2。也就是说,在T时刻,障碍物的在局部坐标系下的坐标是(1,5),而在T+1时刻,它的坐标变为了(-1,5)。

这个问题解决起来比较简单,因为自动驾驶车拥有比较准确的实时定位信息,它可提供T和T+1两个时刻内,车本身的姿态差距,利用姿态差,我们就可以比较容易补偿自身移动了多少。
传感器标定分为内参标定和外参标定,内参标定,解决的是单独的每个传感器与世界坐标系间的变换;外参标定是在世界坐标系下,解决的不同传感器间的变换。传感器外参校准依赖于传感器的精确内参校准。具体的传感器标定方法,回头会专门写一篇文章介绍。
三、融合方法
这一小节,就是大家经常可以看到的不同的融合方法,这里仅做简单介绍,后续会专门介绍相关方法。
经过以上几步,可以拿到的信息有:做好运动补偿及时间同步的传感器源数据、传感器内参、传感器外参,有了这些信息后,我们可以做相应的融合方法了。到底如何做呢?下面举两个例子:
相机和lidar融合:激光雷达数据是包含了明确的(x,y,z)数据的3D观测,通过标定参数与照相机本身的内参,多传感器深度融合可以实现把3D点投到图像上,图像上的某些像素也就打上了深度信息,帮助感知系统进行基于图像的分割或者训练深度学习模型。
毫米波雷达和激光雷达融合:毫米波雷达和激光雷达的融合方式比较简单。在笛卡尔坐标系下,它们拥有完整的( x,y )方向的信息。因此在笛卡尔坐标系下,激光雷达和毫米波雷达可以实现基于距离的融合。另外,毫米波雷达还可以探测到障碍物速度,而激光雷达通过位置的追踪,也会得到对障碍物速度的估计,对这些速度的信息进行融合,更能帮助筛选错误的匹配候选集。
根据数据在整个流程中融合的不同位置,可以分为前融合和后融合。
前融合

如上图所示,在原始层把数据都融合在一起,融合好的数据就好比是一个Super传感器,而且这个传感器不仅有能力可以看到radar,还有能力可以看到摄像头或者RGB,也有能力看到LiDAR的三维信息,就好比是一双超级眼睛。方法上只有一个感知的算法,对融合后的多维综合数据进行感知。
后融合

如上图所示,每个传感器各自独立处理生成的目标数据;每个传感器都有自己独立的感知,比如激光雷达有激光雷达的感知,摄像头有摄像头的感知,毫米波雷达也会做出自己的感知。当所有传感器完成目标数据(如目标检测、目标速度预测)生成后,再使用一些传统方法融合所有传感器的结果,得到最终结果。
前融合,还是后融合?
到底哪种融合方式好呢?这里举个例子:假设在你手上有一个手机,激光雷达只能看到手机的一个角,摄像头只能看到第二个角,而毫米波雷达可以看到第三个角,那么大家可以想象,如果使用后融合算法,由于每个传感器只能看到它的一部分,这个物体非常有可能不被识别到,最终会被滤掉。而在前融合中,由于它是集合了所有的数据,也就相当于可以看到这个手机的三个角,那对于前融合来说,是非常容易能够识别出这是一台手机的。
网友评论