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 校准流程总览
说了这么多,咱们把整个校准流程串起来。下面这张图是我做项目时常用的校准框架:
这个流程我用了很多年。核心就一句话:先采集好数据,选对模型,用最小二乘估计参数,最后用 RMSE 和残差分布验证结果。如果评估不通过,别硬撑——回去检查数据质量,或者换个模型结构。
我的习惯:每次校准完,我都会把残差画出来看一眼。如果残差分布像白噪声,那基本稳了。如果看到明显的周期性或趋势性,说明模型没选对,或者数据采集时传感器在动。