zoukankan      html  css  js  c++  java
  • 卡尔曼滤波器及其扩展的个人学习笔记~

    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改进算法的误差大的原因,毕竟这仅有的一次线性引入的误差会一直累计下去不断扩大~)

  • 相关阅读:
    Hadoop的运行痕迹
    生活常识
    hadoop集群崩溃恢复记录
    Hadoop_NameNode_代码分析_目录树(2)
    .NET Is 和 As 的区别
    hadoop集群管理之 SecondaryNameNode和NameNode
    sql2005分页存储过程原创
    c#生成json数据 JavaScript对json数据处理
    LVS改变ConnectionHashtable值
    MySQL Cluster集群配置
  • 原文地址:https://www.cnblogs.com/bupt213/p/11505280.html
Copyright © 2011-2022 走看看