一阶互补滤波

基于一阶互补滤波算法的MPU6050数据融合

我们已经知道,MPU6050可以获得加速度和角速度,但是由于传感器的噪声信号比较大,无法直接通过两个数据来获得该轴上的角度。因此,需要进行互补滤波来近似得到一个比较准确的角度。

传感器原始数据特点分析:

加速度数据,不是很准确,但是趋势是对的,通过受力分能够显示角度变化趋势,在长期变化来看是可以利用的。
角速度数据,加速度积分得到角度,但是由于传感器误差,积分作用会造成累计误差,所以角速度数据在短期是可以使用的,长期来看误差会很大是不可使用的

两种特点的数据使得我们对得到精确地角度看到了希望,以下几个内容需要明白

数字低通滤波器

可以让长期变化通过,滤波消除短期变化,用于对加速度计的滤波

数字高通滤波器

可以让短时信号通过,过滤出变化缓慢的信号,消除漂移

积分

数字积分是通过累加来实现的,即 Angle = gyro * dt
dt是采样时间越短积分值越准确

采样周期

这个简单,比如1ms获取一次时间,则采样率是1000HZ,采样时间为0.001s

时间常数

τ是常用时间常数符号,一般表示过渡反应的时间过程的常数。指该物理量从最大值衰减到最大值的1/e所需要的时间,对于滤波器而言是信号会作用的相对时间。
对于低通滤波器周期比时间常数大的多的信号可以平稳通过,周期比时间常数短的信号被滤出,高通则相反。
设互补滤波系数为a,则
y = a*y + (1-a)*x;
若以dt为周期执行,则有τ = (a*dt)/(1-a) ->得出互补滤波系数为 a = τ/(τ + dt);

互补

即,高频信号与低频信号都与我们将求得的量相关,我们将其进行滤波运算,给两部分一个权重得到一个相对准确的值,或者得到一个很好的近似的过程

角度互补滤波器

Angle = (0.98) * (Angle + gyro * dt) + (0.02) *(acc);
我们可以根据采样周期来算出滤波器的时间常数,最终求得它的响应速度。同样的,我们也可以根据自己的需要,确定一个时间常数,进而获得合适的滤波系数,为了获取更加准确的值需要对系数进行一定的调整。

转载于:https://www.cnblogs.com/chengxq/p/9174694.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值