tianyagujian 发表于 2010-11-29 10:33:31

有关陀螺仪采样间隔的问题

前一段时间在弄ENC-03与MMA7260的融合,一直问题不断,先是ENC-03用的放大器是LM358,估计是放大倍率过大,导致无法正常输出数据,后来换了LM324才正常,高兴不了多久发现经Kalman滤波后的波形有问题,请教了一下feng_matrix,他觉得这个问题具有普遍性,所以发出来大家一起讨论下。
如下图,20ms的采样间隔,滤波后的波形需要经过很长一段时间才能跑到正常值。(时间间隔不是问题,改小也是这样)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_601069BQGSCT.JPG
(原文件名:01.JPG)



我看了坛子里一些帖子,大家似乎没人细说这个问题,可能这本来就不是个问题吧。但我看过一些童鞋的代码,直接采样,似乎根本没考虑滤波参数里的dt值。后来我把采样语句直接放到主程序里循环,去除中断,只在后面加了个延时,这回看到滤波后的波形大体与加速度计差不多了,这样看来,硬件应该不存在问题。

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_601076PFHXF0.jpg
(原文件名:02.jpg)

询问了一下feng_matrix,他觉得是物理采样时间与Kalman的dt时间不一样所致,dt的不精确,得出的波形也就不正确。我也觉得有道理,但做了些试验后觉得不一定是这个问题,不用中断用延时,把延时时间该大或改小,得到的波形值只会偏离越大,但波形还是大体正确的

综上,我现在只能怀疑是开发环境的问题了,我用的是Arduino板,为了简单,易学,Arduino把许多操作封装成函数直接调用,效率太低了,想改用ICC,又发现AVRstudio认不到我的Arduino开发板,让我非常非常的郁闷。虽然到现在还没解决问题,还是要感谢feng_matrix百忙中答复我^_^

xixijay1988 发表于 2010-11-29 23:06:31

采样频率一般越高越好 20ms感觉有点忙了我的是2ms 啮合的慢可能和滤波的参数有关吧 可能你的修正量比较小 利用kalman的话好像和R值或Q值有关 记不大清了

marco.ma 发表于 2010-11-29 23:50:18

也要看陀螺儀本身的能力的需要看下datasheet看陀螺儀本身的相應如何。

heizenberg 发表于 2010-12-1 09:20:34

用Kalman滤波的话首先要保证所列写误差方程(有可能是连续的状态方程)
与实际情况比较相符,
保证在离散化过程中状态转移矩阵和各系数矩阵计算正确.

还有 噪声矩阵Q,R的值 对输出结果影响很大.
调整噪声矩阵的值即可以调整对两种信号的信任程度,
输出结果可能相差很大,亦或者是根本不收敛的.

建议采集些实验数据, 然后用matlab仿真一下,
初步调整下参数矩阵范围, 然后再到硬件上进行实验.

tianyagujian 发表于 2010-12-1 09:26:35

谢谢楼上两位的回复,其实我在第二张图上也说了,其它参数不改,只是把检测函数放到主循环里,去除中断采用延时,得到的结果就比较理想,所以我觉得采样间隔用的20ms应该是可以的

feng_matrix 发表于 2010-12-3 11:11:30

可以用一个LED,运算前亮运算完关,然后用示波器看看是否LED的波形,占空比均匀的就是对的
如果延时都能做好,估计是中断代码的问题。回复【4楼】tianyagujian
谢谢楼上两位的回复,其实我在第二张图上也说了,其它参数不改,只是把检测函数放到主循环里,去除中断采用延时,得到的结果就比较理想,所以我觉得采样间隔用的20ms应该是可以的
-----------------------------------------------------------------------

如果延时都能做好,估计是中断代码的问题。

可以用一个LED,运算前亮运算完关,然后用示波器看看是否LED的波形,占空比均匀的就是对的
页: [1]
查看完整版本: 有关陀螺仪采样间隔的问题