互补滤波公式

我的四轴飞行器经验总结(四)--互补滤波法进行姿态解算详解

2017年02月26日 09:00:20 阅读数:3419

消除误差的方法有卡尔曼滤波法、互补滤波法、姿态插值法等。考虑到计算能力和现有的资料,本设计采用互补滤波法,达到的效果也比较好。

算法核心思想:利用加速度计来补偿陀螺仪,希望能最大限度消除误差,进行准确解算机体姿态。

首先明确两个概念:四元数转欧拉角,四元数与旋转矩阵变换。http://blog.csdn.net/xoyojank/article/details/5682944微笑

四元数转欧拉角公式:

  arctan和arcsin的结果是,这并不能覆盖所有朝向(对于的取值范围已经满足),因此需要用atan2来代替arctan。

 

四元数与旋转矩阵变换:

 

这里表述可能有一些让人不是很容易理解的地方,其实就是在理想条件下,我们是只需要陀螺仪来做姿态解算就可以了,如果没有任何干扰,芯片性能也优秀,那么用陀螺仪解算出的角速度积分就可以得到角度,不需要加速度计。但是这是不可能的,传感器的测量误差(主要是陀螺仪的积分误差和振动引起的加速度计误差),会造成测量值的不准确,如果刚开始陀螺仪误差为0.1,那么积分一段时间后可能变成10,所以我们要进行修正和补偿,陀螺仪具有良好的短时间测量准确度(希望得到高频值),加速度计有良好的长时间测量准确度(希望得到低频值),那么正好合并使用,简称数据融合。

介于资料和难度,那么一般选用互补滤波,即A=B*K+C*(1-K)。

由于两个传感器都有误差,那么我们算出他们之间的误差向量,再将误差向量补偿给陀螺仪,这里使用PI控制器来补偿,在准确性和时效性上可能更好一些,但是道理是一样的,最后用一阶比卡算法更新四元数,将算好的四元数转化为欧拉角计算。有一些地方需要良好的数学基础知识,我不能百分之百理解,但解算思路没问题。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二阶互补滤波(2nd Order Complementary Filter)是一种常用于姿态估计和传感器数据融合的法,在STM32微控制器中也可以实现。 互补滤波法主要由两个部分组成:低通滤波器和高通滤波器。低通滤波器主要用于提取低频成分,而高通滤波器则用于提取高频成分。这两个滤波器通过加权对原始数据进行滤波处理,并将两个滤波器的输出进行加权相加,得到最终的估计值。 在STM32上实现二阶互补滤波的步骤如下: 1. 设置采样周期:通过设定采样周期来确定滤波器的截止频率。较短的采样周期可提高响应速度,但可能导致较大的误差;较长的采样周期则可减小误差,但响应速度较慢。 2. 计权重系数:根据所需截止频率和采样周期,计出低通滤波器和高通滤波器的权重系数。常见的权重系数方法有巴特沃斯滤波器设计、离散Hilbert变换等。 3. 获取传感器数据:使用STM32内置的模拟输入模块或外部的传感器模块,获取姿态或其他需要估计的实时数据。 4. 进行滤波计:根据采样周期和权重系数,对传感器数据进行低通滤波和高通滤波计。低通滤波器通常采用IIR滤波器,高通滤波器则采用补偿公式或差分滤波器。 5. 互补滤波处理:将低通滤波器和高通滤波器的输出进行加权相加,得到最终的估计值。加权系数通常由应用的具体需求决定。 6. 输出结果:将滤波后的数据用于姿态估计或其他应用场景中。 总之,二阶互补滤波是一种常用的传感器数据融合法,适用于STM32等嵌入式系统,可以有效提取传感器数据的有效信息,用于姿态估计、运动控制等应用中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值