Ctrl+D可以收藏本站。也可以随便逛逛,希望本站可以让你轻松的获取一些内容

一阶互补滤波算法

算法 求索 2540次浏览 0个评论

(图片来源于网络)

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

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

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

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

数字低通滤波器

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

数字高通滤波器

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

积分

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

采样周期

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

时间常数

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

互补

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

角度互补滤波器

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

其实,就是加权。


求索博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明来自求索的个人博客一阶互补滤波算法
喜欢 (12)
求索
关于作者:
路漫漫其修远兮,吾将上下而求索
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址