2. 误差来源分析:系统误差与随机误差、温度漂移、安装偏差、噪声模型

做传感器标定这么多年,我最大的体会就是:搞不清误差从哪来,标定就是瞎忙活。你想想看,一个传感器装上去,数据飘了,你第一反应是什么?调参数?换硬件?别急,先搞清楚误差的祖宗十八代再说。

这一节,咱们就把误差的底裤扒干净。我会把我在产线上踩过的坑、实验室里熬过的夜,都揉碎了讲给你听。

2.1 系统误差 vs 随机误差:两个老冤家

先说个我自己的例子。几年前做一款激光雷达的标定,发现测距总是偏大 3cm。一开始我以为是随机抖动,后来统计了 1000 组数据——好家伙,均值就是偏了 3cm,而且每次偏的方向都一样。这就是典型的系统误差。

系统误差的特点很鲜明:

  • 有规律:要么固定偏大,要么固定偏小
  • 可预测:你给它建个模型,就能补偿回来
  • 来源明确:比如镜头畸变、安装角度偏了、ADC 参考电压不准

而随机误差呢?说白了就是没规律。同一个传感器,同一个环境,测 100 次,每次结果都不一样。我习惯叫它「噪声的野孩子」。

核心区别一句话:系统误差能「算」回来,随机误差只能「平均」掉。

举个例子你就明白了。假设你拿尺子量桌子长度:

  • 尺子本身短了 1mm → 每次量都多 1mm → 系统误差
  • 手抖了一下 → 这次 100.2cm,下次 99.8cm → 随机误差

在标定流程里,我个人的处理习惯是:先干掉系统误差,再对付随机误差。为什么?因为系统误差不除掉,你后面做再多滤波都是白搭——方向都错了。

2.2 温度漂移:传感器界的「变脸王」

说到温度漂移,我就想起一个惨痛教训。有一年冬天,我们在北方某城市做车载摄像头标定。白天 15℃,晚上零下 10℃。第二天一看数据——IMU 的零偏直接翻了一倍。我当时还以为是传感器坏了,后来查了 datasheet 才发现,温度漂移是写在基因里的。

温度漂移的典型表现:

  • 零偏漂移:温度一变,静止输出值就变了
  • 灵敏度漂移:同样的物理量,不同温度下输出幅度不一样
  • 非线性加剧:温度越高,传感器响应曲线越歪

为什么会这样?说白了,传感器内部的半导体材料、电阻、电容,都对温度敏感。你想想看,一个 MEMS 加速度计,内部硅结构在高温下热膨胀,电容间距变了,输出能不变吗?

我的避坑指南:我曾经在标定流程里加了一个「温度补偿表」——把 -40℃ 到 85℃ 分成 10 个区间,每个区间单独标一组参数。效果立竿见影,零偏漂移从 ±5% 降到了 ±0.5%。

温度补偿的常见做法有两种:

  1. 查表法:提前标定好不同温度下的参数,运行时查表插值
  2. 模型法:拟合一个多项式,比如 output = a*T² + b*T + c

我个人更推荐模型法——代码量小,而且连续性好。查表法在温度跳变时容易出毛刺。

2.3 安装偏差:你以为装正了,其实歪了

安装偏差这玩意儿,说大不大,说小不小。我见过最夸张的一次,一个客户把激光雷达装歪了 2 度,结果点云投影到图像上,偏差了十几个像素。他折腾了三天,最后发现是安装支架的螺丝孔打偏了。

安装偏差主要分三类:

类型 表现 典型来源
平移偏差 传感器位置偏了 安装孔位不准、垫片厚度不均
旋转偏差 传感器角度歪了 支架变形、手工安装误差
结构偏差 传感器内部光路/电路偏了 PCB 焊接、镜头装配公差

嗯,这里要注意:旋转偏差比平移偏差更致命。为什么?因为角度偏差会随着距离放大。你想想,1 度的角度偏差,在 10 米外就是 17cm 的偏移。而平移偏差是固定的,大不了加个常数补偿。

警告:千万不要相信「目视对齐」。我曾经用激光准直仪测过,人眼觉得「装正了」的传感器,实际偏差通常在 0.5°~1° 之间。对于高精度应用,必须用标定板或专用工装。

安装偏差的标定方法,我习惯用外参标定——就是通过采集已知特征点的数据,反算出传感器相对于车体或其它传感器的位姿。这个后面章节会详细讲。

2.4 噪声模型:给随机误差画个像

随机误差虽然没规律,但我们可以用统计模型来描述它。说白了,就是给噪声「画个像」,知道它长什么样,才好对付它。

最常见的噪声模型有这几种:

  • 高斯白噪声:均值 0,方差固定。这是最理想的噪声,也是很多滤波算法(比如卡尔曼滤波)的前提假设。
  • 闪烁噪声(1/f 噪声):低频段噪声大,高频段噪声小。IMU 里常见,很难对付。
  • 量化噪声:ADC 采样时,模拟量转数字量产生的舍入误差。分辨率越低,噪声越大。
  • 突发噪声:偶尔出现的尖峰脉冲。比如电磁干扰、电源波动。

我举个例子,帮你理解噪声模型怎么用。假设你有一个加速度计,输出信号长这样:

// 原始数据(单位:m/s²)
9.81, 9.82, 9.80, 9.83, 9.79, 9.81, 9.82, 9.80

// 如果你知道它是高斯白噪声,方差 σ² = 0.0002
// 那就可以用滑动平均滤波:
// 滤波后 = (9.81 + 9.82 + 9.80 + 9.83 + 9.79) / 5 = 9.81

但如果你遇到的是闪烁噪声,滑动平均就不好使了——因为低频噪声会「拖尾」,平均完还是有偏。这时候得用艾伦方差来分析噪声特性,然后针对性设计滤波器。

记住这个原则:噪声模型决定了你的滤波策略。高斯噪声用均值滤波,闪烁噪声用高通滤波,突发噪声用中值滤波。

我在项目中遇到过最头疼的是突发噪声。有一次 IMU 数据每隔几分钟就跳一个尖峰,查了三天,最后发现是电机启动时的电磁干扰。解决方案很简单——在硬件上加个磁环,软件里再加个阈值判断,超过 3σ 的直接丢弃。

2.5 知识体系总览

说了这么多,咱们用一张图把误差来源串起来。这张图我画了很多遍,每次带新人都会拿出来讲。

传感器误差来源分析框架 传感器误差 系统误差 随机误差 温度漂移 安装偏差 零偏/尺度因子 高斯白噪声 闪烁噪声 突发噪声 标定策略 系统误差 → 建模补偿 | 随机误差 → 滤波平均 | 温度漂移 → 温度补偿 安装偏差 → 外参标定 | 噪声模型 → 针对性滤波

这张图我建议你保存下来。每次做标定之前,先对着图问自己三个问题:

  1. 这个误差是系统的还是随机的?
  2. 温度变化会影响它吗?
  3. 安装的时候有没有可能歪了?

把这三个问题想清楚,标定方案就出来一半了。剩下的,就是动手干。


可可精品资料库