飞控算法从入门到精通 035:姿态解算的误差分析与补偿从一次炸机说起去年夏天,我调试一架四轴时遇到一个诡异现象:悬停时飞机每隔十几秒就会突然偏航10度,然后自己修正回来。IMU数据看着正常,磁力计校准也做了三遍。折腾了两天,最后发现是姿态解算中一个毫弧度的误差在积分过程中被放大,导致偏航角周期性漂移。那次炸机让我明白——姿态解算的误差不是“有没有”的问题,而是“怎么藏”的问题。误差从哪来?三个源头一个都不能放过传感器本身的“原罪”加速度计和陀螺仪,这两个家伙天生就有毛病。加速度计怕振动,陀螺仪怕温漂。你去看任何一款MEMS传感器的数据手册,零偏稳定性、角度随机游走、刻度因子误差这些参数,厂家写得清清楚楚,但很少有人真的去算它们对姿态的影响。陀螺仪的零偏误差,哪怕只有0.1度/秒,积分10秒就是1度。更麻烦的是,这个零偏不是常数——温度变化、电源波动、甚至PCB板弯曲都会让它变。我见过最离谱的一次,一块飞控板在太阳下晒了五分钟,陀螺仪零偏漂了0.3度/秒。加速度计的问题更隐蔽。它测量的是比力,不是重力。当飞机加速飞行时,加速度计输出的方向根本不是重力方向。很多新手在这里栽跟头——以为加速度计永远指向地心,结果大机动飞行时姿态直接崩掉。算法本身的“硬伤”互补滤波和卡尔曼滤波,这两派各有各的坑。互补滤波简单,但它的误差来源是“相位滞后”。你调高陀螺仪权重,动态响应快了,但高频噪声也跟着进来;调高加速度计权重,噪声压住了,
035、姿态解算的误差分析与补偿
飞控算法从入门到精通 035:姿态解算的误差分析与补偿从一次炸机说起去年夏天,我调试一架四轴时遇到一个诡异现象:悬停时飞机每隔十几秒就会突然偏航10度,然后自己修正回来。IMU数据看着正常,磁力计校准也做了三遍。折腾了两天,最后发现是姿态解算中一个毫弧度的误差在积分过程中被放大,导致偏航角周期性漂移。那次炸机让我明白——姿态解算的误差不是“有没有”的问题,而是“怎么藏”的问题。误差从哪来?三个源头一个都不能放过传感器本身的“原罪”加速度计和陀螺仪,这两个家伙天生就有毛病。加速度计怕振动,陀螺仪怕温漂。你去看任何一款MEMS传感器的数据手册,零偏稳定性、角度随机游走、刻度因子误差这些参数,厂家写得清清楚楚,但很少有人真的去算它们对姿态的影响。陀螺仪的零偏误差,哪怕只有0.1度/秒,积分10秒就是1度。更麻烦的是,这个零偏不是常数——温度变化、电源波动、甚至PCB板弯曲都会让它变。我见过最离谱的一次,一块飞控板在太阳下晒了五分钟,陀螺仪零偏漂了0.3度/秒。加速度计的问题更隐蔽。它测量的是比力,不是重力。当飞机加速飞行时,加速度计输出的方向根本不是重力方向。很多新手在这里栽跟头——以为加速度计永远指向地心,结果大机动飞行时姿态直接崩掉。算法本身的“硬伤”互补滤波和卡尔曼滤波,这两派各有各的坑。互补滤波简单,但它的误差来源是“相位滞后”。你调高陀螺仪权重,动态响应快了,但高频噪声也跟着进来;调高加速度计权重,噪声压住了,