简单介绍一下用加速度传感器修正角速度传感器(陀螺仪)累计误差的原理

内容原作者 OURAVR - feng_matrix

陀螺仪输出角速度,是瞬时量,一般角速度姿态平衡上是不能直接使用,多数惯导系统控制需要角度信号
所以需要角速度与时间积分计算角度,得到的角度变化量与初始角度相加,就得到目标角度,其中积分时间Dt越小,输出角度越准
但陀螺仪的原理决定了它的测量基准是自身,并没有系统外的绝对参照物,加上Dt是不可能无限小
所以积分的累积误差会随着时间流逝迅速增加,最终导致输出角度与实际不符,所以陀螺仪只能工作在相对较短的时间尺度内。

加速度测量的是重力方向,有系统外绝对参照物“重力轴”,在无外力加速度的情况下,能准确输出ROLL/PITCH两轴姿态角度
并且此角度不会有累积误差,在更长的时间尺度内都是准确的。但是加速度传感器测角度也有缺点
加速度传感器实际上是用MEMS技术检测惯性力造成的微小形变,而惯性力与重力本质就是一个东东
所以它就不会区分重力加速度与外力加速度,当系统在三维空间做变速运动时,它的输出就不正确了。
很可惜,多数需要惯导姿态角的系统,都不是工作在静止状态下。

所以在没有其它参照物的基础上,要得到较为真实的姿态角,就要扬长避短,结合两者的优点,摈弃其各自缺点
最简单的办法就是加权,设计算法在短时间尺度内增加陀螺仪的权值,在更长时间尺度内增加加速度权值,这样系统输出角度就更真实了

其实MK四轴的平衡算法也是这样,首先对陀螺仪做PI运算,其中I的真正含义就是积分反演角度
有了陀螺仪PI算法,四轴就有了瞬时增稳,就可以遥控飞了,但是它不会永远水平
由于累积误差的作用,很快中立点就不是水平位置了,这时候就需要用加速度不断的纠正陀螺仪积分误差。

你可以看到MK算法中有根据加速度方向不断把积分量I递减清零的代码,就是这个融合算法的核心了
MK立足于一个高级航模玩具,为了在低成本8位单片机上运行,不去显式的计算姿态角,只把校正后的PI值输出负反馈控制电机了
这样的好处是基本上只用整型算法就能完成运算,而要显式的计算姿态角,更专业的做法就是KALMAN滤波显式求解姿态
卡曼滤波也是在对历史数据积分,并且可以同步融合陀螺仪与加速度数据,陀螺仪与加速度贡献权值还可以通过滤波参数调整
所以它就成了惯性数据处理的经典算法,他的缺点是浮点运算量较大,对系统资源要求较高
很少有人在资源较少的8位单片机上玩卡曼滤波的。

总结一下就是:
PITCH/ROLL角速度积分->PITCH/ROLL姿态角,再结合加速度纠正累积误差
YAW角速度积分->方向角,再结合地磁传感器、GPS纠正累积误差

当然导航并非只能用加速度传感器,其它有绝对参照物的传感器都可以
比如人除了耳蜗外,还有视觉,根据身边的景物人也不会有累积误差导致摔跤的问题
但一般人闭上眼睛,即便有耳蜗能保持平衡,摔跤可能性也会增加。
还有其它传感器,比如红外,航模上有种德国红外平衡仪,就是检测地平线上下,红外背景强度不同来保证绝对姿态的。
卫星上以前还听说过星光导航的,应该也是用它来作为一个相对静止的参照物。

你可能感兴趣的:(51单片机)