互补滤波器

互补滤波器

从 RC 电路 到 数字滤波器 。

参考:wikiPedia

by luoshi006

原理

低通滤波器

一阶低通滤波器

传递函数

这里写图片描述

常见的 RC 电路构成的一阶低通滤波器的输入(U) 输出(Y)关系如下:

YU=11+RCS Y U = 1 1 + R C ⋅ S

其中,滤波器的截止频率为: wc=1RC w c = 1 R C

将传函转换为微分形式:

y(t)+RCdy(t)dt=x(t) y ( t ) + R C d y ( t ) d t = x ( t )

dy(t)dt==y(k)y(k1)Δt d y ( t ) d t = 差 分 = y ( k ) − y ( k − 1 ) Δ t ,代入得到差分形式:

y(k)=RCΔt+RCy(k1)+ΔtΔt+RCx(k) y ( k ) = R C Δ t + R C y ( k − 1 ) + Δ t Δ t + R C x ( k )

由近似公式:

11+Δt/RC=˙1ΔtRC 1 1 + Δ t / R C = ˙ 1 − Δ t R C

可得:

y(k)=(1ΔtRC)y(k1)+ΔtRCx(k) y ( k ) = ( 1 − Δ t R C ) y ( k − 1 ) + Δ t R C x ( k )

即,一阶低通滤波的差分形式。


二阶低通滤波

这里写图片描述

过程略;

y(k)=2(1+σΔt)1+2σΔt+ω20Δt2y(k1)11+2σΔt+ω20Δt2y(k2)+ω20Δt21+2σΔt+ω20Δt2x(k) y ( k ) = 2 ( 1 + σ Δ t ) 1 + 2 σ Δ t + ω 0 2 Δ t 2 y ( k − 1 ) − 1 1 + 2 σ Δ t + ω 0 2 Δ t 2 y ( k − 2 ) + ω 0 2 Δ t 2 1 + 2 σ Δ t + ω 0 2 Δ t 2 x ( k )

其中, σ=R2L,ω20=1LC σ = R 2 L , ω 0 2 = 1 L C


高通滤波器

依然使用RC电路为模型。
传递函数为:

G(s)=11+1RCS G ( s ) = 1 1 + 1 R C ⋅ S

=RCSRCS+1 = R C ⋅ S R C ⋅ S + 1

******************* 内容仅作参考 *******************************
由 $s=\frac {Z-1}{T}$变换:

$$U\cdot RC \cdot Z - U\cdot RC=Y\cdot RC \cdot Z- Y\cdot RC+Y\cdot T$$

Z反变换:

$$Y(k+1)=U(k+1)-U(k)+(1-\frac{T}{RC}) Y(k)$$

将传函转化为微分形式:

RCdy(t)dt+y(t)=RCdx(t)dt R C ⋅ d y ( t ) d t + y ( t ) = R C ⋅ d x ( t ) d t

转换为差分形式:

y(k)=RCRC+Ty(k1)+RCRC+T(x(k)x(k1)) y ( k ) = R C R C + T y ( k − 1 ) + R C R C + T ( x ( k ) − x ( k − 1 ) )


互补滤波器

综上,可知:
低通滤波器:

y(k)=RCRC+Ty(k1)+TRC+Tx(k) y ( k ) = R C R C + T y ( k − 1 ) + T R C + T x ( k )

高通滤波器:

y(k)=RCRC+T[y(k1)+Δx(k)] y ( k ) = R C R C + T [ y ( k − 1 ) + Δ x ( k ) ]

故,互补滤波器:

y(k)=RCRC+T[y(k1)+Δxgyro(k)]+TT+RCxacc(k) y ( k ) = R C R C + T [ y ( k − 1 ) + Δ x g y r o ( k ) ] + T T + R C x a c c ( k )

angle = (factor) * (angle + gyro * dt ) + (1 - factor) * (x_acc);
其中,factor 为互补滤波因子,定义域:( 0 , 1 )。


the end

本文简单介绍了一阶互补滤波的理论和实现,以期望对刚开始接触数字滤波的朋友有所帮助。

互补滤波使用较多的 mahony 滤波,限于篇幅,另外介绍。

如果在文中,发现错误或不妥当的地方,请直接留言,或 邮箱 交流。不胜感激~


  • 17
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
卡尔曼滤波互补滤波是常用的姿态解算算法,用于将加速度计和陀螺仪的数据结合起来计算姿态角度。下面是对它们的简要说明: 1. 卡尔曼滤波(Kalman Filter): 卡尔曼滤波是一种最优估计滤波,能够通过考虑系统模型和测量噪声的特性,对系统状态进行估计。在姿态解算中,卡尔曼滤波可以通过将加速度计和陀螺仪的数据作为输入,结合系统的动态模型和测量误差模型,估计出姿态的角度。它能够有效地抑制噪声和误差,提供较为精确的姿态估计结果。 2. 互补滤波(Complementary Filter): 互补滤波是一种简单且实用的滤波,常用于将陀螺仪和加速度计的数据结合起来计算姿态角度。它基于一个简单的原理:陀螺仪提供快速但不稳定的角速度测量,而加速度计提供稳定但受到重力和振动等干扰的姿态角度测量。互补滤波通过加权相加的方式,将陀螺仪和加速度计的数据进行融合,得到一个综合的姿态角度估计。通过调整权重因子,可以平衡姿态的响应速度和稳定性。 选择卡尔曼滤波还是互补滤波取决于你的具体需求和应用场景。卡尔曼滤波通常需要更多的计算和理论基础,但提供更准确的姿态估计结果。互补滤波则更简单易实现,适用于一些实时性要求较高、对精确度要求相对较低的场景。根据你的实际情况,选择合适的滤波算法进行姿态解算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值