基于互补滤波的飞行器姿态解算

合集下载

基于四元数二阶互补滤波的四旋翼姿态解算

基于四元数二阶互补滤波的四旋翼姿态解算

基于四元数二阶互补滤波的四旋翼姿态解算伏家杰;周翟和;尹辉;陈燕【摘要】姿态解算是四旋翼飞行器的关键技术,其精度直接影响飞行器控制的可靠性和稳定性.针对当前常用一阶互补滤波算法中阻带衰减速率慢和陀螺仪常值漂移产生的稳态误差问题,通过增加积分环节,设计了一种基于四元数的二阶互补滤波算法,能更好地利用加速度计和磁力计的稳态信息有效补偿陀螺仪常值漂移,从而减少姿态解算的累积误差.仿真结果表明,该算法具有更好的稳定性,提高了系统的姿态解算精度.通过飞行器真实飞行数据对算法进行了实验验证,结果显示姿态的俯仰角、横滚角精度<1°,偏航角精度<2°,能很好地满足飞行器控制系统对姿态解算的精度要求.【期刊名称】《机械制造与自动化》【年(卷),期】2019(048)002【总页数】5页(P169-172,176)【关键词】姿态估计;四元数;互补滤波;四旋翼飞行器;MEMSIMU【作者】伏家杰;周翟和;尹辉;陈燕【作者单位】南京航空航天大学自动化学院,江苏南京211106;南京航空航天大学自动化学院,江苏南京211106;南京航空航天大学自动化学院,江苏南京211106;南京航空航天大学自动化学院,江苏南京211106【正文语种】中文【中图分类】V211.80 引言四旋翼飞行器姿态解算的精度和速度将直接影响飞行器控制算法的稳定性、可靠性和实现的难易程度。

所以姿态解算是四旋翼飞行器控制实现的前提[1-2]。

随着微机电技术和计算机技术的发展,由于陀螺仪和加速度计组成的低成本惯性测量单元(IMU)具有体积小、重量轻、功耗低、性价比高等特点,在四旋翼飞行器姿态的测量系统得到普遍应用[3-4]。

本文研究的四旋翼飞行器姿态测量传感器主要由低成本微机电系统(MEMS)陀螺仪、加速度计和磁力计组成。

本文采用嵌入式微控制器和低成本IMU组成姿态测量系统,采用四元数方法描述系统运动模型,提出了一种基于四元数的二阶互补滤波算法。

一种基于改进四元数二阶互补滤波的飞行器姿态解算方法[发明专利]

一种基于改进四元数二阶互补滤波的飞行器姿态解算方法[发明专利]

专利名称:一种基于改进四元数二阶互补滤波的飞行器姿态解算方法
专利类型:发明专利
发明人:周翟和,钟雨露,伏家杰,曾庆喜,孔德明,田祥瑞,游霞,陈燕
申请号:CN201810285907.5
申请日:20180329
公开号:CN108827299A
公开日:
20181116
专利内容由知识产权出版社提供
摘要:本发明提出的一种基于改进四元数互补滤波的飞行器姿态快速收敛方法,属于数字滤波和多传感器数据融合技术领域,主要作用于飞行器姿态解算系统中,使之获得准确的姿态角便于进行后续姿态控制。

该方法采用加速度计和磁力计的误差值经过PI调节后对陀螺仪进行补偿和校正,并在飞行器的启动阶段自适应的调节滤波器截止频率,用补偿后的陀螺仪数据去更新四元数并归一化,再用更新后的四元数计算出姿态变换矩阵并解算出姿态角。

本发明不仅具有传统互补滤波不需对噪声精确建模的优点,而且飞行器初始姿态收敛速度快,获得精确姿态角,同时减少滤波算法计算量,实现飞行器的快速平稳启动,增强其稳定性能。

申请人:南京航空航天大学
地址:211106 江苏省南京市秦淮区御道街29号
国籍:CN
更多信息请下载全文后查看。

互补滤波算法姿态解算

互补滤波算法姿态解算

互补滤波算法姿态解算互补滤波算法是一种常用的姿态解算方法,广泛应用于飞行控制系统、惯性导航系统和姿态测量装置等领域。

该算法通过融合加速度计和陀螺仪的测量数据,实现对目标物体的姿态估计。

下面将详细介绍互补滤波算法的原理和应用。

一、互补滤波算法原理互补滤波算法主要基于两个观察结果:加速度计测量的重力矢量与陀螺仪测量的角速度。

加速度计测量的重力矢量可以提供一个参考方向,而陀螺仪测量的角速度可以提供连续更新的姿态角度信息。

互补滤波算法通过将这两个信息进行互补,实现对目标物体的姿态解算。

互补滤波算法的核心思想是将陀螺仪测量的角速度逐步累加,计算出目标物体的旋转角度,并将该角度作为姿态角。

由于陀螺仪的测量存在漂移等误差,随着时间的增加,角度积分的误差会越来越大。

为了避免这个问题,互补滤波算法通过加速度计测量的重力矢量进行补偿。

具体地,互补滤波算法使用一个权衡参数α(取值范围为0到1)来控制加速度计和陀螺仪的权重。

在每次更新姿态角时,新的姿态角为上一次的角度加上陀螺仪积分得到的角度乘以α,再加上加速度计测量的角度乘以1-α。

姿态角更新公式如下:θ(n) = α * (θ(n-1) + Δθ(n)) + (1-α) * θ_acc(n)其中,θ(n)为当前的姿态角,θ(n-1)为上一次的姿态角,Δθ(n)为陀螺仪积分得到的角度变化,θ_acc(n)为加速度计测量的角度。

二、互补滤波算法应用飞行器的姿态控制需要实时获取飞行器的姿态信息,并根据预设的姿态稳定控制侧滑、上升/下降等动作。

互补滤波算法可以通过融合加速度计和陀螺仪的测量数据,快速准确地获取飞行器的姿态信息。

在飞行器的姿态控制中,将陀螺仪测量的角速度作为连续更新的角度信息,用于控制飞行器的姿态稳定。

同时,通过加速度计测量的重力矢量可以提供一个参考方向,以补偿陀螺仪测量的角速度的误差。

1.初始化姿态角为加速度计测量的角度。

2.按照一定的时间间隔,读取加速度计和陀螺仪的测量数据。

基于自适应互补滤波的四旋翼飞行器姿态解算

基于自适应互补滤波的四旋翼飞行器姿态解算

基于自适应互补滤波的四旋翼飞行器姿态解算
陈华胄;谌海云
【期刊名称】《测控技术》
【年(卷),期】2018(037)006
【摘要】在四旋翼无人机中,姿态传感器采用捷联式惯导惯性检测单元(IMU),其中包括加速度计、陀螺仪、电子罗盘和空气压力高度计.这些传感器在工作过程中存在温度漂移以及噪声干扰,为了得到准确的姿态数据,首先建立了传感器四元数模型,在频域中设计互补滤波器,并设计了PI自适应补偿系数,对传感器数据进行融合、补偿和修正,有效地避免了系统模型误差对姿态估计的影响.修正后的角速度通过一阶龙格-库塔法、四元数算法完成飞行器的姿态解算.传统互补滤波器在噪声大时滤波效果不理想,故加入PI控制,形成一种效果更好的自适应滤波算法,根据仿真结果,该算法滤波后的信号比传统互补滤波的结果更加平滑,更接近理想波形.
【总页数】5页(P81-84,89)
【作者】陈华胄;谌海云
【作者单位】西南石油大学电气信息学院,四川成都610500;西南石油大学电气信息学院,四川成都610500
【正文语种】中文
【中图分类】TP13
【相关文献】
1.基于模糊自适应互补滤波的姿态解算算法 [J], 陈雷;卞鸿巍;
2.互补滤波算法在四旋翼飞行器姿态解算中的应用 [J], 万晓凤;康利平;余运俊;林伟财
3.基于自适应显式互补滤波的姿态解算方法 [J], 孙金秋;游有鹏;傅忠云
4.基于模糊自适应互补滤波的姿态解算算法 [J], 陈雷;卞鸿巍
5.基于互补滤波器的四旋翼飞行器姿态解算 [J], 梁延德;程敏;何福本;李航
因版权原因,仅展示原文概要,查看原文内容请购买。

姿态解算方法(1)_一种互补滤波方法

姿态解算方法(1)_一种互补滤波方法

姿态解算⽅法(1)_⼀种互补滤波⽅法姿态解算⽅法(1)_ ⼀种互补滤波⽅法本⽂内容主要是参考《An efficient orientation filter for inertial and inertial/magnetic sensor arrays 》此篇论⽂,由于其在普通飞控中的⼴泛运⽤,所以这⾥简单记录学习感受以期后续详细思索。

当然也是因为这篇⽐较易懂,正好可以锻炼⼀下我捉襟见肘的表述能⼒。

写到这⾥可能已经开始被骂了。

⼏个较好的博⽂链接如下:(1)(2)这是在博客园的第⼀篇博⽂,想来⾃⼰⼀直攒在电脑⾥的东西,不仅容易被弄没了,也没办法被⼤家纠错批评,故也就不在乎好坏把想到的都写下来。

⾔归正传,⾸先,需要了解下四元数的知识,这在维基(3)和(1)中都有很好的解释了,这⾥为了争取篇幅讲述算法核⼼部分就不再赘述。

(3)⾓加速度的事那么进⼊关于姿态确定的部分。

三轴陀螺仪模块可以测量传感器所在平⾯的⾓加速度,⼀般来说MPU6050模块返回的是三个⾓速度值。

如果初始姿态是已知的,时间的计量⼜是准确的,那么就可以积分出姿态了。

可惜的是⾓速度的测量准确度实在是不能积分出⼀个准确的位置值。

不过这⾥还是说⼀下这个积分过程。

sω=0ωxωyωzS E ˙q=12SEˆq⊗Sωsω为传感器获得的⾓速度值,再次提醒这⾥的值可能是不准确的。

SEˆq是表⽰传感器相对于地⾯坐标系的SO(3)变换四元数的估计,这⾥⽤于表⽰传感器姿态的估计。

⊗是四元数的⼀种运算⽅式,在上⽂的参考⽂献中可以找得到的。

差分的形式可以表⽰为:δS E qω,t=12SEˆqt−1⊗SωtSE qω,t=S E ˆqt−1+δSE qω,tΔtΔt是两次预测之间的时间差,准确的说是传感器上⼀次数据和这⼀次数据获取时间差。

其他的部分和连续的形式对应就不多说了。

基于场⽅向观测的姿态求解⾸先把姿态观测问题看做是⼀个求尽可能满⾜观测结果的姿态的优化问题。

基于互补滤波的飞行器姿态解算

基于互补滤波的飞行器姿态解算

姿态解算一、主线姿态表示方式:矩阵表示,轴角表示,欧拉角表示,四元数表示。

惯性测量单元IMU(Inertial Measurement Unit):MPU6050芯片,包含陀螺仪和加速度计,分别测量三轴加速度和三轴角速度。

注意,传感器所测数据是原始数据,包含了噪声,无法直接用于飞行器的姿态解算,因此需要对数据进行滤波。

滤波算法:非线性互补滤波算法,卡尔曼滤波算法,Mahony互补滤波算法。

二、知识点补充加速度计和陀螺仪加速度计:加速度计,可以测量加速度,包括外力加速度和重力加速度,因此,当被测物体在静止或匀速运动(匀速直线运动)的时候,加速度计仅仅测量的是重力加速度,而重力加速度与R坐标系(绝对坐标系)是固连的,通过这种关系,可以得到加速度计所在平面与地面的角度关系也就是横滚角和俯仰角。

把加速度传感器水平静止放在桌子上,它的Z轴输出的是1g的加速度。

因为它Z轴方向被重力向下拉出了一个形变。

可惜的是,加速度传感器不会区分重力加速度与外力加速度。

所以,当系统在三维空间做变速运动时,它的输出就不正确了,或者说它的输出不能表明物体的姿态和运动状态。

陀螺仪:陀螺仪测量角速度。

陀螺仪模型如图1所示,陀螺仪的每个通道检测一个轴的旋转。

图1[引自网络]上图中,Rxz是R在XZ面上的投影,与Z轴的夹角为Axz。

Ryz是R在ZY面上的投影,与Z轴的夹角为Ayz。

陀螺仪就是测量上面定义角度的变化率,换句话说,它会输出一个与上面这些角度变化率线性相关的值。

加速度计工作原理介绍(摘自网络)大多数加速度计可归为两类:数字和模拟。

数字加速度计可通过I2C,SPI或USART方式获取信息,而模拟加速度计的输出是一个在预定范围内的电压值,你需要用ADC(模拟量转数字量)模块将其转换为数字值。

不管使用什么类型的ADC模块,都会得到一个在一定范围内的数值。

例如一个10位ADC模块的输出值范围在0-1023间。

假设我们从10位ADC模块得到了以下的三个轴的数据:===586,630,561AdcRx AdcRy AdcRz每个ADC 模块都有一个参考电压,假设在我们的例子中,它是3.3V 。

基于互补滤波器的四旋翼飞行器姿态解算

基于互补滤波器的四旋翼飞行器姿态解算
[4 ] n b
。 该过程要
用到载体坐标系到导航坐标系的旋转矩阵 R , 本文采用方
r xx r xy r xz cos θ cos ψ r r r = cos θsin ψ Rn yx yy yz b = r zx r zy r zz - sin θ
- ωx d t . 1
ωy d t
( 2)
在 d t 趋近于 0 时, 由式( 2 ) 可得旋转矩阵的导数, 即 n b Rn = R , ( 3) b b Ω nb
0 Ω = ωz ωx . 0

yx xx zy zz
互补滤波器融合这三种传感器的数据, 提高测量精度和系 统的动态性能。 ^ 表示互 R 以 R 表示飞行器真实姿态的方向余弦矩阵, R0 代表由加速度 补滤波器计算输出的姿态方向余弦矩阵, u H 表示 传感器和数字罗盘观测到的姿态方向余弦矩阵, R O 的高频观测噪声, R c 代表由陀螺仪数据 则 Ro = R + uH , u L 表示 R c 中的低频累积误差, 计算得到的姿态, 则 Rc = R + uL 。 取 GL ( s ) = C( s) , GH ( s ) = 1 - GL ( s ) = s + C( s)
与目前常用的卡尔曼滤波算法相比采用互补滤波器算法的求解器能显著降低对处理器速度和精度的要求有效融合了捷联惯性测量单元的传感器数据实现了小型四旋翼飞行器的高精度姿态解算
56
传感器与微系统( Transducer and Microsystem Technologies)
2011 年 第 30 卷 第 11 期
基于互补滤波器的四旋翼飞行器姿态解算
1 梁延德 ,程 1 1 敏 ,何福本 ,李

基于改进互补滤波算法的姿态解算

基于改进互补滤波算法的姿态解算

基于改进互补滤波算法的姿态解算摘要:本文主要是将可穿戴设备分别佩戴于运动员不同的部位,对由三个传感器采集的数据进行融合处理,求解高山滑雪运动员的动作姿态角变化。

由于每种仪器都有自己的优缺点,通过调整加速度计、磁力计采样得到的姿态角和陀螺仪采样得到的姿态角之间的权重,通过改进的互补滤波算法进行数据融合,求解出最终的姿态角,姿态角包含横滚角、俯仰角、偏航角三个角度,可以为我国高山滑雪运动员训练提供参考。

关键字:互补滤波算法;姿态解算;数据融合;姿态角。

1引言可穿戴设备由加速度计、陀螺仪、磁力计组成,分别配戴于运动员的胸部、腰部、右大腿、左大腿、右足、左足6个部位,便可测得运动员这6个部位的三维九轴数据[1]。

各个传感器有着自己的优缺点,存在误差,利用比较合适的算法将多个传感器采集到的数据进行数据融合,是目前研究工作的重点[2]。

在目前的研究中,主要是采用陀螺仪为主体,对陀螺仪求解的姿态角“信任度”比较高[3]。

但是在求解过程中,陀螺仪在短时间内十分精准,但长期积分求解过程只出现积分累计误差,导致精度变差[4]。

在姿态解算的过程中,利用三个传感器之间的性质互补性,为了提高解算精度将数据进行融合,这也就成为姿态解算的研究的主要方向[5]。

2基于互补滤波算法的姿态解算通过加速度计求解横滚角、俯仰角,通过磁力计求解出偏航角,通过陀螺仪求解出横滚角、俯仰角、偏航角。

利用互补滤波算法将加速度计、磁力计、陀螺仪求解的姿态角进行数据融合,求解出最终的姿态角。

2.1利用加速度计得到横滚角与俯仰角当运动员处于静止时期,根据第二牛顿定律,运动员只受重力,加速度计测得的是重力加速度,设静止状态下加速度计测量到的加速度向量为,对做归一化处理,有。

是重力加速度向量,对做归一化处理,有,可得:(1)可得到横滚角与俯仰角:(2)可以求解出横滚角和俯仰角,为了方便区分和经陀螺仪得到的横滚角、俯仰角,将由加速度计计算得到的横滚角记作,将由加速度计计算得到的俯仰角记作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姿态解算一、主线姿态表示方式:矩阵表示,轴角表示,欧拉角表示,四元数表示。

惯性测量单元IMU(Inertial Measurement Unit):MPU6050芯片,包含陀螺仪和加速度计,分别测量三轴加速度和三轴角速度。

注意,传感器所测数据是原始数据,包含了噪声,无法直接用于飞行器的姿态解算,因此需要对数据进行滤波。

滤波算法:非线性互补滤波算法,卡尔曼滤波算法,Mahony互补滤波算法。

二、知识点补充加速度计和陀螺仪加速度计:加速度计,可以测量加速度,包括外力加速度和重力加速度,因此,当被测物体在静止或匀速运动(匀速直线运动)的时候,加速度计仅仅测量的是重力加速度,而重力加速度与R坐标系(绝对坐标系)是固连的,通过这种关系,可以得到加速度计所在平面与地面的角度关系也就是横滚角和俯仰角。

把加速度传感器水平静止放在桌子上,它的Z轴输出的是1g的加速度。

因为它Z轴方向被重力向下拉出了一个形变。

可惜的是,加速度传感器不会区分重力加速度与外力加速度。

所以,当系统在三维空间做变速运动时,它的输出就不正确了,或者说它的输出不能表明物体的姿态和运动状态。

陀螺仪:陀螺仪测量角速度。

陀螺仪模型如图1所示,陀螺仪的每个通道检测一个轴的旋转。

图1[引自网络]上图中,Rxz是R在XZ面上的投影,与Z轴的夹角为Axz。

Ryz是R在ZY面上的投影,与Z轴的夹角为Ayz。

陀螺仪就是测量上面定义角度的变化率,换句话说,它会输出一个与上面这些角度变化率线性相关的值。

加速度计工作原理介绍(摘自网络)大多数加速度计可归为两类:数字和模拟。

数字加速度计可通过I2C,SPI或USART方式获取信息,而模拟加速度计的输出是一个在预定范围内的电压值,你需要用ADC(模拟量转数字量)模块将其转换为数字值。

不管使用什么类型的ADC模块,都会得到一个在一定范围内的数值。

例如一个10位ADC模块的输出值范围在0-1023间。

假设我们从10位ADC模块得到了以下的三个轴的数据:===586,630,561AdcRx AdcRy AdcRz每个ADC 模块都有一个参考电压,假设在我们的例子中,它是3.3V 。

要将一个10位的ADC 值转成电压值,我们使用下列公式:将3个轴的值代入上式,得到:3.3586 1.8910233.3630 2.0310233.3561 1.811023VoltsRx V VoltsRy V VoltsRz V=⨯==⨯==⨯=每个加速度计都有一个零加速度的电压值,这个电压值对应于加速度为0g 。

通过计算相对0g 电压的偏移量我们可以得到一个有符号的电压值。

比方说,0g 电压值 1.65VzeroG V =,通过下面的方式可以得到相对0g 电压的偏移量:1.89 1.650.242.03 1.650.381.81 1.650.16DeltaVoltsRx V V V DeltaVoltsRy V V V DeltaVoltsRz V V V=-==-==-= 现在我们得到了加速度计的电压值,但它的单位还不是2(9.8/)g m s ,最后的转换,我们还需要引入加速度计的灵敏度,单位通常是/mV g 。

比如,加速度计的灵敏度478.5/0.4785/Sensitivity mV g V g ==。

灵敏度值可以在加速度计说明书中找到。

要获得最后的单位为g 的加速度,我们使用下列公式计算:DeltaVoltsRxRx Sensitivity=0.240.47850.50.380.47850.790.160.47850.33Rx g Ry g Rz g=÷==÷==÷= 综上,可以把以上步骤用以下公式表达1023 Sensitivity1023 Sensitivity1023SensitivityVrefAdcRx VzeroGRxVrefAdcRy VzeroGRyVrefAdcRz VzeroGRz⨯-=⨯-=⨯-=现在我们得到了惯性力矢量的三个分量,如果设备除了重力外不受任何外力影响,那我们就可以认为这个方向就是重力矢量的方向。

(自此明白了文献[1]中所说只使用加速度计获得的角度是基于飞行器在匀速飞行或静止的条件下得到的)图2[引自网络]我们感兴趣的角度是向量R和X,Y,Z轴之间的夹角,那就令这些角度为Axr,Ayr,Azr。

观察由R和Rx组成的直角三角形()()()cos cos cosRx Ry RzAxr Ayr AzrR R R===图2中,2222R RX RY RZ=++,那么,角度即为arccos arccos arccosRx Ry RzAxr Ayr AzrR R R===三、互补滤波算法加速度计是极易受外部干扰的传感器(如机械振动),但是测量值的误差不随时间的变化。

陀螺仪输出的角速度可以积分得到角度,动态性能好,受外部干扰小,但积分会造成误差累积。

可以看出,它们优缺点互补,结合起来才能有好的效果。

经典互补滤波算法(Classical Complementary Filter)经典互补滤波算法基本原理是充分利用加速度计提供的低频角度信号和陀螺仪提供的高频角速度信号,对加速度计进行低通滤波,对陀螺仪进行高通滤波,分别滤出相应的干扰信号,为两者的有效融合提供了很好的解决方案[2]。

图3 经典互补滤波算法—频域形式原理图[2] 融合后姿态角估计值为ˆg pa p pKss K s s Kωθθ=+++其中,gω为陀螺仪测量的角速度,aθ为加速度计测量的角度值,pK为比例系数,1()psF ss K=+为高通滤波器,21()1()ppKF s F ss K=-=+为低通滤波器。

图4 经典互补滤波算法—时域形式原理图[2]对ˆg pap pKss K s s Kωθθ=+++进行反拉氏变换,可得时域微分形式为ˆˆ()p a gKθθθω=-+改进后的互补滤波算法(Explicit Complementary Filter)经典互补滤波算法实现简单,但是估算精度角度较低,文献[3]提出了一种改进算法(ECF),在经典互补滤波算法的补偿环节加入积分器,以消除陀螺仪漂移常值误差,原理框图如下图。

图5 改进后的互补滤波算法[2]时域微分形式为ˆˆˆ()()Ip a a gKKsθθθθθω=-+-+四、四旋翼飞行器姿态解算流程四旋翼姿态解算整体流程框图如下图5 四元数表示的姿态解算整体流程框图[4]其中,Gyroscope 为陀螺仪,b Ω是陀螺仪输出的测量数据,Accelerometer 是加速度计,在Airspeed 模块以及b f 作用下,加速度输出测量数据ˆbg。

第一,对加速度计测出来的数据进行归一化处理:ˆˆb gg;第二,将重力加速度旋转到机体坐标,得到重力加速度在三个轴上的加速度分量,作为标准加速度。

()222201231203021322221203012323000011c c c s s s c s s c s s 0c s c c s s s s c c s s 0s s c c c 12()2()2()2(T b n n b TC C q q q q q q q q q q q q q q q q q q q q q q q θψϕψϕθψϕψϕθψθψϕψϕθψϕψϕθψθϕθϕθ⎡⎤⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦-++⎡⎤⎡⎤⎢⎥⎢⎥=+-+⋅⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦+---+=+-+-+01222213020123012313020123222201230)02()2()12()2()T q q q q q q q q q q q q q q q q q q q q q q q q q ⎡⎤⎡⎤⎢⎥⎢⎥⋅⎢⎥⎢⎥⎢⎥⎢⎥-+--+⎣⎦⎣⎦-⎡⎤⎢⎥=+⎢⎥⎢⎥--+⎣⎦其中bn C 为世界坐标系到机体坐标系的变换矩阵。

(文献[4]图中此处原文中有错误,已经在截图中进行了修改)第三,归一化后的加速度计值与标准加速度做叉积运算,求得误差向量e ;第四,对误差进行滤波,改进后的互补滤波算法(ECF )可以表示为以下四元数形式:1ˆˆ()2q q p δ=⊗Ω+ p I k e k e δ=+⎰ ,ˆe v v=⨯ 第四,求解四元数微分方程1ˆˆ()2qq p δ=⊗Ω+,求得最新的0123,,,q q q q ; 第五,代入以下公式求得姿态角。

0123222201232()arctanq q q q q q q q ϕ+=--+ 1302arcsin 2()q q q q θ=- 1203222201232()arctanq q q q q q q q ϕ+=+-- 参考文献[1] 郭晓鸿,杨忠,陈喆,等. EKF 和互补滤波器在飞行姿态确定中的应用[J]. 传感器与微系统,2011,30(11):149-152.[2] 傅忠云,朱海霞,孙金秋,等. 基于惯性传感器 MPU6050 的滤波算法研究[J]. 压电与声光, 2015 (2015 年 05): 821-825,829.[3] Mahony R, Hamel T, Pflimlin J M. Nonlinear complementary filters on the special orthogonal group[J]. IEEE Transactions on automatic control, 2008, 53(5): 1203-1218. [4] Euston M, Coote P, Mahony R, et al. A complementary filter for attitude estimation of a fixed-wing UAV[C]//Intelligent Robots and Systems, 2008. IROS 2008. IEEE/RSJ International Conference on. IEEE, 2008: 340-345.附程序:void IMUupdate(float gx, float gy, float gz, float ax,float ay, float az) {float norm;float vx, vy, vz; float ex, ey, ez;float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; float q1q1 = q1*q1; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3;if(ax*ay*az==0) return;// 第一步:对加速度数据进行归一化norm = sqrt(ax*ax + ay*ay + az*az);ax = ax / norm;ay = ay / norm;az = az / norm;// 第二步:DCM矩阵旋转vx = 2*(q1q3 - q0q2);vy = 2*(q0q1 + q2q3);vz = q0q0 - q1q1 - q2q2 + q3q3 ;// 第三步:在机体坐标系下做向量叉积得到补偿数据 ex = ay*vz - az*vy ;ey = az*vx - ax*vz ;ez = ax*vy - ay*vx ;// 第四步:对误差进行PI计算,补偿角速度exInt = exInt + ex * Ki;eyInt = eyInt + ey * Ki;ezInt = ezInt + ez * Ki;gx = gx + Kp*ex + exInt;gy = gy + Kp*ey + eyInt;gz = gz + Kp*ez + ezInt;// 第五步:按照四元数微分公式进行四元数更新q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;}如有侵权请联系告知删除,感谢你们的配合!。

相关文档
最新文档