3. 传感器标定:六面法标定加速度计、角速率标定、椭球拟合磁力计标定、温漂补偿

传感器标定,说白了就是给传感器“纠偏”。

你想想看,一个加速度计,静止放在桌上,理论上只感受到重力。但实际读出来的数,三个轴往往不是(0,0,g)。为什么?因为芯片有零偏,有刻度误差,还有安装歪斜。我刚开始做飞控那会儿,就吃过这个亏——传感器没标定,飞控悬停都抖得跟筛子似的。

3.1 六面法标定加速度计

六面法,名字听着唬人,其实原理很简单。就是把加速度计分别朝六个方向摆放,记录每个方向的读数,然后反算出零偏和刻度系数。

具体哪六个方向?

  • X轴朝上、X轴朝下
  • Y轴朝上、Y轴朝下
  • Z轴朝上、Z轴朝下

每个方向,理论上加速度计感受到的矢量是已知的。比如Z轴朝上,理论值就是(0, 0, +g)。实际读数是(ax, ay, az)。

我个人习惯用最小二乘法来拟合。假设模型是:

a_meas = K * a_true + b

其中K是对角矩阵(刻度系数),b是零偏。六个方程,六个未知数,解起来很稳。

核心公式:

对于每个方向i,有:

|a_meas_x|   |Kx  0   0 | |a_true_x|   |bx|
|a_meas_y| = |0   Ky  0 | |a_true_y| + |by|
|a_meas_z|   |0   0   Kz| |a_true_z|   |bz|

六个方向联立,解出Kx, Ky, Kz, bx, by, bz。

我的经验:

摆放时尽量让每个轴对准重力方向。我曾经用水平仪辅助,精度能到0.01g以内。如果随便一放,标定出来误差会很大。

3.2 角速率标定

陀螺仪的标定,核心是零偏和刻度。零偏好办,静止时采集几百个数据取平均就行。刻度标定就麻烦一点。

为什么?因为陀螺仪测的是角速度,你需要一个已知的角速度源。我常用的方法有两种:

  • 转台法: 用精密转台,给一个固定转速,比如100°/s,然后对比读数。
  • 积分法: 让飞控绕某个轴旋转固定角度(比如360°),积分角速度得到角度,反推刻度。

我个人更推荐转台法,精度高。但如果没有转台,积分法也能凑合。注意积分法对零偏很敏感,零偏没标好,积分结果会漂。

避坑指南:

我曾经用积分法标定,结果发现每次转360°,积分出来的角度总是差几度。查了半天,原来是陀螺仪的零偏在温度变化时漂了。所以,角速率标定最好在恒温环境下做。

3.3 椭球拟合磁力计标定

磁力计标定,和加速度计不太一样。加速度计的理论值是个球面(半径为g),而磁力计的理论值是个椭球面。

为什么是椭球?因为地磁场本身是均匀的,但传感器周围的铁磁物质会扭曲磁场,导致三个轴的灵敏度不一样,还有软磁和硬磁干扰。

硬磁干扰,说白了就是传感器附近有永磁体或电流,产生一个固定的偏置磁场。软磁干扰,则是铁磁物质改变了磁力线的走向。

标定方法:

  1. 拿着飞控在空中画“8”字,让磁力计采集各个方向的数据。
  2. 这些数据点会落在一个椭球面上。
  3. 用最小二乘法拟合椭球,得到中心点(硬磁干扰)和半轴长度(软磁干扰和刻度)。

椭球方程:

(x - cx)^2 / a^2 + (y - cy)^2 / b^2 + (z - cz)^2 / c^2 = 1

其中(cx, cy, cz)就是硬磁补偿值,a、b、c是刻度系数。

代码示例(Python伪代码):

import numpy as np

# 采集的数据:N x 3 矩阵
data = np.loadtxt('mag_data.txt')

# 椭球拟合
def ellipsoid_fit(data):
    # 构造矩阵 A 和 b
    # 解最小二乘
    # 返回中心点和半轴
    pass

center, radii = ellipsoid_fit(data)
print("硬磁补偿:", center)
print("刻度系数:", radii)

我的经验:

画“8”字时,尽量覆盖所有姿态。我见过有人只在一个平面内转,结果椭球拟合出来的Z轴补偿值完全不对。记住,三维空间要转够。

3.4 温漂补偿

温漂,是所有传感器的通病。温度一变,零偏和刻度都会变。尤其是陀螺仪的零偏,温度每变化1°C,可能漂移0.01°/s。飞控飞个十分钟,温度升个20°C,零偏就漂了0.2°/s,积分出来的角度误差会累积到好几度。

温漂补偿的常用方法:

  • 查表法: 在温箱里采集不同温度下的零偏,做成温度-零偏对照表。飞控运行时,根据当前温度查表插值。
  • 多项式拟合: 用二次或三次多项式拟合零偏随温度的变化曲线。
  • 在线估计: 飞控静止时,实时更新零偏估计。但这个方法在运动时不能用。

我个人习惯用查表法加线性插值。简单,可靠,计算量小。

避坑指南:

我曾经偷懒,只做了陀螺仪的温漂补偿,没做加速度计的。结果冬天室外飞行时,加速度计的零偏漂了,导致姿态估计不准,飞控直接翻车。记住,加速度计和磁力计同样需要温漂补偿。

知识体系总览

下面这张图,把传感器标定的核心逻辑串起来了。你可以看到,加速度计、陀螺仪、磁力计各有各的标定方法,但最终都指向一个目标:让测量值更接近真实值。

传感器标定知识体系 传感器标定 加速度计标定 角速率标定 磁力计标定 六面法 最小二乘拟合 转台法 / 积分法 零偏 + 刻度标定 椭球拟合 硬磁 + 软磁补偿 温漂补偿(查表/多项式)

嗯,到这里,传感器标定的核心内容就讲完了。六面法、角速率标定、椭球拟合、温漂补偿,每一个都是实战中绕不开的坎。我个人觉得,标定这件事,花的时间越多,飞控飞得越稳。别偷懒,老老实实做。