收到一些国内外朋友的来信,咨询关于容积卡尔曼滤波的问题(CKF),大家比较疑惑的应该就是generator或G-orbit的概念。考虑到工作以后,重心必然转移,不可能再像现在这样详细的回答所有人的问题,更不可能再帮大家改论文、写(或改)代码了,请各位谅解!在此,上传一个CKF和五阶CKF用于目标跟踪的示例代码,代码中包含详细的注释,希望对大家以后的学习和研究有所帮助!
此代码利用C++对五阶CKF的第二G-轨迹进行了封装(Perms.exe),能理解最好,如果无法理解,也无须深究其具体构造方法!可执行文件底层是用字符串+递归算法实现的,理论上可以应用于任意维模型。但考虑到递归算法可能存在的栈溢出,重复压栈出栈带来的时间消耗等问题,我们利用矩阵的稀疏性和群的完全对称性,并通过分次调用,来尽可能减少栈的深度,提高计算速度。
容积点一次生成后,可以一直使用,通过对50维G-轨迹的生成速度(Core T6600@2.2GHz)进行测试,包含数据读写在内的速度约为1.5秒,速度尚可。而目前为止,本人尚未遇到达到甚至超过50维的系统,因此,暂时不作算法层面的优化。
注意:Perms.exe可以用于任意维模型,将可执行文件复制至工作目录下,调用时选择N/n,并输入你的模型维数,即可生成所需的第二G-轨迹。如果无法理解相关的概念,请参考示例代码,并记住如何使用即可~~~
相关理论基础及所用模型,请参考以下文献:
References (you may cite one of the articles in your paper):
[1] X. C. Zhang, C. J. Guo, "Cubature Kalman filters: Derivation and extension," Chinses Physics B, vol.22, no.12, 128401, DOI: 10.1088/1674-1056/22/12/128401
[2] X. C. Zhang, Y. L. Teng, "A new derivation of the cubature Kalman filters," Asian Journal of Control, DOI: 10.1002/asjc.926
[3] X. C. Zhang, "Cubature information filters using high-degree and embedded cubature rules," Circuits, Systems, and Signal Processing,vol.33, no.6,pp.1799-1818,DOI: 10.1007/s00034-013-9730-0
1