打印

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

[复制链接]
13654|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

因为陀螺仪需要通过角速度积分得到角度,会产生累计误差,而且本身就存在温漂;加速度计长时稳定,瞬时的误差较大。所以要结合两者做数据融合才能得到真实的角度。当然也可以用互补滤波,不过卡尔曼效果比较好。

使用特权

评论回复
5
Chaos_zc|  楼主 | 2011-8-8 14:23 | 只看该作者
自己顶一下,不然要沉了

使用特权

评论回复
6
不光写程序| | 2011-8-8 14:26 | 只看该作者
哎!最近坛子里好像没人了,我发个讨论帖没一个人回复。郁闷啊!
顺便做个广告:
平衡车原理图分析贴:关于平衡小车中大治的疑惑(8月8日晚更新) https://bbs.21ic.com/viewthread.php?tid=252632

欢迎大家参加。

使用特权

评论回复
7
Chaos_zc|  楼主 | 2011-8-8 21:40 | 只看该作者
6# 不光写程序
呵呵,遇到程序的问题可以交流一下。我做的小车硬件是自己做的,和大家的套件差别比较大。

使用特权

评论回复
8
Chaos_zc|  楼主 | 2011-8-8 21:40 | 只看该作者
再顶!

使用特权

评论回复
9
highgear| | 2011-8-8 23:37 | 只看该作者
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于一些多输入多输出的比较复杂的控制系统。

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

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

使用特权

评论回复
评分
参与人数 3威望 +3 收起 理由
Chaos_zc + 1
不光写程序 + 1
Cortex-M0 + 1
10
Cortex-M0| | 2011-8-9 08:48 | 只看该作者
highgear 老师正解!

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

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

什么时候highgear 老师有空,帮俺们菜鸟上上课,讲解上回您答应的,自平衡小车的数学模型。

使用特权

评论回复
11
不光写程序| | 2011-8-9 10:01 | 只看该作者
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于 ...
highgear 发表于 2011-8-8 23:37

真正了解了算法的原理,才能根据实际选择自己所需要的啊!

使用特权

评论回复
12
Chaos_zc|  楼主 | 2011-8-9 12:36 | 只看该作者
我学过一些预测和估计算法的理论,但除了matlab的仿真,没有做过实际应用。
预测算法的核心是矫正,即通过比较算法模型的计算输出与实测的输出,来更新算法模型,卡尔曼滤波器是其中一个著名的算法,这些方法多用于 ...
highgear 发表于 2011-8-8 23:37

呵呵,谢谢highgear老师的解答。我也是想趁这个机会把卡尔曼弄懂才打算这样做。不过还不是很懂,加速度计只用来检测过零信号,并以此来矫正陀螺仪的累积误差,我这样理解对吗?

使用特权

评论回复
13
程序匠人| | 2011-8-9 12:42 | 只看该作者
楼主好像只是求一个名词解释,什么叫协方差。

使用特权

评论回复
14
Chaos_zc|  楼主 | 2011-8-9 12:51 | 只看该作者
13# 程序匠人
呵呵,禀告匠人,协方差和方差是什么俺还是学过的,因为记不清了还去查过概率论。只是我觉得卡尔曼滤波中这个概念指的应该是方差,但资料里写的都是协方差,所以求个权威的解释。

使用特权

评论回复
15
程序匠人| | 2011-8-9 13:33 | 只看该作者
13# 程序匠人  
呵呵,禀告匠人,协方差和方差是什么俺还是学过的,因为记不清了还去查过概率论。只是我觉得卡尔曼滤波中这个概念指的应该是方差,但资料里写的都是协方差,所以求个权威的解释。 ...
Chaos_zc 发表于 2011-8-9 12:51


资料里写的就是协方差,不管你信不信,反正我信,哈哈。因为我是一个实用主义者。

使用特权

评论回复
16
程序匠人| | 2011-8-9 13:46 | 只看该作者

使用特权

评论回复
17
Chaos_zc|  楼主 | 2011-8-9 13:49 | 只看该作者
15# 程序匠人
好吧。其实一个变量和其本身的协方差就等于方差。我不知道会不会国外的名称和国内书本的上的名称有翻译上的偏差,不过既然匠人大叔这样说了,我就不该再纠结于这些定义上的问题,公式怎么写就怎么用吧,哈哈

使用特权

评论回复
18
Chaos_zc|  楼主 | 2011-8-9 14:01 | 只看该作者
找到一份资料:

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

多谢!

使用特权

评论回复
19
Chaos_zc|  楼主 | 2011-8-9 14:15 | 只看该作者
16# 程序匠人
不知匠人大叔的小车是否用了kalman?我改了一个kalman的程序试过了滤波效果。不过对程序还是似懂非懂。呵呵,得接着往下做了,不能卡在这儿~谢谢匠人的资料

使用特权

评论回复
20
程序匠人| | 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

粉丝