1、引言:为什么需要多传感器融合?

从单一传感器的局限性说起

做机器人定位和感知这些年,我踩过最多的坑,就是「迷信单一传感器」。

你想想看,一个摄像头,白天看得清清楚楚,一到隧道或者夜晚,直接就瞎了。我有个项目,在室内停车场做AGV导航,摄像头对着白墙,纹理全无,定位直接飘到隔壁车位去了。

为什么会这样?

因为单一传感器天生就有「短板」:

  • 摄像头:受光照影响极大,弱纹理场景基本失效
  • 激光雷达:怕雨雪、怕镜面反射,远处点云稀疏得像秃头
  • IMU:短时间准,长时间漂,积分误差像滚雪球
  • GPS:室内没信号,城市峡谷多径效应严重
  • 超声波:精度低,只能测个大概距离

说白了,每种传感器都有自己的「舒适区」和「死穴」。你指望一个传感器搞定所有场景?我试过,结果就是项目延期、老板拍桌子。

⚠️ 我曾经踩过的坑:

有一次做园区无人配送车,只用了单目视觉做定位。白天测试一切正常,结果傍晚光线一变,车子直接冲上路沿。后来加了激光雷达做融合,才把鲁棒性提上来。嗯,从那以后我再也不敢只用单一传感器了。

融合的必要性:1+1 > 2

多传感器融合,说白了就是「取长补短」。

你让摄像头提供丰富的语义信息,让激光雷达提供精确的深度,让IMU填补短时间内的运动估计。三者一结合,效果远好于任何一个单独使用。

我个人的习惯是:融合不是简单叠加,而是互补。比如:

  • 视觉+IMU:视觉提供绝对观测,IMU提供高频运动先验
  • 激光+IMU:激光提供精确距离,IMU解决运动畸变
  • 视觉+激光+IMU:三者互补,几乎能覆盖所有室内外场景

核心观点:多传感器融合的本质,是利用不同传感器的「冗余信息」来降低「不确定性」。你想想看,一个传感器说「我估计位置在A点」,另一个说「我觉得在B点」,融合算法会告诉你「最可能的位置在C点」,而且这个C点的置信度比A和B都高。

为什么选择UKF来做融合?

说到融合算法,很多人第一反应是卡尔曼滤波(KF)或者扩展卡尔曼滤波(EKF)。

但我在实际项目中遇到过一个问题:EKF对非线性系统的处理,说白了就是「硬掰」——把非线性函数做泰勒展开,只保留一阶项。这就像你用直线去拟合一条曲线,拟合得好不好,全看曲线弯曲程度大不大。

如果系统非线性很强,EKF的线性化误差就会累积,最后导致滤波发散。我记得有一次做四旋翼的姿态估计,EKF在剧烈机动时直接崩了,数据全飞了。

而UKF(无迹卡尔曼滤波)的思路完全不同:

  • 它不强行线性化,而是用一组「sigma点」来近似概率分布
  • 这些点经过非线性变换后,再重新拟合出新的高斯分布
  • 精度上,UKF可以做到二阶甚至三阶的近似,而EKF只有一阶

💡 我的经验:如果你做多传感器融合,系统模型稍微复杂一点(比如带旋转、带非线性观测),直接上UKF。省去推导雅可比矩阵的麻烦,精度还更高。我后来所有融合项目,只要不是实时性要求极端苛刻,一律用UKF。

本章小结

这一章我们聊了:

  1. 单一传感器各有短板,没有「万能传感器」
  2. 多传感器融合的本质是互补和降低不确定性
  3. UKF相比EKF,在处理非线性系统时更有优势

下一章,我会带大家深入UKF的数学原理。别怕,我会用最直观的方式讲清楚sigma点是怎么选的,权重是怎么算的。保证你听完就能上手写代码。

嗯,咱们下章见。