3. 校准基础理论:校准的数学本质

做传感器融合这些年,我见过太多人把校准当成「玄学」——拿个磁力计转几圈,或者对着 IMU 晃一晃,就觉得完事了。其实校准没那么神秘,它的数学本质就是参数估计。说白了,就是根据一堆带噪声的观测数据,反推出传感器内部那些「隐藏」的误差参数。

你想想看,一个加速度计,理想情况下三轴输出应该是 0g、0g、1g(静止时)。但实际读出来呢?可能有偏置、有刻度误差、还有轴间非正交。这些未知数就是我们要估计的参数。校准,就是解这个方程。

校准的数学本质:给定观测数据 y = f(x, θ) + ε,其中 θ 是待估计的误差参数,ε 是噪声。校准的目标就是找到最优的 θ,使得模型输出最接近真实值。

3.1 最小二乘法原理

最小二乘法,我愿称之为「校准界的瑞士军刀」。它的思想特别朴素:让预测值和真实值的差的平方和最小。为什么是平方?不是绝对值?不是四次方?

我个人习惯从几何角度理解:平方和最小,等价于在欧几里得空间中找一条距离所有点最近的直线。而且平方误差对大的偏差惩罚更重——这在实际中很有用,因为传感器偶尔会蹦出个野值,平方项会让优化器自动「重视」这些大偏差。

数学上,最小二乘问题可以写成:

minimize:  Σ (y_i - ŷ_i)²

其中:
  y_i  = 第 i 个观测值(传感器读数)
  ŷ_i  = 第 i 个预测值(模型输出)
  Σ    = 对所有 N 个样本求和

我记得刚入行时,用最小二乘法校准一个三轴磁力计。当时数据量不大,直接手算伪逆矩阵就搞定了。后来数据量大了,才改用 QR 分解和 SVD。但核心思想没变——就是让残差平方和最小。

实战小技巧:最小二乘法对高斯噪声效果最好。如果你的传感器噪声有明显离群点(比如受到突发干扰),可以考虑用「加权最小二乘」或「鲁棒最小二乘」,给大残差更小的权重。

3.2 线性回归与非线性回归

校准模型分两种:线性的,和非线性的。区分标准很简单——看待估计参数是否以线性形式出现在模型中。

类型 模型形式 校准方法 典型场景
线性回归 y = a·x + b 闭式解(伪逆) 加速度计偏置与刻度
非线性回归 y = a·sin(b·x + c) 迭代优化(LM、G-N) 磁力计硬铁/软铁校准

线性回归的好处是——有解析解。你不需要猜初始值,不需要调迭代步长,直接一个矩阵乘法就出结果。我在项目中经常先用线性模型做个粗校准,再切换到非线性模型精调。

非线性回归就麻烦一些。比如磁力计的椭球拟合校准,模型是:

(x - x₀)² / a² + (y - y₀)² / b² + (z - z₀)² / c² = 1

这里有 9 个参数(3 个中心 + 3 个半轴 + 3 个旋转角),而且参数之间互相耦合。这时候就得用 Levenberg-Marquardt 算法迭代求解。我曾经踩过一个坑——初始值给得太离谱,算法直接发散,校准结果比不校准还差。

避坑指南:非线性回归对初始值敏感。我建议先用线性近似(比如把椭球方程展开成二次型)算一个粗解,再用这个粗解作为非线性优化的起点。这样既快又稳。

3.3 校准的评估指标

校准做完了,怎么知道好不好?不能光看拟合曲线「看起来挺顺眼」。我们需要量化指标。

3.3.1 残差(Residual)

残差就是每个点的预测误差:ei = yi - ŷi。我习惯先画残差分布图——如果残差随机分布在零线附近,说明模型没问题。如果残差有明显的趋势(比如随着输入增大而增大),说明模型结构选错了。

举个例子,校准一个温度传感器。如果残差在低温区全是正的、高温区全是负的,那说明你的线性模型不够用,得考虑二阶项。

3.3.2 均方根误差(RMSE)

RMSE 是最常用的综合指标:

RMSE = sqrt( (1/N) · Σ (y_i - ŷ_i)² )

它的单位跟原始数据一样,所以很好理解。比如加速度计校准后 RMSE = 0.02g,意思就是平均每个点的误差大约 0.02g。

我个人习惯把 RMSE 拆成三部分看:

  • 偏差(Bias):残差的均值。如果非零,说明校准有系统误差。
  • 标准差(Std):残差的标准差。反映随机噪声的大小。
  • 最大误差(Max Error):残差的最大绝对值。这个指标很关键——有些传感器 99% 的点都很好,但偶尔蹦出一个大误差,就会把定位直接带偏。

我的评估标准:RMSE 小于传感器噪声的 1.5 倍,就算合格。如果 RMSE 比噪声还小,反而要警惕——可能是过拟合了。

3.4 校准流程总览

说了这么多,咱们把整个校准流程串起来。下面这张图是我做项目时常用的校准框架:

传感器校准流程框架图 传感器校准流程框架 ① 数据采集 ② 模型选择 ③a 线性回归 ③b 非线性回归 ④ 参数估计 ⑤ 评估(RMSE/残差) 不满足则迭代 说明:虚线箭头表示评估不达标时,需要返回模型选择或参数估计步骤重新迭代

这个流程我用了很多年。核心就一句话:先采集好数据,选对模型,用最小二乘估计参数,最后用 RMSE 和残差分布验证结果。如果评估不通过,别硬撑——回去检查数据质量,或者换个模型结构。

我的习惯:每次校准完,我都会把残差画出来看一眼。如果残差分布像白噪声,那基本稳了。如果看到明显的周期性或趋势性,说明模型没选对,或者数据采集时传感器在动。