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

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条回答
rockyyangyang
1楼-- · 2020-02-16 10:17
coleyao 发表于 2014-9-12 20:02
看起来是一个PID控制中的PD控制,马达的输出=角度值*比例系数+角度变化速率*微分系数(对时间的微分其实 ...

我相信你对比例积分微分的作用肯定也是了解的。
那为什么这样只用到PD。
P是为了增加系统的响应速度,这个事每个系统必须的(至少我见过得)
D,也就是微分,微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。
你也知道角度变化速率*微分系数其实就是角度的变化速度,那我就是为了提前的去消除这个变化率,所以加入了微分。
那你肯定会说我的积分去哪里了。实际上这边的公式他没列举出来,还不算完全。那个公式我是拿来做位置控制,就用到了积分。
rockyyangyang
2楼-- · 2020-02-16 11:31
yigang 发表于 2014-9-12 17:03
公式:Angle = (0.98)*(Angle + Gyro * dt) + (0.02)*(Acc);

挺神奇的,我想好好研究它。。。

你是不是打算做平衡车呢?如果是想做,我这边可以免费提供资料给你,如果你不知道的地方刚好我知道,我很愿意帮你解答。
309579471
3楼-- · 2020-02-16 16:15
rockyyangyang 发表于 2014-9-12 22:04
我相信你对比例积分微分的作用肯定也是了解的。
那为什么这样只用到PD。
P是为了增加系统的响应速度,这 ...

我觉得由于平衡车要求的响应非常快,所以这里积分其实是没有什么意义的。。积分参数取大了超调,取小了跟不加一样。。。从数学模型上说,D应该是加入了阻尼环节,让系统快速趋于稳态。
rockyyangyang
4楼-- · 2020-02-16 18:30
309579471 发表于 2014-9-13 08:18
我觉得由于平衡车要求的响应非常快,所以这里积分其实是没有什么意义的。。积分参数取大了超调,取小了跟 ...

是的,就是像你所说的,但是我们要实现位置控制的时候,又一定要加入积分。
oner
5楼-- · 2020-02-16 21:30
 精彩回答 2  元偷偷看……
yigang
6楼-- · 2020-02-16 22:21
rockyyangyang 发表于 2014-9-12 22:06
你是不是打算做平衡车呢?如果是想做,我这边可以免费提供资料给你,如果你不知道的地方刚好我知道,我很 ...

太好了!!!

一周热门 更多>