51uwb.cn

标题: 【源码参考】kalman 滤波调试 [打印本页]

作者: tuzhuke    时间: 2020-4-18 19:56
标题: 【源码参考】kalman 滤波调试
资料包有一个kalman文件夹,里面的程序是从拷贝过来的,没有验证,加上测距效果较好,用均值滤波已经达到我的预期,
kalman滤波一直没有提上日程。
直到前两天一坛友发帖说到这个事,我才有开始琢磨

http://51uwb.cn/forum.php?mod=viewthread&tid=209&extra=page%3D1

进过一番苦苦寻找和调试,终于调通了,特此分享给各位坛友。
先看结果(linux下调试结果)
蓝色数据为原始值,红色是原始值加一个随机噪声,绿色为kalman滤波后结果。
(, 下载次数: 1028)
从仿真结果上看,kalman滤波后数据波动变小,更加稳定,更接近真实值。

附件源码使用:
linux gcc编译:gcc -o kalman main.c kalman.c matrix.c -lm
然后执行./kalman即可

*目前与资料包代码不一致,后期更新资料包kalman 滤波算法






作者: tuzhuke    时间: 2020-4-18 21:49
测距实际结果,+-5cm到+-2.5cm,稳定度好很多!
(, 下载次数: 842)

使用方法
测距之前做初始化
  1. KalMan_Init();
复制代码
算出距离后,直接传入,下面是原始数据和kalman数据全部打印出来
  1. distance = distance - dwt_getrangebias(config.chan,(float)distance, config.prf);
  2. printf("0x%04X <--> 0x%02X%02X : %.2f  %.2f cm\n",SHORT_ADDR,msg_f_send.destAddr[1],msg_f_send.destAddr[0],distance,KalMan(distance));
复制代码
部分原始数据
  1. 0x0002 <--> 0x0001 : 1.75  1.73 cm
  2. 0x0002 <--> 0x0001 : 1.72  1.73 cm
  3. 0x0002 <--> 0x0001 : 1.70  1.73 cm
  4. 0x0002 <--> 0x0001 : 1.73  1.73 cm
  5. 0x0002 <--> 0x0001 : 1.71  1.73 cm
  6. 0x0002 <--> 0x0001 : 1.77  1.73 cm
  7. 0x0002 <--> 0x0001 : 1.77  1.74 cm
  8. 0x0002 <--> 0x0001 : 1.74  1.74 cm
  9. 0x0002 <--> 0x0001 : 1.72  1.74 cm
  10. 0x0002 <--> 0x0001 : 1.72  1.74 cm
  11. 0x0002 <--> 0x0001 : 1.75  1.74 cm
  12. 0x0002 <--> 0x0001 : 1.69  1.73 cm
  13. 0x0002 <--> 0x0001 : 1.72  1.73 cm
  14. 0x0002 <--> 0x0001 : 1.80  1.74 cm
  15. 0x0002 <--> 0x0001 : 1.77  1.75 cm
  16. 0x0002 <--> 0x0001 : 1.73  1.74 cm
  17. 0x0002 <--> 0x0001 : 1.72  1.74 cm
  18. 0x0002 <--> 0x0001 : 1.74  1.74 cm
  19. 0x0002 <--> 0x0001 : 1.72  1.74 cm
  20. 0x0002 <--> 0x0001 : 1.70  1.73 cm
  21. 0x0002 <--> 0x0001 : 1.71  1.73 cm
  22. 0x0002 <--> 0x0001 : 1.76  1.74 cm
  23. 0x0002 <--> 0x0001 : 1.70  1.73 cm
  24. 0x0002 <--> 0x0001 : 1.70  1.73 cm
  25. 0x0002 <--> 0x0001 : 1.68  1.72 cm
  26. 0x0002 <--> 0x0001 : 1.71  1.72 cm
  27. 0x0002 <--> 0x0001 : 1.74  1.72 cm
  28. 0x0002 <--> 0x0001 : 1.69  1.72 cm
  29. 0x0002 <--> 0x0001 : 1.72  1.72 cm
  30. 0x0002 <--> 0x0001 : 1.70  1.72 cm
  31. 0x0002 <--> 0x0001 : 1.74  1.72 cm
  32. 0x0002 <--> 0x0001 : 1.70  1.72 cm
  33. 0x0002 <--> 0x0001 : 1.76  1.73 cm
复制代码





作者: lwd04    时间: 2020-4-21 20:13
好资料,太需要了,感谢楼主分享!
作者: 13911759801    时间: 2020-4-23 13:16
怎么下载还要金币呢
作者: 13911759801    时间: 2020-4-23 13:19
怎么下载还要金币呢
作者: hl1456    时间: 2020-4-24 19:33
金币不够
作者: huaohui    时间: 2020-4-26 10:36
紧跟大侠步伐,谢谢分享~
作者: dw1000_2020    时间: 2020-5-12 11:19
这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站呢 ? 怎么使用卡尔曼?
作者: 蓝点无限    时间: 2020-5-12 12:15
dw1000_2020 发表于 2020-5-12 11:19
这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站 ...

搞成数组,相当于多份kalman
作者: dw1000_2020    时间: 2020-5-13 11:35
分享一下,我比较笨拙的处理方式, 把楼主的源码下载下来,然后合并所有的文件到一个文件.然后再把变量都改为static. 最后把初始化函数和卡尔曼函数改个名字. 这样就新建吧, 你想搞多少份卡尔曼就搞多少份.  哈哈 ,比较笨拙.
作者: kris6767679    时间: 2020-5-13 17:21
金币不够呀楼主
作者: ryan4yun    时间: 2020-5-21 15:53
标题: 位置估计的扩展卡尔曼滤波器
本帖最后由 ryan4yun 于 2020-5-21 15:59 编辑

采用卡尔曼滤波器进行位置估计实际上本身并不是什么新鲜的技术,基于贝叶斯过程的处理方式,加上了噪声的影响,一般的卡尔曼滤波器是用来处理线性过程的,但是在这个场景中,整个过程是非线性的,所以需要对方程进行线性化处理,一阶导数导数就可以近似的得到线性化的过程,这时候就采用扩展卡尔曼滤波器来做处理(EKF),如图片所示。
作者: kaiyto    时间: 2020-5-26 09:44
请教下,这个kalman滤波对于2个模块间算距离可以用,如果是多个模块定位标签,需要标签到各个模块的距离,这个kalman滤波应该怎么用?
作者: 蓝点无限    时间: 2020-5-26 09:58
kaiyto 发表于 2020-5-26 09:44
请教下,这个kalman滤波对于2个模块间算距离可以用,如果是多个模块定位标签,需要标签到各个模块的距离, ...

如果是多对一,可以在基站滤波,每个基站做滤波处理
作者: kaiyto    时间: 2020-5-26 10:18
有没有办法扩展这个kalman算法成多维的
主要是这代码里定义了好多矩阵,很多也不清楚具体是什么意思
作者: kaiyto    时间: 2020-5-26 10:23
蓝点无限 发表于 2020-5-26 09:58
如果是多对一,可以在基站滤波,每个基站做滤波处理

在基站滤波是没问题,但这个算法里保存了很多的临时变量,对基站1用kalman滤波后,再对基站2滤波,但是前面保存了基站1的临时变量……

那就得把这个代码复制多分,用不同的名字命名了
作者: 蓝点无限    时间: 2020-5-26 16:33
kaiyto 发表于 2020-5-26 10:23
在基站滤波是没问题,但这个算法里保存了很多的临时变量,对基站1用kalman滤波后,再对基站2滤波,但是前 ...

多对一不需要多分啊。
每个基站都只有一个距离信息,就是自身和tag的距离
作者: Ember-1997    时间: 2020-6-1 17:16
感谢楼主分享
作者: cgc2003    时间: 2020-7-1 10:33

金币不够。。。。等会下载看看
作者: 15621020926    时间: 2020-7-8 14:47
感谢楼主,就是原理看不太懂
作者: 15621020926    时间: 2020-7-8 15:12
有没有人知道为什么那样写状态方程
作者: liuxia    时间: 2020-7-21 15:02
如何购买呢?
作者: 15825754748    时间: 2020-8-10 14:12
谢谢分享~~
作者: wen130    时间: 2020-9-5 17:47
效果还可以,关系分享
作者: dragon_L    时间: 2020-9-14 11:01
请问均值滤波的代码在哪儿可以看到?下载了示例代码“BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01”和卡尔曼的代码,都是卡尔曼没有看到均值滤波的代码
作者: lshlin    时间: 2020-10-22 15:04
感谢分享,下载研究一下
作者: lshlin    时间: 2020-10-22 15:07
怎么下载了显示文件已破坏,解压不了:lshlin@163.com,谢谢
作者: 时间复检    时间: 2020-10-26 09:40
这是静态测距吗,动态测距的滤波该怎么做呀

作者: paine0224    时间: 2020-10-27 21:56
谢谢楼主分享
作者: lshlin    时间: 2020-10-28 13:53
文件已经被破坏,下载了打不开
作者: rickmcu    时间: 2020-11-18 10:29
金币不够,下载不了,难过
作者: 1273753254    时间: 2020-12-11 10:24
赞一下金币看看资料
作者: lwwww    时间: 2020-12-22 15:14
老哥这个咋用呀,有没有个说明文档呢
作者: lwwww    时间: 2020-12-26 21:41
原始的观测数据不稳定的原因是什么呢?请教一下,发现设备的测距数据一直在上下小幅度的动态变化
作者: soc    时间: 2020-12-29 13:46
谢谢分享,下载下来看看
作者: lwwww    时间: 2020-12-30 08:54
这个是静态定位效果可以,动态该怎么定位?
作者: DrRico    时间: 2021-1-13 09:12
谢谢楼主,make一下我去赚点金币就过来下载
作者: DrRico    时间: 2021-1-13 09:13
DrRico 发表于 2021-1-13 09:12
谢谢楼主,make一下我去赚点金币就过来下载

我也去别的帖子水水金币
作者: DrRico    时间: 2021-1-13 09:14
我也去别的帖子水水金币

作者: haonan1211    时间: 2021-1-13 16:54
棒棒啊,需要
作者: bran    时间: 2021-1-14 18:51
谢谢分享!
作者: zhouliming    时间: 2021-2-23 14:53
怎么还要金币啊
作者: zhouliming    时间: 2021-2-23 14:54
这个是matlab仿真吗
作者: hy19840526126    时间: 2021-2-27 15:21
谢谢分享!
作者: so_zhou    时间: 2021-3-4 01:27
必须学习一下,正好在做
作者: 1141042c    时间: 2021-3-28 06:56
Thx for your share
作者: wbsay    时间: 2021-4-6 20:50
感谢楼主,过会下载看看
作者: jackliu    时间: 2021-4-26 14:11
不错不错 顶起
作者: gdzqltkj    时间: 2021-4-29 17:10
非常好,感谢楼主分享
作者: gdzqltkj    时间: 2021-4-29 17:14
最近跟楼主好好学习
作者: gdzqltkj    时间: 2021-4-29 17:20
dw1000_2020 发表于 2020-5-13 11:35
分享一下,我比较笨拙的处理方式, 把楼主的源码下载下来,然后合并所有的文件到一个文件.然后再把变量都改为s ...

你弄好了么,不错啊,能分享成果么? :)发我邮箱 876023566@qq.com ,感谢
作者: gdzqltkj    时间: 2021-4-29 17:34
ryan4yun 发表于 2020-5-21 15:53
采用卡尔曼滤波器进行位置估计实际上本身并不是什么新鲜的技术,基于贝叶斯过程的处理方式,加上了噪声的影 ...

数学不错,向你学习
作者: gdzqltkj    时间: 2021-4-29 17:35
15621020926 发表于 2020-7-8 14:47
感谢楼主,就是原理看不太懂

我也原理头疼
作者: gdzqltkj    时间: 2021-4-29 18:46
tuzhuke 发表于 2020-4-18 21:49
测距实际结果,+-5cm到+-2.5cm,稳定度好很多!

很好,准备试下F1的板子
作者: 藏丶宝    时间: 2021-6-17 09:54
必须好好学习一下
作者: fwz    时间: 2021-6-21 15:03

金币不够
作者: scopus    时间: 2021-6-22 14:21
用开源的文件夹 计算,与未滤波的数据比,偏差很大,试试这个
作者: csuhl    时间: 2021-7-20 13:07
看起来不错

作者: easi0n    时间: 2021-7-27 17:50
好东西,感谢楼主的分享
作者: svalen    时间: 2021-8-9 16:10
dw1000_2020 发表于 2020-5-12 11:19
这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站 ...

多线程调用
作者: szmcumcu    时间: 2021-9-28 17:56
真的是好资料,谢谢楼主无私的分享,学习了,赞赞
作者: szmcumcu    时间: 2021-9-29 08:58
这个资料真心不错,赞一个,谢谢
作者: vacabun    时间: 2021-9-29 19:28

感谢分享!!!!!
作者: Zeman    时间: 2021-10-14 18:08
感谢楼主的分享,攒攒金币看一下,有没有可以帮忙发一下的老哥 ,感谢感谢 1512841924@qq.com
作者: hominidclint    时间: 2021-11-24 23:07
刚来,没钱,学习学习
作者: 老北京鸡肉卷    时间: 2021-11-26 10:07
感谢!!!!好东西
作者: yjxwyyve    时间: 2021-12-16 08:45
初始的测量误差如何设置,状态转移系数是不是需要建模才可以得出啊?
作者: mengbinaaa    时间: 2022-1-3 23:10
感谢分享,赞一个
作者: 714162838    时间: 2022-1-10 16:13
tuzhuke 发表于 2020-4-18 21:49
测距实际结果,+-5cm到+-2.5cm,稳定度好很多!

学习学习!下载需要金币
作者: 某某    时间: 2022-1-23 17:27
真的很有用,点赞!
作者: 18383006276    时间: 2022-2-17 15:23
tuzhuke 发表于 2020-4-18 21:49
测距实际结果,+-5cm到+-2.5cm,稳定度好很多!

好资料,感谢楼主分享
作者: Aimmie    时间: 2022-3-8 16:27
请问仿真的绘图代码可以分享吗?
作者: Aimmie    时间: 2022-3-9 13:16
请问这个作图的代码是否可以分享!
作者: wennnnie    时间: 2022-3-16 17:31
赶来试试!!
作者: linyu0395    时间: 2022-3-23 19:08
好是好  就是贵了点
作者: uwb初学    时间: 2022-5-15 10:55
感谢分享,正好最近在看滤波的事

作者: linchenmm    时间: 2022-5-16 15:50
之前我做80张标签滤波用的平均值法,是有规律的,卡尔曼滤波还是要好得多
作者: linchenmm    时间: 2022-5-17 11:37
lwwww 发表于 2020-12-22 15:14
老哥这个咋用呀,有没有个说明文档呢

别人都说了如何用了,还需要文档???
作者: pkx    时间: 2022-5-22 13:47
我想要这个资料,学习了
作者: pkx    时间: 2022-5-22 13:48
dw1000_2020 发表于 2020-5-12 11:19
这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站 ...

只在基站上用卡尔曼滤波估计出最优的距离,标签不需要卡尔曼滤波
作者: Dragon    时间: 2022-8-16 13:28
资料包在哪里
作者: liyanyi    时间: 2022-8-17 19:47
dw1000_2020 发表于 2020-5-13 11:35
分享一下,我比较笨拙的处理方式, 把楼主的源码下载下来,然后合并所有的文件到一个文件.然后再把变量都改为s ...

这样是不是就相当于重复写一遍这个卡尔曼滤波的函数(当成新的函数)?然后在调用
作者: ryanyooo    时间: 2022-9-2 20:06
dw1000_2020 发表于 2020-5-13 11:35
分享一下,我比较笨拙的处理方式, 把楼主的源码下载下来,然后合并所有的文件到一个文件.然后再把变量都改为s ...

      感谢
作者: Akwxh_    时间: 2022-9-2 21:59
这个资料真心不错
作者: Akwxh_    时间: 2022-9-2 22:00
感谢,攒一攒金币
作者: li10086    时间: 2022-9-13 21:11
看了个大概,谢谢大佬分享
作者: uwb158    时间: 2022-9-14 14:23
好资料,太需要了,感谢楼主分享!
作者: fxb    时间: 2022-10-26 23:12
好资料,太需要了,感谢楼主分享!
作者: CC2009    时间: 2022-10-27 09:33
没有金币~~~~~~~
作者: uwbzpp    时间: 2022-11-3 20:12

好资料,太需要了,感谢楼主分享!
作者: mosquito    时间: 2022-11-20 11:48
刚来,没钱,学习学习
作者: huayungk    时间: 2022-11-21 21:34
已经采购,感谢
作者: Marshan    时间: 2023-1-16 16:32
阅读论文发现卡尔曼滤波方法,打算用在定位上,很不错的参考资料
作者: Marshan    时间: 2023-1-16 16:38
这个算法可以用在上位机导出的数据上进行数据处理吗?
作者: 359086235    时间: 2023-2-17 21:06
求代码,呜呜呜
作者: MingMoo    时间: 2023-3-7 08:49
学习了,感谢坛主。
作者: lzh    时间: 2023-3-28 13:43
666期待算法内容
作者: lzh    时间: 2023-3-28 13:46

666期待算法内容,金币不够啊
作者: lzh    时间: 2023-3-28 13:46
66期待算法内容,金币不够啊
作者: lzh    时间: 2023-3-28 13:46
66期待算法内容,金币不够啊




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3