关于自平衡小车的卡尔曼滤波问题请教

[复制链接]
 楼主| Chaos_zc 发表于 2011-8-7 22:33 | 显示全部楼层 |阅读模式
本帖最后由 Chaos_zc 于 2011-8-8 09:54 编辑

      最近在写自平衡小车的程序,写到卡尔曼滤波做加计和陀螺仪信号融合的部分。虽然以前就花过近一周时间看过卡尔曼滤波,但总觉得貌似懂了但又不真正理解。

      比如说其中提到过程噪声的协方差、测量噪声的协方差这些参数,感觉应该是“方差”才对,因为都是表征某一个信号的噪声大小,从公式上看也是如此。“协方差”应该是涉及两个信号之间的相关性。但几乎所有看的资料都写的是“协方差”。

      记得匠人和电脑圈圈的博客中都有与卡尔曼有关的内容,可否有哪位大大出来解释一下?最近大家都在做自平衡小车,想必也都会遇到这些问题。
不光写程序 发表于 2011-8-8 08:27 | 显示全部楼层
为什么非要用卡尔曼?
qfggg 发表于 2011-8-8 08:48 | 显示全部楼层
我也想知道,期待高手指教!!!
 楼主| Chaos_zc 发表于 2011-8-8 08:51 | 显示全部楼层
为什么非要用卡尔曼?
不光写程序 发表于 2011-8-8 08:27

因为陀螺仪需要通过角速度积分得到角度,会产生累计误差,而且本身就存在温漂;加速度计长时稳定,瞬时的误差较大。所以要结合两者做数据融合才能得到真实的角度。当然也可以用互补滤波,不过卡尔曼效果比较好。
 楼主| Chaos_zc 发表于 2011-8-8 14:23 | 显示全部楼层
自己顶一下,不然要沉了
不光写程序 发表于 2011-8-8 14:26 | 显示全部楼层
哎!最近坛子里好像没人了,我发个讨论帖没一个人回复。郁闷啊!
顺便做个广告:
平衡车原理图分析贴:关于平衡小车中大治的疑惑(8月8日晚更新) http://bbs.21ic.com/viewthread.php?tid=252632

欢迎大家参加。
 楼主| Chaos_zc 发表于 2011-8-8 21:40 | 显示全部楼层
6# 不光写程序
呵呵,遇到程序的问题可以交流一下。我做的小车硬件是自己做的,和大家的套件差别比较大。
 楼主| Chaos_zc 发表于 2011-8-8 21:40 | 显示全部楼层
再顶!
highgear 发表于 2011-8-8 23:37 | 显示全部楼层
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于一些多输入多输出的比较复杂的控制系统。

对于通过角速度积分得到角度,这只是一个简单的积分算法,因此可以用非常简单的矫正算法。假设矫正点为 0 角度(检测角度过零,这是比较简单的做法), 当检测到角度过零时, 可:
1)直接把累加器清零,直接消除累计误差;或
2)把累加器清零,同时根据积分所得角度,调整累加器系数。例如积分角度小于零,则增大累加器系数。

这种简单的控制,无须卡尔曼算法。

评分

参与人数 3威望 +3 收起 理由
Chaos_zc + 1
不光写程序 + 1
Cortex-M0 + 1

查看全部评分

Cortex-M0 发表于 2011-8-9 08:48 | 显示全部楼层
highgear 老师正解!

卡尔曼滤波器是其中一个著名的算法,这些方法多用于一些多输入多输出的比较复杂的控制系统。

两轮自平衡小车只是种简单的控制,无须卡尔曼算法。

什么时候highgear 老师有空,帮俺们菜鸟上上课,讲解上回您答应的,自平衡小车的数学模型。
不光写程序 发表于 2011-8-9 10:01 | 显示全部楼层
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于 ...
highgear 发表于 2011-8-8 23:37

真正了解了算法的原理,才能根据实际选择自己所需要的啊!
 楼主| Chaos_zc 发表于 2011-8-9 12:36 | 显示全部楼层
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于 ...
highgear 发表于 2011-8-8 23:37

呵呵,谢谢highgear老师的解答。我也是想趁这个机会把卡尔曼弄懂才打算这样做。不过还不是很懂,加速度计只用来检测过零信号,并以此来矫正陀螺仪的累积误差,我这样理解对吗?
程序匠人 发表于 2011-8-9 12:42 | 显示全部楼层
楼主好像只是求一个名词解释,什么叫协方差。
 楼主| Chaos_zc 发表于 2011-8-9 12:51 | 显示全部楼层
13# 程序匠人
呵呵,禀告匠人,协方差和方差是什么俺还是学过的,因为记不清了还去查过概率论。只是我觉得卡尔曼滤波中这个概念指的应该是方差,但资料里写的都是协方差,所以求个权威的解释。
程序匠人 发表于 2011-8-9 13:33 | 显示全部楼层
13# 程序匠人  
呵呵,禀告匠人,协方差和方差是什么俺还是学过的,因为记不清了还去查过概率论。只是我觉得卡尔曼滤波中这个概念指的应该是方差,但资料里写的都是协方差,所以求个权威的解释。 ...
Chaos_zc 发表于 2011-8-9 12:51


资料里写的就是协方差,不管你信不信,反正我信,哈哈。因为我是一个实用主义者。
程序匠人 发表于 2011-8-9 13:46 | 显示全部楼层
 楼主| Chaos_zc 发表于 2011-8-9 13:49 | 显示全部楼层
15# 程序匠人
好吧。其实一个变量和其本身的协方差就等于方差。我不知道会不会国外的名称和国内书本的上的名称有翻译上的偏差,不过既然匠人大叔这样说了,我就不该再纠结于这些定义上的问题,公式怎么写就怎么用吧,哈哈
 楼主| Chaos_zc 发表于 2011-8-9 14:01 | 显示全部楼层
找到一份资料:

http://www.math.zju.edu.cn/Probability/course/chapter3-2.htm
程序匠人 发表于 2011-8-9 13:46

多谢!
 楼主| Chaos_zc 发表于 2011-8-9 14:15 | 显示全部楼层
16# 程序匠人
不知匠人大叔的小车是否用了kalman?我改了一个kalman的程序试过了滤波效果。不过对程序还是似懂非懂。呵呵,得接着往下做了,不能卡在这儿~谢谢匠人的资料
程序匠人 发表于 2011-8-9 16:31 | 显示全部楼层
16# 程序匠人  
不知匠人大叔的小车是否用了kalman?我改了一个kalman的程序试过了滤波效果。不过对程序还是似懂非懂。呵呵,得接着往下做了,不能卡在这儿~谢谢匠人的资料 ...
Chaos_zc 发表于 2011-8-9 14:15


我当时做这个数据融合时,特别研究了两种前人提出的算法。

一种是“互补滤波”,一种是“卡尔曼滤波”。

其实“卡尔曼滤波”也是一种“互补滤波”,就好像“方差”也是“协方差”一样,就好像“正方形”也是“矩形”一样。

我花了很多时间去试着推导它们的公式,仿真他们的滤波结果。唯独没有去纠缠“协方差”和“方差”的名称是否有问题。因为我说了我是实用主义者,对于一个理论,能搞懂我就去想法搞懂;如果搞不懂,我就试着去应用;如果用不来,我就把这个理论丢到垃圾桶去,想办法换一种思路看能否达成目标;如果达不成目标,我就换一个目标。总之,山不会转,水要转,先做了再说,因为:“实践出真知”、“实践是检验真理的唯一标准”。欧耶!

评分

参与人数 2威望 +2 收起 理由
Cortex-M0 + 1
Chaos_zc + 1

查看全部评分

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

本版积分规则

个人签名:在追求有意义而又快乐的目标时,我们不是在消磨时间,而是在让时间,闪闪发光。

5

主题

272

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:在追求有意义而又快乐的目标时,我们不是在消磨时间,而是在让时间,闪闪发光。

5

主题

272

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部