3、加速度计校准理论:六位置静态校准法原理、最小二乘估计理论、加速度计误差模型(零偏+标度+交轴)、可观测性分析

好,咱们进入加速度计校准的核心环节。

说实话,IMU 校准这块,加速度计比陀螺仪要「友好」得多。为什么?因为加速度计有重力这个天然参考。你想想看,重力方向是确定的,大小也是确定的(9.8 m/s² 左右)。这就给了我们一个绝佳的校准基准。

我个人习惯,做加速度计校准时,第一件事就是先把误差模型搞清楚。模型不对,后面算得再漂亮也是白搭。

3.1 加速度计误差模型:零偏、标度、交轴

先看一个理想情况。理想加速度计,三个轴完全正交,输出就是真实的比力。但现实嘛……总得有点瑕疵。

我遇到过一款 MEMS 加速度计,出厂标称零偏 50 mg,结果一上电测出来 120 mg。嗯,这就是典型的零偏误差。

加速度计的误差模型,通常写成这样:

a_meas = S * (a_true + b + N * a_true + v)

展开来说,主要有三个部分:

  • 零偏(Bias):即使没有加速度,输出也不为零。单位是 mg 或 m/s²。说白了就是「躺着也中枪」。
  • 标度因数(Scale Factor):实际输出与理论值的比例偏差。比如你输入 1g,它输出 0.98g,那标度误差就是 2%。
  • 交轴耦合(Cross-axis):X 轴感受到 Y 轴的加速度。这通常是因为传感器安装不正交或者芯片内部结构导致的。

把这三个合在一起,写成矩阵形式更直观:

| a_x_meas |   | S_xx  S_xy  S_xz |   | a_x_true |   | b_x |
| a_y_meas | = | S_yx  S_yy  S_yz | * | a_y_true | + | b_y |
| a_z_meas |   | S_zx  S_zy  S_zz |   | a_z_true |   | b_z |

这里 S 矩阵的对角线是标度因数,非对角线是交轴耦合系数。b 向量是零偏。

关键点:这个模型一共 12 个未知参数(3 个零偏 + 9 个标度/交轴系数)。但实际中,我们通常只估计 9 个或 6 个,因为有些交轴项可观测性很差。

3.2 六位置静态校准法原理

六位置法,名字听着挺唬人,其实原理很简单——利用重力在不同方向上的投影。

你想想看,把加速度计分别朝上、朝下、朝左、朝右、朝前、朝后,六个方向各放一次。每次测量,理论上重力在某个轴上的投影应该是 ±1g,其他轴为 0。

举个例子:

位置 理论 X (g) 理论 Y (g) 理论 Z (g)
Z 轴朝上 0 0 +1
Z 轴朝下 0 0 -1
X 轴朝上 +1 0 0
X 轴朝下 -1 0 0
Y 轴朝上 0 +1 0
Y 轴朝下 0 -1 0

每个位置采集几十秒数据,取平均。这样我们就有了 6 组测量值,每组对应一个已知的理论值。

实战技巧:我建议每个位置至少采集 30 秒数据,然后取中位数而不是均值。为什么?因为均值对粗差敏感,中位数更鲁棒。有一次我在现场校准,有个位置数据老是跳,后来发现是转台振动引起的。换成中位数后,结果就稳定了。

3.3 最小二乘估计理论

有了 6 组数据,怎么算出那 12 个参数?

答案是:最小二乘法。

说白了,就是找一组参数,让模型预测值和实际测量值之间的误差平方和最小。

我们把问题写成线性形式:

z = H * x + v

其中:

  • z 是测量向量(6 个位置 × 3 个轴 = 18 个测量值)
  • H 是设计矩阵(由理论重力投影构成)
  • x 是待估参数(零偏 + 标度 + 交轴)
  • v 是测量噪声

最小二乘解就是:

x_hat = (H^T * H)^{-1} * H^T * z

嗯,就是这个公式。看起来简单,但实际用起来有几个坑:

  1. H 矩阵必须列满秩。如果某些参数不可观测,H^T * H 就不可逆。
  2. 数据要预处理。去掉明显的粗差,比如传感器突然掉电产生的异常值。
  3. 残差分析。算完之后看看残差,如果某个位置的残差特别大,说明那个位置的数据可能有问题。

注意:千万不要直接用原始数据做最小二乘!我曾经犯过这个错——数据里有个明显的跳变点,结果算出来的标度因数偏了 5%。后来花了整整一天排查,才发现是数据采集时有人碰了转台。

3.4 可观测性分析

可观测性,这个词听起来很学术。其实意思很简单:你的数据能不能把参数估计出来?

举个例子。如果你只做 Z 轴朝上和朝下两个位置,那 X 和 Y 的零偏就完全不可观测。因为你没有给 X 和 Y 轴任何激励。

六位置法之所以经典,就是因为它能保证所有 12 个参数都是可观测的。但要注意:

  • 零偏:每个轴的正反两个位置,刚好能解出零偏。
  • 标度因数:正反两个位置的差值,能解出标度。
  • 交轴耦合:需要不同轴的组合数据才能解出来。

我个人的经验是:可观测性分析一定要在采集数据之前做。别等到数据都采完了,才发现某个参数根本算不出来。那时候就尴尬了。

嗯,这里再补充一点。实际工程中,六位置法往往不够用。为什么?因为 MEMS 加速度计的非线性误差、温度漂移等,六位置法覆盖不了。这时候就需要更复杂的多位置法或者温度补偿了。

不过,六位置法作为入门和基础校准,绝对够用。先把这 12 个参数搞定,后面再谈高阶补偿。

总结一下

  • 误差模型:零偏 + 标度 + 交轴,共 12 个参数
  • 六位置法:利用重力在六个方向的投影,提供 18 个方程
  • 最小二乘:解超定方程,得到最优参数估计
  • 可观测性:确保每个参数都能被数据激励到

下一章,咱们会讲具体的操作流程和代码实现。到时候我会分享一个我常用的 Python 脚本,直接跑一遍就能出结果。