linhonggui2007 发表于 2012-9-27 01:12:55

卡尔曼滤波器——怕忘记所以凌晨发帖

   之前对平衡车很感兴趣,但是卡尔曼滤波不了解,所以一直用的是互补滤波。但是看到坛子上很多兄弟都对卡尔曼滤波器很感兴趣,所以特定研究了一方,如今共享出来和大家一起分享,希望能抛砖引玉和大家一起进步。

传感器的测量值 加速度Acc_Mess    陀螺仪 Gyro_Mess
卡尔曼滤波器增益 Kg
卡尔曼滤波后的真实角度值 Acc_Real
系统时钟 Time_Loop

测量不确定度 Q=10

最优角度值的偏差 L

高斯白噪声 T
中间变量 Acc_Media

Acc_Media=Acc_Real+Gyro_Mess*Time_Loop ;//计算瞬时角度值
T=sqrt(Q*Q+L*L);                                  //计算高斯白噪声
Kg=T*sqrt(1/(T*T+Q*Q)) ;                        //计算卡尔曼滤波器的增益
Acc_Real=Acc_Media+Kg*(Acc_Mess-Acc_Media); //计算真实角度值
L=sqrt(1-Kg)*T;                                           //计算真实角度值的偏差

return Acc_Real ;   


dafeng123 发表于 2012-9-27 08:10:34

替楼主记住了

xiaoliusheng 发表于 2012-9-27 08:25:10

确实是替楼主了....{:lol:}

leijiayou 发表于 2012-9-27 08:40:21

呵呵      没看懂。。。    有点深奥

sn516952 发表于 2012-9-27 09:06:10

还有下文吗?真的没明白

dxf5200 发表于 2012-9-27 09:06:14

太好了,这样的流程看起来,清晰多了。谢谢分享了。

zqd311107 发表于 2012-9-27 09:30:44

{:time:}{:time:}{:time:}

linhonggui2007 发表于 2012-9-27 12:14:07

leijiayou 发表于 2012-9-27 08:40 static/image/common/back.gif
呵呵      没看懂。。。    有点深奥

有可能是我自己也没有明白,但是看了坛子上的帖子有一个关于温度卡尔曼滤波运用对照公式是这个样子的

linhonggui2007 发表于 2012-9-27 12:15:29

sn516952 发表于 2012-9-27 09:06 static/image/common/back.gif
还有下文吗?真的没明白

我想用串口示波器检测一下到底能不能用,但是现在没有串口示波器。所以没有验证。

linhonggui2007 发表于 2012-9-27 12:20:27

dxf5200 发表于 2012-9-27 09:06 static/image/common/back.gif
太好了,这样的流程看起来,清晰多了。谢谢分享了。

大家一起探讨一下进步会更快

fire3000 发表于 2012-9-27 12:29:04

我是来看2楼的头像的

linhonggui2007 发表于 2012-9-27 12:42:34

好像有点问题

系统噪声设置为Q=0.1
测量白噪声R=0.01

Acc_Media=Acc_Real+Gyro_Mess*Time_Loop ;//计算瞬时角度值
T=sqrt(Q*Q+L*L);                                  //计算高斯白噪声
Kg=T*sqrt(1/(T*T+R*R)) ;                        //计算卡尔曼滤波器的增益
Acc_Real=Acc_Media+Kg*(Acc_Mess-Acc_Media); //计算真实角度值
L=sqrt(1-Kg)*T;                                           //计算真实角度值的偏差

return Acc_Real ;   

dxf5200 发表于 2012-9-27 13:39:36

本帖最后由 dxf5200 于 2012-9-27 13:42 编辑

linhonggui2007 发表于 2012-9-27 12:20 static/image/common/back.gif
大家一起探讨一下进步会更快

刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加速度的值,延迟了一段时间。

linhonggui2007 发表于 2012-9-27 13:46:53

dxf5200 发表于 2012-9-27 13:39 static/image/common/back.gif
刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加 ...

Q 和R参数设置不正确吧,那个Q和R是我随便赋的一个值

linhonggui2007 发表于 2012-9-27 14:05:21

dxf5200 发表于 2012-9-27 13:39 static/image/common/back.gif
刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加 ...

请问下你的参数设置为多少了的

dxf5200 发表于 2012-9-27 14:53:32

linhonggui2007 发表于 2012-9-27 14:05 static/image/common/back.gif
请问下你的参数设置为多少了的

我是随意设置的,kalman还没有搞明白,你的仿真结果怎么样?推荐个参数,我试一下。

linhonggui2007 发表于 2012-9-27 15:31:05

dxf5200 发表于 2012-9-27 14:53 static/image/common/back.gif
我是随意设置的,kalman还没有搞明白,你的仿真结果怎么样?推荐个参数,我试一下。 ...

试试这个参数
Q = 0.022;
R = 0.617;
不好意思,小弟不才,不会MATLAB
我是想今晚回家后用串口示波器观察一下。

robotkid 发表于 2012-9-27 21:34:28

这个不错

linhonggui2007 发表于 2012-9-27 21:37:06

robotkid 发表于 2012-9-27 21:34 static/image/common/back.gif
这个不错

前辈,请问下上面的代码是卡尔曼滤波算法吗,综合和好多高手写出来的,但是不知道真的正不正确

robotkid 发表于 2012-9-28 19:19:26

卡尔曼滤波是个方阵的估算,感觉和PID的用法差不多,也是按数据模型和IC的实际情况调节角速度和重力加速度之间的关系参数,就是实际数对原始数据的依赖程度。这个对加强后续改进要用上很多参数变化车子才能稳定应对各种情况,商业的SEGWAY有好几套传感器。
实际上我也没深入研究到,自己研究数学很闷

linhonggui2007 发表于 2012-9-29 12:16:58

robotkid 发表于 2012-9-28 19:19
卡尔曼滤波是个方阵的估算,感觉和PID的用法差不多,也是按数据模型和IC的实际情况调节角速度和重力加速度 ...

怎么会是pid呢,不是是数据融合吗

robotkid 发表于 2012-9-29 16:15:53

数据融合要调好依赖积数的,不是随意出来的。预估值是相信角速度和重力加速度之间各多少有个比例

linhonggui2007 发表于 2012-9-30 09:30:49

robotkid 发表于 2012-9-29 16:15
数据融合要调好依赖积数的,不是随意出来的。预估值是相信角速度和重力加速度之间各多少有个比例 ...

你这样说不是和互补滤波很像了,就是看他们相信谁多一点,但是互补滤波很明确。卡尔漫在融合的时候不知到怎么算的好,那请问上述公式能不

linhonggui2007 发表于 2012-9-30 12:52:27

linhonggui2007 发表于 2012-9-27 12:42 static/image/common/back.gif
好像有点问题

系统噪声设置为Q=0.1



系统噪声设置为Qacc=0.001;Qgyro=0.003

测量白噪声R=0.5


Acc_Media=Acc_Real+(Gyro_Mess-Gyro_Bias)*Time_Loop ;//计算瞬时角度值
Tgyro=sqrt(Qgyro*Qgyro+Lgyro*Lgyro);                                  //计算高斯白噪声
Kggyro=Tgyro*sqrt(1/(T*T+R*R)) ;                        //计算卡尔曼滤波器的增益

Tacc=sqrt(Qacc*Qacc+Lacc*Lacc)
Kgacc=Tacc*sqrt(1/(T*T+R*R))

Angle_Erro=Acc_Mess-Acc_Media;

Acc_Real=Acc_Media+Kg*(Acc_Mess-Acc_Media); //计算真实角度值
Gyro_Bias=Angle_Erro+Kggyro*Angle_Erro;
Gyro=Gyro_Mess-Gyro_Bias

Lgyro=sqrt(1-Kgacc)*Tgyro;                                           //计算真实角度值的偏差
Lacc=sqrt(1-Kgacc)*Tacc;
return Acc_Real ;   

qingaixww 发表于 2012-10-13 17:27:52

先留着,谢谢!

xueren 发表于 2012-10-15 20:32:09

来学习的

gyth_lx 发表于 2012-10-15 23:52:42

mark一下……

fenxiang1103 发表于 2012-11-3 10:29:37

研究了一段时间,现在还是一头雾水

dmjkun 发表于 2012-11-9 02:00:33

不错,
很精简

linhonggui2007 发表于 2012-11-10 00:59:40

dmjkun 发表于 2012-11-9 02:00 static/image/common/back.gif
不错,
很精简

请问能看懂不

linhonggui2007 发表于 2012-11-10 01:00:05

fenxiang1103 发表于 2012-11-3 10:29 static/image/common/back.gif
研究了一段时间,现在还是一头雾水

是挺复杂的,我现在还是没有搞懂

信天游 发表于 2012-11-26 18:31:21

楼主很给劲儿,正用到这个,我给你顶一个{:lol:}

number007cool 发表于 2012-11-28 11:08:31

楼主能否讲讲“系统噪声设置为Qacc=0.001;Qgyro=0.003测量白噪声R=0.5”这些参数是怎么来的,
程序中哪些是已知,哪些是未知,哪些是测量出来的

dgdzas 发表于 2012-11-28 15:13:24

学习一下,今天才知道有这个名词,鄙视一下自己;

etdz 发表于 2012-12-14 11:31:41

原理是数学家的事,我们是站在巨人肩膀上的。

kmani 发表于 2012-12-14 12:14:55

本帖最后由 kmani 于 2012-12-14 12:17 编辑

别拿卡尔曼当个宝,效果还不如互补好!
除非,你自己做试验测出来Q,R的值。
不然就陀螺仪和加速度计融合算角度来说,卡尔曼和互补的本质是一样的,但卡尔曼比互补多了一个收敛过程,这个过程就是个浪费。

linhonggui2007 发表于 2012-12-14 13:42:20

kmani 发表于 2012-12-14 12:14 static/image/common/back.gif
别拿卡尔曼当个宝,效果还不如互补好!
除非,你自己做试验测出来Q,R的值。
不然就陀螺仪和加速度计融合算 ...

一针见血,真的没看出卡尔曼反应好迟钝,

kmani 发表于 2012-12-14 21:46:27

linhonggui2007 发表于 2012-12-14 13:42 static/image/common/back.gif
一针见血,真的没看出卡尔曼反应好迟钝,

我断断续续地看了卡尔曼好久,最后发现就姿态融合而言本质就是互补。

linhonggui2007 发表于 2012-12-14 23:01:48

number007cool 发表于 2012-11-28 11:08 static/image/common/back.gif
楼主能否讲讲“系统噪声设置为Qacc=0.001;Qgyro=0.003测量白噪声R=0.5”这些参数是怎么来的,
程序中哪些是 ...

这个我也不懂,看了z大哥的帖子上面的卡尔曼程序拆出来的。我的程序基本上和那个温度试验的例子一致,但是又模仿了z大哥程序,加入了Gyro的数值。太复杂了。数学不好,搞不懂,模模糊糊。

ahuang227 发表于 2013-1-10 21:33:35

天书啊,先mark再慢慢看。

zbf 发表于 2013-1-10 22:10:21

我就看看,看不太懂

z333yang 发表于 2013-1-16 16:03:44

mark........

dmjkun 发表于 2013-1-29 16:35:47

本帖最后由 dmjkun 于 2013-1-29 16:37 编辑

linhonggui2007 发表于 2012-11-10 00:59 static/image/common/back.gif
请问能看懂不

呵呵,还真看不懂,捧一下场

electricdream 发表于 2013-2-11 15:33:36

先标记一下

我惯的女人 发表于 2013-2-26 08:01:20

还是不不懂。{:smile:}

_Daniel_ 发表于 2013-3-1 09:22:32

{:lol:}{:sweat:}留名~~以后再看~~

hnstray 发表于 2013-3-1 14:28:57

先留着,谢谢

gyzzg2030 发表于 2013-3-22 19:27:25

不懂,但又要用{:cry:}

xiong57785 发表于 2013-4-19 20:21:03

mark卡尔曼滤波

Gost 发表于 2013-4-23 20:11:53

没看懂{:sad:}

jinxiafeng 发表于 2013-5-13 20:00:05

mark一下

王者归来 发表于 2013-5-16 09:49:21

怎么又来一个互补滤波

xukkkkkk 发表于 2013-5-17 20:13:49

楼组传点资料吧

cls9811 发表于 2013-5-19 20:32:08

学习 留记号

linhonggui2007 发表于 2013-5-20 20:17:47

王者归来 发表于 2013-5-16 09:49 static/image/common/back.gif
怎么又来一个互补滤波


请问阁下有何高见

ligongxiaobie 发表于 2013-5-22 20:54:42

MARK/.././

lucky_jeck 发表于 2013-5-29 11:44:14

不懂,有木有详细的资料?

rantingting 发表于 2013-7-2 18:32:16

研究了很久,一直没弄懂……

豳风sxxk 发表于 2013-7-5 00:46:58

mark~~~~~~~~~~

1125526801 发表于 2013-7-6 22:48:29

我也要记住,学一下PID,接着学这个

huhulixin 发表于 2013-8-17 16:27:55

学习了 顶一个

chinaqiaobo 发表于 2013-8-25 01:49:12

正要学卡尔曼,多谢LZ

想飞的四轴 发表于 2013-9-1 14:56:37

楼主我用的四元数融合数据不知道融合完怎么办了?是滤波吗?

xl1736 发表于 2013-9-1 22:54:58

mark!!!

jz701209李 发表于 2013-9-5 17:44:47

记号一下      

jj632856828 发表于 2013-10-7 18:17:49

卡尔曼好难啊,唉,水平不够

lochsash 发表于 2013-10-19 15:47:30

mark......

lochsash 发表于 2013-10-19 15:47:58

mark......

梁国俭 发表于 2013-10-20 18:23:03

没有看明白啊!

liuruoshui 发表于 2013-10-20 18:56:25

嗯,正需要!{:smile:}

xl1736 发表于 2013-11-17 12:04:52

个人感觉卡尔曼滤波是用力消除高斯噪声的.....而互补滤波只是单纯的数据融合。不过在我的小车上卡尔曼确实比互补效果好,这是为何呢?

lrbdh 发表于 2013-11-20 15:51:25

学习了!

chushibinsaobao 发表于 2013-12-2 16:29:55

感谢楼主分享!谢谢

ldj003 发表于 2013-12-3 15:54:32

一头雾水·····

liudongyu 发表于 2013-12-9 11:52:47

好东西~~~~学习了。。

四轴飞行器 发表于 2013-12-9 11:54:53

哈哈 谢谢奉献

chushibinsaobao 发表于 2013-12-26 22:05:53

感谢楼主分享 但是看论文的时候还是不能完全理解,我们滤波的过程中怎么和论文中的参数不能很好的匹配呢,希望懂得同学们可以给大伙讲讲,现在也在学,急急急急急急!!

怎们这个论坛不支持专用的论文格式(caj格式)大家要是看不了可以下载个阅读器
只好打包一些给大家看看,希望有用,更希望大师们给来看看我们!!感谢

yhsatp 发表于 2014-1-10 16:51:22

哈哈,好

木君之上 发表于 2014-2-26 16:55:58

我也来帮忙记一下,这个流程好,思路清晰

linhonggui2007 发表于 2014-3-1 06:13:17

想飞的四轴 发表于 2013-9-1 14:56
楼主我用的四元数融合数据不知道融合完怎么办了?是滤波吗?

四元数只是一种计算方法,终值不变,而卡尔漫是数据融合,终值会变

黄瓜 发表于 2014-3-2 10:52:01

过来看看

lidreamer 发表于 2014-3-29 07:51:11

受教了~~

JIFEINOVEL 发表于 2014-4-10 22:35:18

怕忘记所以大晚上MARK

搁浅的风度 发表于 2014-4-15 11:50:00

据说卡尔曼是个很难的东西

linfulin 发表于 2014-4-15 16:24:17

谢谢分享 klm

xingmazhao 发表于 2014-4-15 16:42:09

mark。。。

carsio 发表于 2014-4-15 16:56:06

mark{:smile:}

leeloo 发表于 2014-9-29 16:36:03

可以,流程上清楚

托马斯小火车 发表于 2014-10-3 21:48:32

谢谢,找时间研究一下

sunzehua 发表于 2014-10-20 09:07:58

先mark吧...

yanjiesh 发表于 2014-10-30 22:25:00

学习学习                              
页: [1]
查看完整版本: 卡尔曼滤波器——怕忘记所以凌晨发帖