传感器基础与特性:常见传感器类型与误差模型

做多源融合这些年,我最大的体会是:不了解传感器的脾气,融合就是瞎蒙。你想想看,每个传感器都有自己的“性格”——激光雷达怕雨雪,摄像头怕黑夜,IMU 会飘,GPS 会跳。把这些数据硬凑在一起,结果只会更糟。

这一章,咱们就聊聊常见传感器的底细。我会结合自己踩过的坑,帮你把每个传感器的特性、误差模型和标定方法理清楚。

常见传感器类型

先列个清单。多源融合里最常用的传感器,无非这五种:

  • 激光雷达(LiDAR):测距准,但怕天气
  • 摄像头(Camera):信息丰富,但缺深度
  • 惯性测量单元(IMU):短时精度高,长时飘得厉害
  • 全球定位系统(GPS):绝对位置准,但更新慢、易遮挡
  • 毫米波雷达(Radar):全天候,但分辨率低

下面逐个拆开看。

激光雷达

激光雷达的原理很简单——发射激光,测反射时间,算出距离。我最早接触的是 16 线 Velodyne,那会儿觉得这东西真神奇,点云一出来,周围环境清清楚楚。

但实际用起来,问题不少:

  • 雨雪雾天性能骤降:水滴会散射激光,点云变得稀疏。我在一次雨天测试中,原本能看清 100 米外的车,结果 30 米外就全是噪点。
  • 反射面影响大:黑色车身、玻璃幕墙会吸收或折射激光,导致测距偏差甚至丢点。
  • 角分辨率有限:线数越高越贵,16 线在 50 米外只能看到大概轮廓。

关键参数:测距精度(±2cm 算好的)、视场角(水平 360° 常见)、线数(16/32/64/128)、帧率(10Hz 或 20Hz)。

摄像头

摄像头是融合系统里的“眼睛”。它提供的信息最丰富——颜色、纹理、语义——但缺了深度信息。

我习惯把摄像头分为两类:

  • 单目:便宜,但测距靠估计,误差大
  • 双目:能算深度,但计算量大,基线长度限制测距范围

摄像头最大的问题是光照敏感。强光下过曝,暗光下噪点多,逆光时几乎全黑。我记得有一次做夜间测试,摄像头基本废了,全靠雷达和 IMU 撑着。

我的建议:摄像头一定要配宽动态范围(WDR)功能,否则白天黑夜切换时,图像质量会断崖式下降。

IMU

IMU 包含加速度计和陀螺仪。它的特点是:短时精度极高,长时漂移严重。

为什么?因为 IMU 测量的是加速度和角速度,要得到位置和姿态,得做两次积分。积分嘛,误差会累积。你想想看,哪怕加速度计有 0.01 m/s² 的零偏,积分 10 秒后位置误差就能到 0.5 米,60 秒后……不敢想。

IMU 的误差模型比较复杂,我后面会细讲。这里先记住几个关键点:

  • 零偏(Bias):静止时输出不为零
  • 噪声(Noise):白噪声 + 随机游走
  • 尺度因子(Scale Factor):输出值与真实值的比例偏差

GPS

GPS 提供绝对位置,误差不随时间累积。但它的缺点也很明显:

  • 更新频率低:通常 10Hz,动态场景下不够用
  • 易受遮挡:高楼、隧道、树荫下信号会变差甚至丢失
  • 多路径效应:信号反射导致测距偏差,城市峡谷里尤其严重

我做过一个测试:在市中心高楼区,GPS 定位误差能到 10-20 米。这时候如果不融合 IMU 和激光雷达,自动驾驶根本没法用。

注意:GPS 的误差不是高斯白噪声,而是有相关性的。很多新手直接把它当高斯噪声建模,结果融合效果很差。

毫米波雷达

毫米波雷达用电磁波测距和测速。它的优势是全天候——雨雪雾天照样工作。但分辨率低,点云稀疏,无法识别物体类别。

雷达的误差主要来自:

  • 多目标模糊:多个目标在同一距离门内会混淆
  • 杂波干扰:地面、护栏等静止物体会产生大量虚警
  • 角度分辨率低:普通雷达角度分辨率只有几度,远不如激光雷达

我早期做融合时,总想把雷达点云和激光点云直接匹配,后来发现不行——雷达点太稀疏,特征太少。后来改用目标级融合,效果才好起来。

传感器误差模型与噪声特性

这部分是融合算法的基石。你想想看,如果不知道传感器的误差特性,怎么给它们分配权重?怎么设计滤波器?

误差来源分类

传感器的误差,大致分三类:

误差类型 来源 特性
系统误差 制造偏差、安装偏差 固定、可标定
随机误差 电子噪声、环境干扰 随机、可建模
粗大误差 传感器故障、通信丢包 偶发、需剔除

系统误差可以通过标定消除。随机误差需要建模,比如用高斯分布、随机游走等。粗大误差最麻烦,得靠异常检测来处理。

常见噪声模型

我常用的噪声模型有这几个:

  • 高斯白噪声:均值 0,方差固定。摄像头像素噪声、GPS 测量噪声常用这个模型。
  • 随机游走(Random Walk):噪声的积分,IMU 的零偏漂移就是典型的随机游走。
  • 1/f 噪声(闪烁噪声):低频段功率谱密度大,某些 MEMS 传感器里有。
  • 量化噪声:ADC 量化引起的,分辨率越低越明显。

经验之谈:实际传感器的噪声往往不是单一模型,而是多种噪声的叠加。比如 IMU 的输出 = 真实值 + 零偏 + 白噪声 + 随机游走。建模时得一层层剥开。

IMU 误差模型详解

IMU 的误差模型最复杂,我单独拿出来说。一个典型的 IMU 测量模型长这样:

a_meas = a_true + b_a + n_a + s_a * a_true + m_a * a_true
w_meas = w_true + b_g + n_g + s_g * w_true + m_g * w_true

其中:

  • b_a、b_g:加速度计和陀螺仪的零偏
  • n_a、n_g:白噪声
  • s_a、s_g:尺度因子误差
  • m_a、m_g:交轴耦合误差

零偏 b 不是常数,它会随时间缓慢漂移。我一般用一阶马尔可夫过程或随机游走模型来描述:

b_dot = -1/tau * b + w_b

其中 tau 是相关时间,w_b 是驱动噪声。这个模型在卡尔曼滤波里很好用。

避坑指南:我曾经在 IMU 标定时只校准了零偏,忽略了尺度因子。结果在高速运动时,积分位置误差比预期大了 3 倍。后来老老实实把尺度因子也标了,误差才降下来。

传感器标定基础

标定,说白了就是找出传感器的系统误差,然后补偿掉。没有标定的传感器数据,直接拿去融合,结果就是垃圾进垃圾出。

标定的层次

我习惯把标定分为三个层次:

  1. 内参标定:校准传感器自身的参数。比如摄像头的内参(焦距、畸变系数)、IMU 的零偏和尺度因子。
  2. 外参标定:校准传感器之间的相对位姿。比如激光雷达和摄像头之间的旋转平移矩阵。
  3. 时间同步标定:校准不同传感器的时间戳偏差。这个经常被忽略,但影响很大。

常用标定方法

这里列几个我常用的方法:

传感器 标定方法 工具/参考
摄像头 棋盘格标定法 OpenCV、Kalibr
激光雷达 平面拟合标定 LiDAR 标定板、ICP
IMU 六位置法、Allan 方差 imu_utils、Allan 工具包
LiDAR-Camera 联合标定(点云投影到图像) Autoware、lidar_camera_calibration
Camera-IMU 视觉惯性标定 Kalibr、VINS 标定工具

注意:标定不是一次性的。温度变化、振动、时间久了,传感器的参数会漂移。我建议每隔一段时间重新标定一次,或者在系统里加在线标定模块。

标定流程示例

以摄像头-激光雷达联合标定为例,流程大致如下:

  1. 准备标定板(棋盘格或圆形靶标)
  2. 采集多组数据:不同距离、不同角度
  3. 提取图像中的角点,提取点云中的标定板平面
  4. 构建优化问题:最小化重投影误差
  5. 输出旋转矩阵 R 和平移向量 t

代码实现上,我习惯用 Ceres 或 g2o 做优化。下面是个简化的优化框架:

// 伪代码:LiDAR-Camera 联合标定优化
for each frame:
    // 提取图像角点 u_i
    // 提取点云平面点 P_i
    // 构建残差:重投影误差
    residual = u_i - project(R * P_i + t)
    
// 最小化所有残差的平方和
minimize sum(residual^2) over R, t

嗯,这里要注意:点云和图像的对应关系要手动标,或者用自动匹配算法。我早期用手动标,累得够呛。后来改用 Autoware 的自动标定工具,省了不少时间。

本章知识体系

下面这张图,把本章的核心内容串起来了。你可以看到传感器类型、误差模型、标定方法之间的关系。

传感器基础与特性知识体系 传感器基础与特性知识体系 常见传感器类型 激光雷达 摄像头 IMU GPS 毫米波雷达 误差模型与噪声特性 系统误差 随机误差 粗大误差 噪声模型(高斯/随机游走) 传感器标定 内参标定 外参标定 时间同步标定 标定是融合的基础,没有标定就没有融合 内参 → 外参 → 时间同步,层层递进

这张图把本章的知识结构理清楚了。从上到下,先认识传感器类型,再理解误差模型,最后掌握标定方法。每一步都是下一步的基础。

核心要点:多源融合不是简单地把数据堆在一起。你得知道每个传感器的脾气——它什么时候准,什么时候不准,误差长什么样。标定就是给传感器“体检”,体检完了才能放心用。