4、传感器融合:多传感器融合策略(前融合、后融合)、卡尔曼滤波入门、时间同步与空间对齐

各位同学,欢迎来到传感器融合这一章。

说实话,这是整个自动驾驶系统里,我个人觉得最「烧脑」但也最「过瘾」的部分。为什么?因为单一传感器总有短板——摄像头怕逆光、激光雷达怕雨雾、毫米波雷达分辨力不够。但把它们组合起来,就能取长补短。这就是传感器融合的核心价值。

4.1 前融合 vs 后融合:两种主流策略

先聊一个最基础的问题:融合到底在哪个阶段做?

业内主要有两条路:前融合(Early Fusion)和后融合(Late Fusion)。我当年刚入行时,也在这两个方案之间纠结了很久。

4.1.1 前融合(Early Fusion)

说白了,就是把所有传感器的原始数据,在底层就拼到一起。比如把激光雷达的点云和摄像头的图像像素,通过投影关系对齐,然后喂给同一个神经网络。

优点:信息损失最小。原始数据里那些细微的特征,比如一个行人的轮廓、一个路沿的弧度,都能保留下来。

缺点:计算量巨大。而且对时间同步和空间对齐的要求极高——差一个毫秒,点云和图像就对不上了。

我的经验:前融合更适合做感知任务,比如目标检测。我在项目中用前融合做行人检测,召回率比后融合高了约5%。但代价是GPU负载直接翻倍。

4.1.2 后融合(Late Fusion)

后融合就「偷懒」一些。每个传感器先独立处理自己的数据,各自输出目标列表(比如摄像头说「前方5米有车」,雷达说「前方4.8米有车」),然后我们在决策层把这些结果合并。

优点:系统解耦,每个传感器模块可以独立升级。计算开销小。

缺点:信息有损失。如果某个传感器漏检了,后融合很难补回来。

对比项 前融合 后融合
信息保留度
计算开销
系统耦合度
工程实现难度

我的建议:如果你刚入门,先从后融合开始。等把时间同步和空间对齐搞明白了,再挑战前融合。别一上来就搞前融合,容易把自己搞崩溃。

4.2 卡尔曼滤波入门:状态估计的「定海神针」

聊完融合策略,咱们得聊聊怎么把多个传感器的数据「揉」在一起。卡尔曼滤波就是干这个的。

嗯,我知道很多人一听到「滤波」两个字就头疼。别怕,我用大白话给你讲明白。

4.2.1 核心思想:预测 + 更新

卡尔曼滤波就做两件事:

  1. 预测:根据上一时刻的状态,猜一下当前时刻的状态。比如上一秒车速是10m/s,我猜这一秒大概是10.1m/s。
  2. 更新:用传感器实际测到的值,来修正这个猜测。比如GPS说现在是10.3m/s,那我就把猜测往10.3靠一靠。

说白了,就是「猜」和「改」的循环。你想想看,这像不像你开车时,一边凭感觉判断车速,一边瞄一眼仪表盘做修正?

4.2.2 一个简单的例子:一维卡尔曼滤波

假设我们要估计一个物体的位置。状态量就是位置 x 和速度 v。

// 预测步骤
x_pred = x_prev + v_prev * dt
P_pred = P_prev + Q

// 更新步骤
K = P_pred / (P_pred + R)
x_est = x_pred + K * (z - x_pred)
P_est = (1 - K) * P_pred

这里:

  • Q 是过程噪声,代表你对自己预测的信任度
  • R 是测量噪声,代表你对传感器数据的信任度
  • K 是卡尔曼增益,它决定了你更相信预测还是测量

避坑指南:我曾经在调参时,把Q设得太小,结果卡尔曼滤波几乎不信任传感器数据,车子过弯时位置估计严重滞后。后来我把Q调大了一点点,效果立竿见影。记住:Q和R的比值,决定了滤波器的「性格」。

4.2.3 扩展到多传感器融合

卡尔曼滤波天然支持多传感器。你只需要在更新步骤里,依次用每个传感器的测量值去修正状态。

比如:先用摄像头的数据更新一次,再用雷达的数据更新一次。每次更新都会让状态更精确。

4.3 时间同步与空间对齐:融合的「地基」

这部分我多说两句。因为很多同学在仿真里跑得挺好,一上车就崩,十有八九是时间同步和空间对齐没做好。

4.3.1 时间同步:让所有传感器「说同一句话」

不同传感器的采样频率不一样。摄像头30Hz,激光雷达10Hz,毫米波雷达20Hz。如果不做同步,你拿到的数据可能是「摄像头看到的是0.1秒前的场景,雷达看到的是0.05秒前的场景」。

这会导致什么?一个急刹车,摄像头说「车还在10米外」,雷达说「车已经在8米外了」。你信谁?

常用方法

  • 硬件同步:用GPS的PPS(秒脉冲)信号给所有传感器打时间戳。这是最准的,误差在微秒级。
  • 软件插值:如果硬件不支持,就用线性插值把低频传感器的数据对齐到高频传感器的时间戳上。

注意:软件插值只适用于匀速运动。如果车辆在急加速或急转弯,插值误差会很大。我见过一个项目,因为没做硬件同步,车辆在高速变道时融合结果直接发散,差点出事。

4.3.2 空间对齐:把不同坐标系「拧」到一起

每个传感器都有自己的坐标系。摄像头是像素坐标系,激光雷达是三维笛卡尔坐标系,IMU是车体坐标系。

空间对齐,就是通过标定,求出这些坐标系之间的变换矩阵(旋转矩阵R和平移向量t)。

// 激光雷达点云投影到图像平面
// 需要:外参矩阵 (R, t) + 相机内参矩阵 K
P_camera = R * P_lidar + t
p_pixel = K * P_camera

这个公式看着简单,但实际标定过程非常繁琐。我建议你直接用现成的标定工具,比如Autoware的标定工具箱,或者Apollo的标定模块。别自己手写,容易出bug。

我的习惯:每次标定完,我都会做一个「投影验证」——把激光雷达的点云投影到图像上,看看轮廓是否对齐。如果车身的边缘和图像里的车身边缘重合,说明标定没问题。如果不重合,嗯,重新标吧。

4.4 小结

这一章内容不少,我帮你捋一下重点:

  • 前融合 vs 后融合:前融合信息全但计算大,后融合简单但信息有损。根据你的算力和场景选。
  • 卡尔曼滤波:核心是「预测-更新」循环。调参时注意Q和R的比值。
  • 时间同步:硬件同步是王道,软件插值是备选。
  • 空间对齐:标定是基础,投影验证是检验标定质量的「照妖镜」。

下一章,我们会深入聊聊目标跟踪与轨迹预测。到时候你会看到,卡尔曼滤波在跟踪场景里有多好用。咱们下章见。