tuzhuke 发表于 2020-4-18 19:56:18

【源码参考】kalman 滤波调试

资料包有一个kalman文件夹,里面的程序是从拷贝过来的,没有验证,加上测距效果较好,用均值滤波已经达到我的预期,
kalman滤波一直没有提上日程。
直到前两天一坛友发帖说到这个事,我才有开始琢磨
http://51uwb.cn/forum.php?mod=viewthread&tid=209&extra=page%3D1

进过一番苦苦寻找和调试,终于调通了,特此分享给各位坛友。
先看结果(linux下调试结果)
蓝色数据为原始值,红色是原始值加一个随机噪声,绿色为kalman滤波后结果。

从仿真结果上看,kalman滤波后数据波动变小,更加稳定,更接近真实值。

附件源码使用:
linux gcc编译:gcc -o kalman main.c kalman.c matrix.c -lm
然后执行./kalman即可
*目前与资料包代码不一致,后期更新资料包kalman 滤波算法





tuzhuke 发表于 2020-4-18 21:49:57

测距实际结果,+-5cm到+-2.5cm,稳定度好很多!


使用方法
测距之前做初始化
KalMan_Init();算出距离后,直接传入,下面是原始数据和kalman数据全部打印出来
distance = distance - dwt_getrangebias(config.chan,(float)distance, config.prf);
printf("0x%04X <--> 0x%02X%02X : %.2f%.2f cm\n",SHORT_ADDR,msg_f_send.destAddr,msg_f_send.destAddr,distance,KalMan(distance));
部分原始数据
0x0002 <--> 0x0001 : 1.751.73 cm
0x0002 <--> 0x0001 : 1.721.73 cm
0x0002 <--> 0x0001 : 1.701.73 cm
0x0002 <--> 0x0001 : 1.731.73 cm
0x0002 <--> 0x0001 : 1.711.73 cm
0x0002 <--> 0x0001 : 1.771.73 cm
0x0002 <--> 0x0001 : 1.771.74 cm
0x0002 <--> 0x0001 : 1.741.74 cm
0x0002 <--> 0x0001 : 1.721.74 cm
0x0002 <--> 0x0001 : 1.721.74 cm
0x0002 <--> 0x0001 : 1.751.74 cm
0x0002 <--> 0x0001 : 1.691.73 cm
0x0002 <--> 0x0001 : 1.721.73 cm
0x0002 <--> 0x0001 : 1.801.74 cm
0x0002 <--> 0x0001 : 1.771.75 cm
0x0002 <--> 0x0001 : 1.731.74 cm
0x0002 <--> 0x0001 : 1.721.74 cm
0x0002 <--> 0x0001 : 1.741.74 cm
0x0002 <--> 0x0001 : 1.721.74 cm
0x0002 <--> 0x0001 : 1.701.73 cm
0x0002 <--> 0x0001 : 1.711.73 cm
0x0002 <--> 0x0001 : 1.761.74 cm
0x0002 <--> 0x0001 : 1.701.73 cm
0x0002 <--> 0x0001 : 1.701.73 cm
0x0002 <--> 0x0001 : 1.681.72 cm
0x0002 <--> 0x0001 : 1.711.72 cm
0x0002 <--> 0x0001 : 1.741.72 cm
0x0002 <--> 0x0001 : 1.691.72 cm
0x0002 <--> 0x0001 : 1.721.72 cm
0x0002 <--> 0x0001 : 1.701.72 cm
0x0002 <--> 0x0001 : 1.741.72 cm
0x0002 <--> 0x0001 : 1.701.72 cm
0x0002 <--> 0x0001 : 1.761.73 cm




lwd04 发表于 2020-4-21 20:13:12

好资料,太需要了,感谢楼主分享!

13911759801 发表于 2020-4-23 13:16:59

怎么下载还要金币呢

13911759801 发表于 2020-4-23 13:19:59

怎么下载还要金币呢

hl1456 发表于 2020-4-24 19:33:25

金币不够:):):):)

huaohui 发表于 2020-4-26 10:36:36

紧跟大侠步伐,谢谢分享~

dw1000_2020 发表于 2020-5-12 11:19:28

这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站呢 ? 怎么使用卡尔曼?

蓝点无限 发表于 2020-5-12 12:15:19

dw1000_2020 发表于 2020-5-12 11:19
这个卡尔曼滤波,效果可以,
我有个问题, 这个针对一个标签 若干个基站的 情况下. 如果是多个标签 多个基站 ...

搞成数组,相当于多份kalman

dw1000_2020 发表于 2020-5-13 11:35:47

分享一下,我比较笨拙的处理方式, 把楼主的源码下载下来,然后合并所有的文件到一个文件.然后再把变量都改为static. 最后把初始化函数和卡尔曼函数改个名字. 这样就新建吧, 你想搞多少份卡尔曼就搞多少份.哈哈 ,比较笨拙.
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【源码参考】kalman 滤波调试