智能车制作

标题: 给正在用或打算用卡尔曼滤波的同学的一点建议 [打印本页]

作者: yssdsz    时间: 2012-4-26 22:50
标题: 给正在用或打算用卡尔曼滤波的同学的一点建议
本帖最后由 yssdsz 于 2012-4-26 22:52 编辑

一个月后,重新焊了一块板,重新调整,解决了电路板上的种种问题,今天又用卡尔曼滤波站起来了。
MMA8451,陀螺仪短掉高通电容,P,D参数。

写了两个程序,只是中断时间不同。

一个是5ms。调整滤波参数,PD参数,只有角度控制,车可以前后摆动。轻轻地推一下也可以站好。

一个是7ms。考虑了5ms中断不足以完成采样均值滤波直立控制速度控制方向控制。将5ms程序中的定时中断参数,以及卡尔曼滤波中的时间参数全部改掉,车子根本无法静止。P参数调小不足以使角度恢复到0,稍大便引起车子的抖动,在原地跳。滤波的参数用CW带的波形显示看的,由于只能精确到整数,所以很难精确的看到微调参数后角度的变化(现在突然想到可以乘以个1000然后再看。。。)只能认为角度大体合适。只调PD没有结果,试着改了一下滤波中的参数pangle还有时间dt。由于pangle是角度测量协方差,所以P越大滤波后角度也会越平缓,但是Pangle很大时滤波产生延时。dt用来计算陀螺仪得到的角度。可能由于我陀螺仪值计算有误,将dt减小后,车子抖动的现象缓解了很多。再加上PD参数的调整,车子可以向前加速。

在车后放一小重物,车子便不会一直向前加速,也会向前减速,甚至后退一点。如果加的再重,可能达到前后晃动的效果。(这如果是飘移的问题,我确实希望它存在,只不过抖动一定要很小,不能干扰直立,速度控制应该是能将它解决的。)

但是有个问题。在过零点时车子有轻微抖动,经参数调整将抖动减到尽可能小。抖动较大时车子会不稳,都一段时间后想一个方向加速跑出去。

卡尔曼滤波的原理未知,参数调整方法需要不断探索,而且参数很多。卡尔曼滤波速度快,但是飘忽不定,这论坛上有一个互补卡尔曼滤波的对比,可以看到卡尔曼在变到一个角度时总是有一点飘,再加上滤波不太好,直接导致了我的车在零点的抖动。想用卡尔曼的同学一点要仔仔细细认认真真调整参数,是滤波后的角度值达到最优。

PS:速度快真的不一定好。稍微慢一点才最优。

有一个老外写的关于互补滤波的ppt,讲得很详细,维基百科英文板里也有关于低通滤波的详细介绍,认真看完之后是可以明白互补滤波的道理的,这,对于调整参数很有帮助。建议正在用或打算用卡尔曼滤波的同学的,能互补还是互补吧,两行式子就搞定,或者直接照抄参考方案的滤波方案,别再纠结于卡尔曼了,站起来跑起来是最重要的,其次才是速度。

欢迎各路高来指点,交流!


作者: liucheng_34    时间: 2012-4-27 11:13
请问用互补的那两个式子是何,指管网的滤波方案吗?能写下这个式子吗?


作者: Goolloo    时间: 2012-4-27 13:40
PD参数,只有角度控制,车可以前后摆动。轻轻地推一下也可以站好。

这个我尿了。。。现在车子只是往后加速,如果往前推,他会减速然后停住,接着往后加速。。。
作者: yssdsz    时间: 2012-4-27 22:02
Goolloo 发表于 2012-4-27 13:40
PD参数,只有角度控制,车可以前后摆动。轻轻地推一下也可以站好。

这个我尿了。。。现在车子只是往后加 ...

挺正常的。调静态角度试试~


作者: wo520    时间: 2012-4-27 22:09
卡尔曼其实还不错,就是开机一瞬间会抖,而且会修正陀螺仪温飘,总体还可以吧!!
作者: yssdsz    时间: 2012-4-28 23:17
wo520 发表于 2012-4-27 22:09
卡尔曼其实还不错,就是开机一瞬间会抖,而且会修正陀螺仪温飘,总体还可以吧!!

我的波形还算不错,P参数小就控制不住,稍大就抖。。。再大车都在原地跳。。。。你的有过这种情况么。。。是滤波有问题么。。。。。
作者: wo520    时间: 2012-4-29 00:04
yssdsz 发表于 2012-4-28 23:17
我的波形还算不错,P参数小就控制不住,稍大就抖。。。再大车都在原地跳。。。。你的有过这种情况么。。。 ...

有遇到过,直立调的太硬了就会上下跳动!参数调小点,有点柔韧性,就好!!

作者: 贰玖零计时器    时间: 2012-4-29 10:24
卡尔曼滤波用在这种系统的效果就是互补滤波,还浪费很多CPU计算量,是个彻底的悲剧。
作者: yssdsz    时间: 2012-4-29 11:43
wo520 发表于 2012-4-29 00:04
有遇到过,直立调的太硬了就会上下跳动!参数调小点,有点柔韧性,就好!!

有时候P给50就抖,减小dt就能解决些问题。。。但是明显能感觉到50是不够的。。。往前推先倾一个大角度然后才好。。或倒下。。。
作者: wo520    时间: 2012-4-29 13:40
yssdsz 发表于 2012-4-29 11:43
有时候P给50就抖,减小dt就能解决些问题。。。但是明显能感觉到50是不够的。。。往前推先倾一个大角度然后 ...

减小DT改变了融合的角度,可能出现滞后,或者波形变化了!所以一个小的角度,电机要延迟才转动!

作者: pyj2011    时间: 2012-4-30 15:26
楼主,我用的也是卡尔曼,滤波感觉比较平滑,调直立一直不行,车一直向一个方向加速倒下,另一个方向不会倒的,感觉应该是重心偏离造成的,这个偏离能够用PD调节来弥补吗?用不用在程序中减去这个偏角再调?谢谢 啊!
作者: chenyu2010550    时间: 2012-6-12 23:05
学习了

作者: 战神Number_1    时间: 2012-6-13 17:13
小弟我今年第一次做,至今还没站起来,想问一下卡尔曼滤波后得到的角度还受惯性影响吗?
作者: 战神Number_1    时间: 2012-6-13 17:15
我想找个同学学习一下,愿意赐教的请留个qq号
作者: 451506709    时间: 2012-6-13 18:40

作者: 774573278    时间: 2012-7-29 12:52

作者: Dwe    时间: 2013-4-6 20:44
学习了,感谢
作者: huangjianwu    时间: 2013-4-17 21:29

作者: zanran8    时间: 2013-5-15 22:18
一开始不用卡尔曼滤波,速度提上去之后在考虑!
作者: 王海    时间: 2013-6-24 11:38
wo520 发表于 2012-4-27 22:09
卡尔曼其实还不错,就是开机一瞬间会抖,而且会修正陀螺仪温飘,总体还可以吧!!

难道就不能解决这个开机抖动么!!!???






欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2