搬运到了自己的程序中,经过一系列修改后还是没有达到想要的结果,Q和R的取值相当难确定,取小了偏差太大,取大了第一个关节点偏离太远,看到了一种不需要自己取值的自适应扩展卡尔曼和自适应无迹卡尔曼,感觉无迹卡尔曼会比扩展卡尔曼更加适合我的模型。
关于Q和R,可以参考这篇文章:一文详解卡尔曼滤波两处噪声的来源及影响_卡尔曼滤波过程噪声q怎么确定-CSDN博客
UKF程序参考这篇文章:(搬运过来有点小错误可以自己修改)
UKF跟踪算法原理及C++代码实现_ukf c++实现-CSDN博客
初始的Q和R值对于整个模型的精准度来说至关重要,查找了很多文献,并没有找到一个对此和闹得解释,他这个最佳值近似于正态分布,但并不知道最好的值在哪个范围,如果还是要使用的话建议定一改一,不过我再学了一遍无迹卡尔曼公式以后发现了程序一些漏洞,现在还没改出来。
线性的卡尔曼可能很好用,非线性的卡尔曼很容易崩溃,尤其矩阵不正定的时候就运行不出来,虽然说是自适应无迹卡尔曼,但还是要确定最初的Q和R值,设置偏了效果依旧不好。一度怀疑这个东西的合理性。