【软件类】个人对互补滤波公式的解释,欢迎大家一起讨论

2020-02-11 09:07发布

做飞思卡尔的平衡车有三年了,我今天想分享一下自己的一点互补滤波上的一点心得解释,欢迎拍砖。

公式:Angle = (0.98)*(Angle + Gyro * dt) + (0.02)*(Acc);

1、其中Angle+Gyro*dt是积分部分。(角度+角速度*取样周期)。
2、(0.98)*(Angle + Gyro * dt),是高通部分,作用于陀螺仪上。
3、(0.02)*(Acc)是低通部分,作用于加速度计。
4、其中0.98,0.02是可以根据自己的情况修改的。公式原样应该是Angle = (a)*(Angle + Gyro * dt) + (1-a)*(x_acc);
时间常数t=(a*dt)/(1-a) , 得到a=t/(t+dt)。dt为取样周期,t为时间常数自己设定,一般小于1。
比如取样周期为100HZ,也就是0.01s,那么dt=0.01。时间常数设为0.5(对于不同的系统都不一样,自己试验),那么a=0.5/(0.5+0.01)=0.9804。
那么Angle = (0.9804)*(Angle + Gyro * dt) + (0.0196)*(Acc);
5、对于第4点,如果觉得有问题,我觉得还可以这么理解:陀螺仪采集回来的总是有滞后的,但是加速度计总是超前的,两者是需要综合的,我们相信陀螺仪多一点,相信加速度计少一点,是采集回来的角度可以更好的适应我们的系统。

PS:对于平衡车这个系统,个人认为互补滤波已经足够,没必要用那么高深的卡尔曼。说的错的地方请大神指出,也希望自己没误导友友们。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
77条回答
yigang
1楼-- · 2020-02-12 03:34
本帖最后由 yigang 于 2014-9-11 16:45 编辑

Motor Output = Kp × (Angle) + Kd × (Angular Velocity)
这句话,确立了小车系统的物理----数学模型。

要是有人能 用简练 的语言解释这个模型就好了!!!
rockyyangyang
2楼-- · 2020-02-12 09:29
sunfulong 发表于 2014-9-11 12:45
不知道你有没有试过清华的滤波方案:角速度积分+加速度补偿消除陀螺仪零漂,原理很容易理解,容易上手,但 ...

你不觉得清华方案很像互补滤波嘛?只是叫法不一样,都是角速度积分+加速度计消除零漂嘛?你在仔细看一看!
rockyyangyang
3楼-- · 2020-02-12 13:11
yigang 发表于 2014-9-11 10:33
递推ANGLE时加了点儿ACCELERATION。描述ANGLE的变化速率。。。

数据融合方法,孰优孰劣还是从物理角度分析 ...

加入acceleration可以让整个波形更加平滑,当然,对于不同的物理结构或者一个系统,方案总是不一样。
xujihu
4楼-- · 2020-02-12 16:19
卡尔曼比较精准,
rockyyangyang
5楼-- · 2020-02-12 22:16
 精彩回答 2  元偷偷看……
霸气侧漏
6楼-- · 2020-02-13 03:28
rockyyangyang 发表于 2014-9-11 18:29
首先我想问你一下,你是做什么的。
实际上这个也是做平衡车里面的一个基本公式之一。 ...

的却是基本公式,平衡车算法很重要

一周热门 更多>