用“卡尔曼滤波器”来处理“加速度计数据”(加速度,陀螺仪调试)
关键词:SCA3000,ADIS16255,加速度计、陀螺仪数据计算处理算法,卡尔曼滤波器、扩
展卡尔曼滤波器。关键词:加速度计和陀螺仪驱动,SCA3000,ADIS16250,ADIS16255,
温度、重力加速度、角速度计算方法,SPI 总线,SCA3000 模式设置(Mode)、参数设置、
读写,ADIS16255 读写、参数设置,陀螺仪数据处理 SCA3000,ADIS16255,加速度计、陀螺
仪数据计算处理算法、调试结果,航空模型飞行,无人驾驶飞机,三维数据处理,XYZ 角
度,水平垂直仪器装置。
最近专注于 GPS 定位的精度算法研究。众所周知 GPS 有一定的误差,如果 GPS 的误差在
10 米范围的话,远超过了车道的宽度,要想定位在车道上,确实是个难度。可以利用固 定
GPS 基站的方式来校准精度,但还有一个问题,芯片提供的定位周期最快只有一秒。就是
说,这一秒范围内的轨迹是空白的,当速度达到一定程度的时候,一秒的距离已经很远,甚
至已经完成了一个快速小角度偏转动作。那么这样的话精度将会大大降低。
为了填补这一秒中的轨迹空白,于是我们增加了加速度计和陀螺仪芯片,利用两者数据推算
轨迹,将轨迹周期提高到 13 毫秒。陀螺仪内置有 DSP 功能模块,精度相当的高。但加速度
计在物体运动的时候,有很大的噪声。去掉这些噪声是必须的,我们选择了卡尔曼滤波器。
经过滤波以后的,使得噪声有了很大的收敛。给数据的准确性提升了一个很大的台阶。
卡尔曼的 5 个基本公式:
X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)
P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)
Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)
P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)
有关其卡尔曼原理这里不再解释,有兴趣的可以搜索来看看。
附图 1:
发动机启动后 0 速度的的加速度波形(上部分和中间部分):
X 轴:红色 Y 轴:绿色,上部分为原始的加速度计波形,中间部分绿色的为经过卡尔曼滤
波后的波形。
附图 2:运动和转弯时的波形(上部分和中间部分):
X 轴:红色 Y 轴:绿色,上部分为原始的加速度计波形,中间部分绿色的为经过卡尔曼滤
波后的波形。
在进行速度推算时,我们有一个要求,在直线运动情况下“推算速度”无限逼近 GPS 速度,
在转弯时“推算速度”无限接近用加速度数据计算的速度值(相当于测量值)。也就是说我们
需要一个系数,当加速度变化越大,其值就越大,反之就越小。于是我们设计了一个公式:
K * K = (A * A) / (A * A + Q * Q)
其中 K 就是系数因子,A 是加数据数据值,Q 是加速度数据在 0 加速运动时的噪声,从经
验数据看,我们的芯片在 0 加速运动时的噪声范围是 0~30 之间,于是我们取 Q 值=20;
由于我们要求无限接近,所以在计算 K 之后,还应再加一个公式:
K = K + (1 - K) * K
我们可以看下图来解释这个公式:
附图 2:速度推算系数因子的波形。
纵向 K 值,横向 A(加速度)值
蓝色 K 值计算步骤为:第 1 步:√(A * A) / (A * A + Q * Q);
红色 K 值计算步骤为:第 1 步:√(A * A) / (A * A + Q * Q),第 2 步:K = K + (1 - K) * K;
绿色 K 值计算步骤为:第 1 步:√(A * A) / (A * A + Q * Q),第 2 步:K = K + (1 - K) * K;第
3 步:K = K + (1 - K) * K;
('√'是开平方)
黑色虚线:A=20 的界限
这个公式的波形接近于对数波形,从图中我们看出,红色 K 值波形是最接近我们要求的波
形,因为其曲线在 A>30 以后接近 1,就是是无限大,30 之前是一个小于 1 的弧线,刚好符
合加速度计的噪声范围要求。
陀螺仪:
由于 SCA3000 和 ADIS16255 的 SPI 时序有些差异,因此只能采取模拟 SPI 的方式进行通讯。
本驱动,下载后可以根据 MCU 具体的引脚定义进行修改。16255 需要进行设置以后,偏差
小了很多。SCA3000 基本上不需要进行参数设置。
附图 1,陀螺数据处理后对比图片:
上部分(绿色)曲线为以陀螺仪数据变化量为纵向刻度,离中线最近的开始,依次为 1 次平
均值滤波,2 次平均值滤波,3 次平均值滤波,4 次平均值滤波。
中间部分为陀螺仪原值曲线,底部部分(红色)为多次平均值滤波后的陀螺仪数据值。
左转弯后再右转弯回到原来方向,不超过 5 度
附图 2,陀螺数据处理图片:
多次转弯图,不超过 5 度