智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 9083|回复: 19
打印 上一主题 下一主题

[分享] 给正在用或打算用卡尔曼滤波的同学的一点建议

  [复制链接]

21

主题

273

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
威望
1628
贡献
643
兑换币
264
注册时间
2012-1-15
在线时间
322 小时
跳转到指定楼层
1#
发表于 2012-4-26 22:50:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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,讲得很详细,维基百科英文板里也有关于低通滤波的详细介绍,认真看完之后是可以明白互补滤波的道理的,这,对于调整参数很有帮助。建议正在用或打算用卡尔曼滤波的同学的,能互补还是互补吧,两行式子就搞定,或者直接照抄参考方案的滤波方案,别再纠结于卡尔曼了,站起来跑起来是最重要的,其次才是速度。

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

27

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2049
威望
1155
贡献
600
兑换币
333
注册时间
2012-3-14
在线时间
147 小时
2#
发表于 2012-4-27 11:13:29 | 只看该作者
请问用互补的那两个式子是何,指管网的滤波方案吗?能写下这个式子吗?

回复 支持 反对

使用道具 举报

4

主题

239

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2113
威望
1263
贡献
242
兑换币
20
注册时间
2011-10-15
在线时间
304 小时
3#
发表于 2012-4-27 13:40:22 | 只看该作者
PD参数,只有角度控制,车可以前后摆动。轻轻地推一下也可以站好。

这个我尿了。。。现在车子只是往后加速,如果往前推,他会减速然后停住,接着往后加速。。。
回复 支持 反对

使用道具 举报

21

主题

273

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
威望
1628
贡献
643
兑换币
264
注册时间
2012-1-15
在线时间
322 小时
4#
 楼主| 发表于 2012-4-27 22:02:06 | 只看该作者
Goolloo 发表于 2012-4-27 13:40
PD参数,只有角度控制,车可以前后摆动。轻轻地推一下也可以站好。

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

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

回复 支持 反对

使用道具 举报

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
5#
发表于 2012-4-27 22:09:23 | 只看该作者
卡尔曼其实还不错,就是开机一瞬间会抖,而且会修正陀螺仪温飘,总体还可以吧!!
回复 支持 反对

使用道具 举报

21

主题

273

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
威望
1628
贡献
643
兑换币
264
注册时间
2012-1-15
在线时间
322 小时
6#
 楼主| 发表于 2012-4-28 23:17:40 | 只看该作者
wo520 发表于 2012-4-27 22:09
卡尔曼其实还不错,就是开机一瞬间会抖,而且会修正陀螺仪温飘,总体还可以吧!!

我的波形还算不错,P参数小就控制不住,稍大就抖。。。再大车都在原地跳。。。。你的有过这种情况么。。。是滤波有问题么。。。。。
回复 支持 反对

使用道具 举报

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
7#
发表于 2012-4-29 00:04:16 | 只看该作者
yssdsz 发表于 2012-4-28 23:17
我的波形还算不错,P参数小就控制不住,稍大就抖。。。再大车都在原地跳。。。。你的有过这种情况么。。。 ...

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

使用道具 举报

3

主题

45

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1515
威望
778
贡献
323
兑换币
18
注册时间
2011-9-9
在线时间
207 小时
8#
发表于 2012-4-29 10:24:45 | 只看该作者
卡尔曼滤波用在这种系统的效果就是互补滤波,还浪费很多CPU计算量,是个彻底的悲剧。
回复 支持 反对

使用道具 举报

21

主题

273

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
威望
1628
贡献
643
兑换币
264
注册时间
2012-1-15
在线时间
322 小时
9#
 楼主| 发表于 2012-4-29 11:43:11 | 只看该作者
wo520 发表于 2012-4-29 00:04
有遇到过,直立调的太硬了就会上下跳动!参数调小点,有点柔韧性,就好!!

有时候P给50就抖,减小dt就能解决些问题。。。但是明显能感觉到50是不够的。。。往前推先倾一个大角度然后才好。。或倒下。。。
回复 支持 反对

使用道具 举报

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
10#
发表于 2012-4-29 13:40:40 | 只看该作者
yssdsz 发表于 2012-4-29 11:43
有时候P给50就抖,减小dt就能解决些问题。。。但是明显能感觉到50是不够的。。。往前推先倾一个大角度然后 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 07:26 , Processed in 0.053916 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表