卡尔曼滤波器——怕忘记所以凌晨发帖
之前对平衡车很感兴趣,但是卡尔曼滤波不了解,所以一直用的是互补滤波。但是看到坛子上很多兄弟都对卡尔曼滤波器很感兴趣,所以特定研究了一方,如今共享出来和大家一起分享,希望能抛砖引玉和大家一起进步。传感器的测量值 加速度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 ;
替楼主记住了 确实是替楼主了....{:lol:} 呵呵 没看懂。。。 有点深奥 还有下文吗?真的没明白 太好了,这样的流程看起来,清晰多了。谢谢分享了。
{:time:}{:time:}{:time:} leijiayou 发表于 2012-9-27 08:40 static/image/common/back.gif
呵呵 没看懂。。。 有点深奥
有可能是我自己也没有明白,但是看了坛子上的帖子有一个关于温度卡尔曼滤波运用对照公式是这个样子的 sn516952 发表于 2012-9-27 09:06 static/image/common/back.gif
还有下文吗?真的没明白
我想用串口示波器检测一下到底能不能用,但是现在没有串口示波器。所以没有验证。 dxf5200 发表于 2012-9-27 09:06 static/image/common/back.gif
太好了,这样的流程看起来,清晰多了。谢谢分享了。
大家一起探讨一下进步会更快 我是来看2楼的头像的 好像有点问题
系统噪声设置为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:42 编辑
linhonggui2007 发表于 2012-9-27 12:20 static/image/common/back.gif
大家一起探讨一下进步会更快
刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加速度的值,延迟了一段时间。 dxf5200 发表于 2012-9-27 13:39 static/image/common/back.gif
刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加 ...
Q 和R参数设置不正确吧,那个Q和R是我随便赋的一个值 dxf5200 发表于 2012-9-27 13:39 static/image/common/back.gif
刚才我仿真了一下,感觉没有对呢?效果比我的互补还差。不晓得是不是噪声参数没有设置好。感觉就是把加 ...
请问下你的参数设置为多少了的 linhonggui2007 发表于 2012-9-27 14:05 static/image/common/back.gif
请问下你的参数设置为多少了的
我是随意设置的,kalman还没有搞明白,你的仿真结果怎么样?推荐个参数,我试一下。 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 static/image/common/back.gif
这个不错
前辈,请问下上面的代码是卡尔曼滤波算法吗,综合和好多高手写出来的,但是不知道真的正不正确 卡尔曼滤波是个方阵的估算,感觉和PID的用法差不多,也是按数据模型和IC的实际情况调节角速度和重力加速度之间的关系参数,就是实际数对原始数据的依赖程度。这个对加强后续改进要用上很多参数变化车子才能稳定应对各种情况,商业的SEGWAY有好几套传感器。
实际上我也没深入研究到,自己研究数学很闷 robotkid 发表于 2012-9-28 19:19
卡尔曼滤波是个方阵的估算,感觉和PID的用法差不多,也是按数据模型和IC的实际情况调节角速度和重力加速度 ...
怎么会是pid呢,不是是数据融合吗 数据融合要调好依赖积数的,不是随意出来的。预估值是相信角速度和重力加速度之间各多少有个比例 robotkid 发表于 2012-9-29 16:15
数据融合要调好依赖积数的,不是随意出来的。预估值是相信角速度和重力加速度之间各多少有个比例 ...
你这样说不是和互补滤波很像了,就是看他们相信谁多一点,但是互补滤波很明确。卡尔漫在融合的时候不知到怎么算的好,那请问上述公式能不 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 ; 先留着,谢谢! 来学习的 mark一下…… 研究了一段时间,现在还是一头雾水 不错,
很精简 dmjkun 发表于 2012-11-9 02:00 static/image/common/back.gif
不错,
很精简
请问能看懂不 fenxiang1103 发表于 2012-11-3 10:29 static/image/common/back.gif
研究了一段时间,现在还是一头雾水
是挺复杂的,我现在还是没有搞懂 楼主很给劲儿,正用到这个,我给你顶一个{:lol:} 楼主能否讲讲“系统噪声设置为Qacc=0.001;Qgyro=0.003测量白噪声R=0.5”这些参数是怎么来的,
程序中哪些是已知,哪些是未知,哪些是测量出来的
学习一下,今天才知道有这个名词,鄙视一下自己; 原理是数学家的事,我们是站在巨人肩膀上的。 本帖最后由 kmani 于 2012-12-14 12:17 编辑
别拿卡尔曼当个宝,效果还不如互补好!
除非,你自己做试验测出来Q,R的值。
不然就陀螺仪和加速度计融合算角度来说,卡尔曼和互补的本质是一样的,但卡尔曼比互补多了一个收敛过程,这个过程就是个浪费。
kmani 发表于 2012-12-14 12:14 static/image/common/back.gif
别拿卡尔曼当个宝,效果还不如互补好!
除非,你自己做试验测出来Q,R的值。
不然就陀螺仪和加速度计融合算 ...
一针见血,真的没看出卡尔曼反应好迟钝, linhonggui2007 发表于 2012-12-14 13:42 static/image/common/back.gif
一针见血,真的没看出卡尔曼反应好迟钝,
我断断续续地看了卡尔曼好久,最后发现就姿态融合而言本质就是互补。 number007cool 发表于 2012-11-28 11:08 static/image/common/back.gif
楼主能否讲讲“系统噪声设置为Qacc=0.001;Qgyro=0.003测量白噪声R=0.5”这些参数是怎么来的,
程序中哪些是 ...
这个我也不懂,看了z大哥的帖子上面的卡尔曼程序拆出来的。我的程序基本上和那个温度试验的例子一致,但是又模仿了z大哥程序,加入了Gyro的数值。太复杂了。数学不好,搞不懂,模模糊糊。 天书啊,先mark再慢慢看。 我就看看,看不太懂 mark........ 本帖最后由 dmjkun 于 2013-1-29 16:37 编辑
linhonggui2007 发表于 2012-11-10 00:59 static/image/common/back.gif
请问能看懂不
呵呵,还真看不懂,捧一下场 先标记一下 还是不不懂。{:smile:} {:lol:}{:sweat:}留名~~以后再看~~ 先留着,谢谢 不懂,但又要用{:cry:} mark卡尔曼滤波 没看懂{:sad:} mark一下 怎么又来一个互补滤波 楼组传点资料吧 学习 留记号 王者归来 发表于 2013-5-16 09:49 static/image/common/back.gif
怎么又来一个互补滤波
请问阁下有何高见 MARK/.././ 不懂,有木有详细的资料? 研究了很久,一直没弄懂…… mark~~~~~~~~~~ 我也要记住,学一下PID,接着学这个 学习了 顶一个 正要学卡尔曼,多谢LZ
楼主我用的四元数融合数据不知道融合完怎么办了?是滤波吗? mark!!! 记号一下 卡尔曼好难啊,唉,水平不够 mark...... mark...... 没有看明白啊! 嗯,正需要!{:smile:} 个人感觉卡尔曼滤波是用力消除高斯噪声的.....而互补滤波只是单纯的数据融合。不过在我的小车上卡尔曼确实比互补效果好,这是为何呢? 学习了! 感谢楼主分享!谢谢 一头雾水····· 好东西~~~~学习了。。 哈哈 谢谢奉献 感谢楼主分享 但是看论文的时候还是不能完全理解,我们滤波的过程中怎么和论文中的参数不能很好的匹配呢,希望懂得同学们可以给大伙讲讲,现在也在学,急急急急急急!!
怎们这个论坛不支持专用的论文格式(caj格式)大家要是看不了可以下载个阅读器
只好打包一些给大家看看,希望有用,更希望大师们给来看看我们!!感谢 哈哈,好 我也来帮忙记一下,这个流程好,思路清晰 想飞的四轴 发表于 2013-9-1 14:56
楼主我用的四元数融合数据不知道融合完怎么办了?是滤波吗?
四元数只是一种计算方法,终值不变,而卡尔漫是数据融合,终值会变 过来看看 受教了~~ 怕忘记所以大晚上MARK 据说卡尔曼是个很难的东西 谢谢分享 klm mark。。。 mark{:smile:} 可以,流程上清楚 谢谢,找时间研究一下 先mark吧... 学习学习
页:
[1]