对于MPU6050来讲,加速度计对飞行器的加速度比较敏感,取瞬时值计算倾角误差比较大;而陀螺仪积分得到的角度则不受加速度的影响,但是随着时间增加,陀螺仪的积分漂移和温度漂移带来的误差比较大,因此需要用互补滤波来弥补这两个传感器的缺点。
互补滤波即是在短时间内采用陀螺仪的角度作为最优,长时间用加速度计采样的角度更加准确,通过这两个的值进行互补。那么滤波在哪里?那就是加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器会根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号。加速度计测倾角,动态响应的速度比较慢,在高频时信号不可用,所以通过低通滤波抑制高频。陀螺仪响应快,积分后测倾角,但是因为零漂,积分误差,低频信号不好,所以通过高通滤波抑制低频。加速度计低频特性比较好,因为加速度的角度可以直接算出来,没有累计误差,所以长时间比较准。而陀螺仪长时间后由于积分误差的累加,会造成输出误差比较大,甚至无法使用,所以互补滤波法根据他们的特性取长补短进行姿态结算,每过一段时间就让加速度计去校准一下陀螺仪。
互补滤波计算公式:
陀螺仪积分角度 += 角速度 * dt;
融合角度 = 陀螺仪权重 * 陀螺仪积分角度 + (1 - 陀螺仪权重)* 加速度角度
代码如下:
参考文章: http://www.mamicode.com/info-detail-2178824.html?tdsourcetag=s_pcqq_aiomsg