1 陀螺仪数据校准
1.1 原理
一款飞控上的传感器是需要进行校准的,比如这里讲的陀螺仪。目前大多数的陀螺校准其实就是去掉零点偏移量,采集一定的数据,求平均,这个平均值就是零点偏移,后续飞控所读的数据减去零偏即可,如下所示:
这里乘以0.005其实就是除以200,表示采集的200个数据。
1.2 目的
零点偏移对陀螺、进而对飞控的影响是巨大的,举个例子,加入x轴有0.2度/秒的零偏,那通过这个x轴计算出来的角度,也不会是从0度开始,造成姿态角有偏差,所以飞行过程中会很难控水平。
1.3 一般方法
陀螺的校准比较简单,一般上电后,自己执行即可,然后保存这个零偏,另每次上电得到的零偏都不同,所以需要每次都校准一次。PX4原生飞控,这点做得很蠢,在QGC地面站的传感器校准页面中,需要用户自己点击进行校准,不会自动执行,当然这个很好改。
1.4 进阶
考虑到如果是小白用户,或者没细看说明书,通常有陀螺上电自动校准的话,是需要通电后保持静止的,否则校准得到的是一个错误值,所以最好能识别飞行器是否在静止状态,然后再进行校准。方法也很简单,就是判定两次采集的数据差的和是否超过一定阈值,超过阈值,说明在运动中,这里就不启用校准,LED红灯提示,飞控代码在此不断循环待机,直至静止状态。
2 陀螺的误差分析
作为飞控系统上的核心传感器,陀螺仪的重要程度不言而喻。飞控的姿态数据很大程度上需要依赖陀螺仪的数据质量。但是低成本的MEMS传感器,比如飞控上常用的mpu6050/mpu6000等,在使用过程中,误差一直伴随着测量值,所以这里就简单谈谈有哪些误差,以及处理的方法。
MEMS惯性器件的误差一般分成两类:系统性误差和随机误差。系统性误差本质就是能找到规律的误差,所以可以实时补偿掉,主要包括常值偏移、比例因子、轴安装误差等。但是随机误差一般指噪声,无法找到合适的关系函数去描述噪声,所以很难处理。一般采用时间序列分析法对零点偏移的数据进行误差建模分析,可以用卡尔曼滤波算法减小随机噪声的影响。
从物理意义和误差来源分,也把 MEMS 陀螺仪漂移分为常值漂移、角度随机游走、速率随机游走、量化噪声和速率斜坡等。
2.1 陀螺数据噪声成分辨识
要对陀螺信号进行预处理首先需要对其噪声成分进行辨识。Allan方差分析法是目前最常用的陀螺噪声辨识方法之一。由于Allan方差分析是通过调节Allan方差滤波器带宽,对功率谱进行细致分割,能够辨识出多种不同类型的随机过程误差,并定量分离各项误差系数,而且算法上操作简单、便于计算,在陀螺噪声辨识方面优势明显。
Allan方差实质上就是通过求取整个信息采集过程中相邻时间段的方差形式来对信号在整个时间段内的稳定情况进行衡量的过程。Allan方差的双对数曲线的典型形式以及不同斜率段的曲线代表的噪声成分如下图:
用传感器静止采集数据10000s左右,采用周期是100Hz。allan方差结果如下图所示。
所以这里的MEMS陀螺所包含的噪声成分主要有:角度随机游走、相关噪声、速率随机游走,而其中代表零偏不稳定性的斜率为0的部分曲线很短,可以认为两个陀螺中零偏不稳定性影响都相对较小,所以前面进行的陀螺校准得到的零偏可以认为是一个常值。
2.2 一个简单的模型
这里描述一个简单的模型,认为陀螺的数据误差主要是零偏和白噪声,如下所示:
最后得到的参数:
模型对比如下图:
放大部分:
所以两者模型,基本一致的,在一般应用中,可以满足需求。
3 陀螺的温飘特性
MEMS的陀螺仪的零偏是会受到环境温度的影响产生变化的,直观感受就是,笔者曾经在夏天,进行飞行测试时,由于飞控上面无遮挡,当飞行一段时间后,飞控不能回平了,也就是说,温度变化的情况下,解算的姿态角数据有偏差了,本质是上电校准的零偏不能再用了,如下图的数据:
虽然极端天气下飞行的机会不多,但是一款成熟的飞控产品还是要考虑这个因素的,比如在高温、极端寒冷条件下。
目前解决这个问题的方法有两种:一种是传感器数据保持恒温输出,如下图的DJI的拆机图,IMU模块有个大电阻进行加热,使得传感器的工作温度在一恒定值。
另外一种就是事先进行温飘标定,即不同温度下,拟合出补偿的数据。不过,这种方法也较为麻烦,比如飞控量产,需要每一个都这么做;其次就是时间长了,标定会有偏差的,所以,能硬件解决的问题,千万不要让算法去做。
4 陀螺的滤波
飞行器在实际飞行时,震动是相当剧烈的,所以不可避免对传感器数据会有影响,当然,IMU中受影响最大的是加速度计数据,具体的以后会单独讲。就笔者的经验来看,陀螺的数据需要滤波的必要性不是特别大,除非数据相当糟糕,一般MPU6000/6050自带的低通滤波开启就可以了。
4.1 怎么判定是否要加滤波?
判定是否需要滤波的话,首先可以采集原始数据,看看波形是否平滑,也可以在多轴的角速度飞行模式进行测试,如果PID参数调整的足够好,但还是有些高频的抖动,可以尝试先滤波,再调参。
上图的数据传输的质量比较差,所以将就着看吧,红色是滤波后的,效果是比较明显的。
用滤波器的话有一点要注意:滤波器是会造成延迟的,上篇文章提到过,延迟对控制系统的影响是很大的,所以千万不能为了追求滤波效果,造成大的延迟,通常不要超过一个周期最好。
4.2 用什么样的滤波器?
一阶低通效果就足够了,当然也可以设计IIR、FIR之类的。
4.3 那一阶低通的参数如何取?
简单的笨办法就是写一个测试一个,看哪个参数好,虽然蠢了点,多花了些时间,但也是最有效的办法。
当然,也可以事先计算。举个例子,一般飞行器陀螺低通滤波的经验值,带宽是30hz左右,所以就按30hz来计算。
一阶低通滤波器的系数表达式是:
这里,T表示采样周期,fc表示截止频率,即设置的带宽30hz,这里得到最终的滤波系数为0.2739。
5 还可以对陀螺数据做什么处理?
上述只是简单版,对于一般的飞控而言,做了这些工作其实足够了,当然也可以继续深挖下去。所以要不要处理随机误差?原先文章写了该部分,纯属装X,现在笔者认为可以不用处理,实际没多大用。
随机误差主要是同随常数、一阶马尔可夫过程和白噪声组成的,惯性器件的随机常数漂移在IMU 启动并进入正常工作状态后一般保持不变。因此,随机漂移是信号漂移中的未知原因引起的,特点是其均值为零,在样本数据达到一定的规模的基础上,对惯性器件不产生影响。在实际应用中,一般不会考虑这个,只对系统性的确定性误差进行补偿。
一般情况下的陀螺仪误差模型如下:
其中,wi为陀螺输出理想值,wx为陀螺仪测量值,bi、si分别为陀螺仪输出的零偏与比例因子,M,H 分别为三轴不正交误差矩阵与加速度对陀螺影响误差矩阵。
从公式中来看,比较关键的就是零偏、输入输出的比例因子、安装误差矩阵(尤其是单轴陀螺仪组合的3轴模块)。
零偏前面介绍了如何获取,这里介绍如何获得比例因子和安装误差矩阵。
实际应用中,厂家需要IMU校准平台进行辅助处理,在出厂前进行处理。
将陀螺仪在水平转台上每个轴都转5圈,理想情况下的输出应该是:
比如x轴旋转5圈,应该是3600度,而实际测量值积分得到的却是3500度,则可以得到x轴的比例因子为3600/3500,约为1.02,同理可得其他两个轴的比例因子。
而安装误差矩阵如何求得?
还是转了5圈,实际的输出矩阵可能是:
假设安装误差矩阵M
则,存在这样一个关系,C = MB ,即
可得:
总结:
1、陀螺仪的误差校准主要是处理确定性误差,主要是零偏、比例因子、安装误差等,尤其是零偏的处理,会影响到姿态估计的准确性。
2、取零偏的算法最好考虑是否静止的状态,再进行校准处理。
3、陀螺仪的温漂也需要进行处理,使其适应各种温度环境下的飞行。
4、至于滤波,看具体情况,一般450轴距的飞行器,滤波带宽设置成30hz即可。滤波算法基本大同小异,普通的一阶低通滤波器即可满足需求。