基于互补滤波的飞行器姿态解算
- 格式:doc
- 大小:350.00 KB
- 文档页数:8
基于四元数二阶互补滤波的四旋翼姿态解算伏家杰;周翟和;尹辉;陈燕【摘要】姿态解算是四旋翼飞行器的关键技术,其精度直接影响飞行器控制的可靠性和稳定性.针对当前常用一阶互补滤波算法中阻带衰减速率慢和陀螺仪常值漂移产生的稳态误差问题,通过增加积分环节,设计了一种基于四元数的二阶互补滤波算法,能更好地利用加速度计和磁力计的稳态信息有效补偿陀螺仪常值漂移,从而减少姿态解算的累积误差.仿真结果表明,该算法具有更好的稳定性,提高了系统的姿态解算精度.通过飞行器真实飞行数据对算法进行了实验验证,结果显示姿态的俯仰角、横滚角精度<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)_ ⼀种互补滤波⽅法本⽂内容主要是参考《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 。
基于改进互补滤波算法的姿态解算摘要:本文主要是将可穿戴设备分别佩戴于运动员不同的部位,对由三个传感器采集的数据进行融合处理,求解高山滑雪运动员的动作姿态角变化。
由于每种仪器都有自己的优缺点,通过调整加速度计、磁力计采样得到的姿态角和陀螺仪采样得到的姿态角之间的权重,通过改进的互补滤波算法进行数据融合,求解出最终的姿态角,姿态角包含横滚角、俯仰角、偏航角三个角度,可以为我国高山滑雪运动员训练提供参考。
关键字:互补滤波算法;姿态解算;数据融合;姿态角。
1引言可穿戴设备由加速度计、陀螺仪、磁力计组成,分别配戴于运动员的胸部、腰部、右大腿、左大腿、右足、左足6个部位,便可测得运动员这6个部位的三维九轴数据[1]。
各个传感器有着自己的优缺点,存在误差,利用比较合适的算法将多个传感器采集到的数据进行数据融合,是目前研究工作的重点[2]。
在目前的研究中,主要是采用陀螺仪为主体,对陀螺仪求解的姿态角“信任度”比较高[3]。
但是在求解过程中,陀螺仪在短时间内十分精准,但长期积分求解过程只出现积分累计误差,导致精度变差[4]。
在姿态解算的过程中,利用三个传感器之间的性质互补性,为了提高解算精度将数据进行融合,这也就成为姿态解算的研究的主要方向[5]。
2基于互补滤波算法的姿态解算通过加速度计求解横滚角、俯仰角,通过磁力计求解出偏航角,通过陀螺仪求解出横滚角、俯仰角、偏航角。
利用互补滤波算法将加速度计、磁力计、陀螺仪求解的姿态角进行数据融合,求解出最终的姿态角。
2.1利用加速度计得到横滚角与俯仰角当运动员处于静止时期,根据第二牛顿定律,运动员只受重力,加速度计测得的是重力加速度,设静止状态下加速度计测量到的加速度向量为,对做归一化处理,有。
是重力加速度向量,对做归一化处理,有,可得:(1)可得到横滚角与俯仰角:(2)可以求解出横滚角和俯仰角,为了方便区分和经陀螺仪得到的横滚角、俯仰角,将由加速度计计算得到的横滚角记作,将由加速度计计算得到的俯仰角记作。
Python 互补滤波扩展卡尔曼滤波解算姿态一、介绍在航空航天领域以及其他相关领域,姿态解算是一个重要的问题。
姿态解算是指通过传感器(如陀螺仪、加速度计、磁力计等)采集到的数据,计算出飞行器或者其他对象的姿态(即俯仰、偏航、横滚角度)。
在实际的应用场景中,通常需要使用滤波算法对传感器数据进行处理,从而得到更加准确和稳定的姿态信息。
本文将介绍如何使用Python 编程语言实现互补滤波和扩展卡尔曼滤波算法,来解算姿态。
二、互补滤波算法1. 什么是互补滤波算法互补滤波算法是一种简单而有效的滤波算法,常用于姿态解算中。
它的原理很简单,即将两种不同的数据(通常是陀螺仪数据和加速度计数据)进行加权平均,从而得到更加稳定和准确的姿态信息。
2. 互补滤波算法的实现在 Python 中实现互补滤波算法非常简单。
我们需要获取陀螺仪和加速度计的原始数据。
我们可以使用如下的公式来计算互补滤波的输出:angle = alpha * (angle + gyroRate * dt) + (1 - alpha) * accAngle其中,angle 表示最终的姿态角度,gyroRate 表示陀螺仪的角速度,dt 表示采样时间间隔,accAngle 表示由加速度计计算得到的角度,alpha 表示权重系数。
3. 互补滤波算法的优缺点互补滤波算法具有简单、低成本、易实现的优点,适用于一些资源有限的场景。
但是它也有一些缺点,比如对参数的选择比较敏感,需要经过一定的调试和优化。
三、扩展卡尔曼滤波算法1. 什么是扩展卡尔曼滤波算法扩展卡尔曼滤波算法是卡尔曼滤波算法的一种扩展,常用于非线性系统的状态估计。
在姿态解算中,由于传感器的非线性特性,扩展卡尔曼滤波算法通常能得到更加准确的姿态信息。
2. 扩展卡尔曼滤波算法的实现扩展卡尔曼滤波算法涉及到一些复杂的数学推导和矩阵运算,在Python 中可以使用一些成熟的库来实现。
通常,我们需要将系统的动力学模型线性化,然后使用卡尔曼滤波算法进行状态估计。
一种常见的四轴飞行器姿态解算方法分析全国各地已经间续开放低空管制,北京也将在2015年全面开放低空领域,这对低空飞翔器将是一个非常重大的好消息!低空飞翔器也将迎来一个新的进展春天。
事实上,近年四轴飞翔器进展相当快速,国内的航拍水平越来越高,顺丰及亚马逊已在尝试将无人机用于快递行业。
越来越多的人开头关注并讨论四轴飞翔器。
本文将分析一种频繁的四轴飞翔器姿势解算办法,Mahony的互补滤波法。
此法容易有效,希翼能给学习四轴飞翔器的伴侣们带来协助。
关于姿势解算和滤波的理论学问,推举秦永元的两本书,一是《惯性导航》,目前已出到其次版了;二是《卡尔曼滤波与组合导航原理》。
程序中的理论基础,可在书中寻觅。
下面开头进入正题:先定义Kp,Ki,以及halfT 。
Kp,Ki,控制修正积分姿势的速度halfT ,姿势解算时光的一半。
此处解算姿势速度为500HZ,因此halfT 为0.001define Kp 2.0fdefine Ki 0.002fdefine halfT 0.001f初始化四元数float q0 = 1, q1 = 0, q2 = 0, q3 = 0;定义姿势解算误差的积分float exInt = 0, eyInt = 0, ezInt = 0;以下为姿势解算函数。
参数gx,gy,gz分离对应三个轴的角速度,单位是弧度/秒;参数ax,ay,az分离对应三个轴的加速度原始数据因为加速度的噪声较大,此处应采纳滤波后的数据void IMUupdate(float gx, float gy, float gz, float ax, float ay,float az){float norm;float vx, vy, vz;float ex, ey, ez;将加速度的原始数据,归一化,得到单位加速度norm = sqrt(ax*ax + ay*ay + az*az);ax = ax / norm;ay = ay / norm;az = az / norm;把四元数换算成“方向余弦矩阵”中的第三列的三个元素。
基于四元数互补滤波的无人机姿态解算本文提出了一种基于四元数互补滤波的无人机姿态解算方法。
该方法通过对四元数的互补滤波来对无人机的姿态进行估计,实现了对无人机运动状态的实时监测和控制。
同时,本文还对该方法进行了实验验证,结果表明该方法具有较高的精度和实用性。
关键词:四元数;互补滤波;无人机姿态解算;估计;监测一、引言随着无人机技术的飞速发展,无人机在军事、民用等领域的应用越来越广泛。
然而,无人机的飞行控制与稳定性问题一直是无人机技术的瓶颈之一。
其中,无人机姿态解算技术是实现无人机飞行控制的关键技术之一。
无人机姿态解算指的是通过传感器采集的数据,对无人机的姿态进行估计和推算,以实现对无人机运动状态的实时监测和控制。
传统的无人机姿态解算方法主要基于欧拉角和旋转矩阵等数学模型,但这些方法存在着欧拉角奇异性和旋转矩阵计算复杂等问题,导致无法满足实际应用需求。
因此,近年来,越来越多的研究者开始探索基于四元数的无人机姿态解算方法。
四元数是一种具有四个实数分量的数学对象,可以用来表示旋转、姿态等信息。
相比于欧拉角和旋转矩阵等传统数学模型,四元数具有计算简单、不存在奇异性等优点,因此在无人机姿态解算领域得到了广泛应用。
而互补滤波是一种常用的信号处理方法,可以对多个信号进行加权平均,从而得到更加准确的结果。
因此,本文提出了一种基于四元数互补滤波的无人机姿态解算方法,以解决传统方法存在的问题。
二、基于四元数互补滤波的无人机姿态解算方法1.四元数表示姿态四元数可以用来表示旋转、姿态等信息,其具有简单的计算方式和不存在奇异性等优点。
因此,本文采用四元数来表示无人机的姿态信息。
四元数可以表示为:q = a + bi + cj + dk其中,a、b、c、d为实数分量,i、j、k为三个虚数分量,满足: i = j = k = ijk = -1四元数可以表示旋转、姿态等信息,其中,a为实部,b、c、d为虚部,表示旋转轴和旋转角度。
基于四元数互补滤波的无人机姿态解算
这种无人机姿态解算方法是基于四元数互补滤波(Quaternion Complementary Filter),它是一种用于计算3D无人机在空中姿态的高效算法。
四元数表达方式可以将任意三维方向和位移编码成四元数形式,因此可以以此为基础来计算无人机的姿态。
四元数互补滤波由两个主要过程组成:预测和更新。
在预测步骤中,算法通过使用加速度计和陀螺仪的读数来预测无人机的姿态,这帮助消除噪声,缩短响应时间等。
在更新步骤中,将传感器的观测与预测的比较,以校准预测中的偏差,以最终确定无人机的姿态。
四元数互补滤波算法使无人机能够实时准确地跟踪三维空间中的姿态变化,让无人机能够以更自信地方式操纵飞行活动。
Mpu6050姿态解算原始数据Mpu6050是一种六轴惯性测量单元(imu),可用于测量物体的姿态、加速度和角速度。
姿态解算是利用imu采集的原始数据,通过算法计算出物体的姿态信息,包括滚转角、俯仰角和偏航角。
在实际应用中,姿态解算可以用于飞行器、机器人、虚拟现实等领域。
Mpu6050姿态解算原始数据是实现姿态解算的基础,本文将介绍如何获取Mpu6050的原始数据,并简要说明姿态解算的算法原理。
一、Mpu6050原始数据获取1. 硬件连接Mpu6050可以通过i2c或spi接口与微控制器进行通信。
一般来说,通过i2c接口连接更为常见。
接线时需注意电源、地线、时钟和数据线的连接正确性。
2. 寄存器配置Mpu6050内部有多个寄存器,其中包括原始数据的存储寄存器和配置寄存器。
在读取原始数据之前,需要对寄存器进行相应的配置,包括选择量程、设置采样率、使能加速度计和陀螺仪等。
3. 数据读取完成寄存器配置后,就可以通过i2c或spi接口读取Mpu6050的原始数据。
包括加速度计的三轴加速度值和陀螺仪的三轴角速度值。
读取的数据为16位的有符号整数,需进行转换和处理才能得到具体的物理量值。
二、Mpu6050姿态解算算法1. 姿态解算算法原理Mpu6050姿态解算算法主要基于互补滤波原理。
通过将加速度计和陀螺仪的原始数据进行滤波和融合,得到较为稳定和准确的姿态信息。
具体而言,加速度计可用于测量物体的倾斜角度,但对于快速旋转的运动无法提供准确的角速度信息;而陀螺仪能够提供精确的角速度信息,但会受到积分漂移等影响。
结合两者的优势,可以得到更准确的姿态信息。
2. 算法实现姿态解算算法的实现一般有两种方式,一种是基于互补滤波的欧拉角解算,另一种是基于四元数的姿态解算。
前者简单易懂,适合入门者学习,但对于快速旋转的情况效果不佳;后者则更为复杂,但能够有效克服欧拉角解算的局限性。
三、Mpu6050姿态解算原始数据的应用1. 飞行器在飞行器的姿态控制中,姿态解算可以用于测量飞行器相对于水平面的姿态角,从而实现稳定飞行和精确操控。
互补滤波姿态解算互补滤波姿态解算是一种常用的姿态解算方法,它通过融合加速度计和陀螺仪的数据,实现对物体的姿态角度的准确估计。
本文将详细介绍互补滤波姿态解算的原理、优点以及应用领域,以便读者了解并运用该方法。
首先,我们来了解一下互补滤波姿态解算的原理。
加速度计可测量物体在三个轴上的加速度,而陀螺仪则可以测量物体在三个轴上的角速度。
互补滤波姿态解算的思想就是通过融合这两种传感器的数据,将加速度计的低频信息和陀螺仪的高频信息相互补充,从而得到更准确的姿态角度。
具体而言,加速度计可以提供物体的方向指示,但由于重力加速度的干扰以及传感器本身的噪声等原因,其输出存在误差。
而陀螺仪则可以提供物体的角速度信息,但由于积分累积误差(称为“漂移”),其输出会随时间累积引入较大的偏差。
互补滤波姿态解算利用了这两种传感器各自的优势,通过加速度计估计与陀螺仪测量值的差异,对陀螺仪的输出进行修正,从而实现对姿态角度的准确估计。
互补滤波姿态解算具有多个优点,使其成为广泛应用的方法之一。
首先,相比于其他姿态解算方法,互补滤波具有计算简单、实现方便的特点,可适用于各种嵌入式设备和传感器系统。
其次,互补滤波姿态解算采用了加速度计和陀螺仪的互补特性,使得姿态角度的估计更加准确和稳定。
此外,互补滤波姿态解算还可以通过调整两种传感器数据的重要性权重来适应不同的应用需求,具有一定的灵活性。
互补滤波姿态解算在各个领域都有广泛的应用。
在航空航天领域,互补滤波姿态解算可以用于飞行器的姿态控制、导航和飞行参数估计等关键任务。
在智能机器人领域,互补滤波姿态解算可以用于机器人的运动控制、环境感知和自主导航等方面,提高机器人的操作精度和稳定性。
此外,互补滤波姿态解算还可以应用于虚拟现实、运动追踪、体感游戏等领域,为用户提供更加沉浸式和真实感的体验。
综上所述,互补滤波姿态解算是一种基于加速度计和陀螺仪的姿态解算方法,通过融合两种传感器的数据,实现对物体姿态角度的准确估计。
姿态解算一、主线姿态表示方式:矩阵表示,轴角表示,欧拉角表示,四元数表示。
惯性测量单元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;}如有侵权请联系告知删除,感谢你们的配合!。