卡尔曼滤波器及其扩展的个人学习笔记~

为君一笑 提交于 2019-11-29 19:48:14

Kalman Filter

本质:线性滤波算法(只适用于线性且满足高斯分布的系统!!!)

核心思想:根据上一时刻(状态)的“预测量”和“预测误差”,以及当前时刻(状态)的“观测量(测量量)”和“测量误差”,来对当前的“真实值”进行最优估计,计算得到当前的“最优量”

突出观点:计算考虑“误差”,且分为“预测误差”和“测量误差”,同时误差独立存在,始终不受测量数据的影响。

举个例子:

        在航海中,船长通常以前一时刻的船位为基准,根据航向、船速、和海流等多种因素推算下一个船位(预测量),但是并不能轻易认为当前船位就一定在推算的船位上,还要选择适当的方法,通过仪器的到另一个推算的船位(测量量)。观测和推算的这两个船位一般不重合,需要通过分析和判断选择一个可靠的船位,作为当前的“真实”船位。

描述数学化:

公式化:

 简单场景实践:

 

 

 实践:

https://github.com/GengMingjin2/Learning_Algorithm/tree/master/EKF/KF

 

 

 

Extend Kalman Filter:

本质:KF的非线性扩展,线性滤波算法(非线性的高斯分布系统!!!)

(一个很优秀的course:https://simondlevy.academic.wlu.edu/kalman-tutorial/)

 

图片中的公式在表达上全部都是按照常规偏导的方式表达,而在真实的应用场景中,更加一般的表达是使用Joccobi矩阵来表达,而其中的每一项都是提前推导完毕后才应用到代码中的,这一点非常重要。

同时在进行泰勒展开时,上述表达的EKF算法中仅仅在起始点进行了一次线性近似,后续的迭代过程中不再进行线性近似了(这也是为什么最基础的EKF算法的误差比其他几种KF改进算法的误差大的原因,毕竟这仅有的一次线性引入的误差会一直累计下去不断扩大~)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!