写在前面

本篇内容主要介绍一下IKF的推导过程,IKF作为KF的一种变体,和EKF一样,主要是为了解决非线性问题。两者相比较而言,在精度上,IKF要比EKF好一些,但是花费的计算代价要稍大一些,当IKF仅仅进行一次迭代的话相当于EKF。
这里看到还有ROVIO等一些文章中使用IEKF来优化位姿,但是看公式和原理上和IKF是一样的(如有大神知道不同点还请指出)。


更新阶段的问题表示

由于IKF的主要贡献在于更新阶段,因此KF中的预测阶段这里直接跳过了,后面可以看到,算法把预测阶段的状态估计值作为了当前阶段的观测值。
在更新阶段,主要涉及到如下几个变量:

  • 当前状态 x x x,可以认为就是 f ( x ) f(x) f(x)中的x;
  • 当前状态的估计 x ‾ \overline{x} x,对应的协方差矩阵 P P P;
  • 当前时刻的观测量 z z z,对应的噪声协方差为R;

观测与状态之间的无噪声模型为 h ( x ) h(x) h(x),所以该阶段概率模型可表示为:
z ~ N ( h ( x ) , R ) , x ‾ ~ N ( x , P ) z ~ N(h(x), R), \quad \overline{x} ~ N(x, P) z~N(h(x),R),x~N(x,P)
更新阶段最重要的目标就是根据给定的 z , x ‾ , R , P z,\overline{x}, R, P z,x,R,P的状态下找到更好的估计 x ‾ + , P + \overline{x}^+, P^+ x+,P+。


KF方法的优化目标

这部分主要是为了引入最小化问题,比较清晰的朋友可以直接跳过了

为了方便表示,我们把观测 z z z和当前状态的估计 x ‾ \overline{x} x看做为一个观测向量 ,同时对观测方程也进行重写可得下式:
Z = [ z x ‾ ] , g ( x ) = [ h ( x ) x ] , G = g ′ ( x ) = [ H ( x ) I ] Z=\begin{bmatrix}z \\ \overline{x} \end{bmatrix} , \quad g(x)=\begin{bmatrix}h(x) \\ x \end{bmatrix} , \quad G=g'(x)=\begin{bmatrix}H(x) \\ I \end{bmatrix} Z=[zx​],g(x)=[h(x)x​],G=g′(x)=[H(x)I​]
因此我们把它们重新写为概率分布的形式:
Z ~ N ( g ( x ) , Q ) , Q = [ R 0 0 P ] Z~N(g(x), Q) \quad , \quad Q=\begin{bmatrix}R & 0 \\ 0 & P \end{bmatrix} Z~N(g(x),Q),Q=[R0​0P​]
有了上面的概率分布,可以很容易的得到似然函数:
(1) L ( x ) = α ∗ e x p ( − 0.5 ( Z − g ( x ) ) T Q − 1 ( Z − g ( x ) ) ) L(x) = \alpha*exp(-0.5(Z-g(x))^TQ^{-1}(Z-g(x))) \tag{1} L(x)=α∗exp(−0.5(Z−g(x))TQ−1(Z−g(x)))(1)
对公式(1)关于x取最大,就可以得到最大似然的解,即:
x + = a r g m a x ( L ( x ) ) x^+ = argmax(L(x)) x+=argmax(L(x))
通常,对于公式(1),我们经常取负对数将最大似然问题转换为求最小值的问题,简化后我们需要最小化的函数设为 q ( x ) q(x) q(x),其表示如下:
(2) q ( x ) = 0.5 ( Z − g ( x ) ) T Q − 1 ( Z − g ( x ) ) q(x) = 0.5(Z-g(x))^TQ^{-1}(Z-g(x)) \tag{2} q(x)=0.5(Z−g(x))TQ−1(Z−g(x))(2)
将公式(2)求导并等于0就可以得到最优的状态量 x + x^+ x+所满足的条件:
(3) 0 = g ′ ( x + ) T Q − 1 ( Z − g ( x + ) ) 0 = g'(x^+)^T Q^{-1}(Z-g(x^+)) \tag{3} 0=g′(x+)TQ−1(Z−g(x+))(3)
现假设 V = ( Z − g ( x ) ) ~ N ( 0 , Q ) V = (Z-g(x)) ~ N(0, Q) V=(Z−g(x))~N(0,Q),则 Z = V + g ( x ) Z=V+g(x) Z=V+g(x),公式(3)可以继续写作:
(4) 0 = g ′ ( x + ) T Q − 1 ( V + g ( x ) − g ( x + ) ) = g ′ ( x + ) T Q − 1 ( V + g ′ ( x + ) ( x − x + ) ) 0 = g'(x^+)^T Q^{-1}(V+g(x)-g(x^+)) = g'(x^+)^T Q^{-1}(V+g'(x^+)(x-x^+)) \tag{4} 0=g′(x+)TQ−1(V+g(x)−g(x+))=g′(x+)TQ−1(V+g′(x+)(x−x+))(4)
公式(3)到公式(4)的化简中,有一个比较强的假设就是当前状态量 x x x与最优的状态量 x + x^+ x+非常的接近,这个假设是完全合理的,之后使用了 g ( x ) g(x) g(x)在 x + x^+ x+点的一阶泰勒展开 g ( x ) = g ( x + ) + g ′ ( x + ) ( x − x + ) g(x)=g(x^+)+g'(x^+)(x-x^+) g(x)=g(x+)+g′(x+)(x−x+),至此,设 G = g ′ ( x + ) G=g'(x^+) G=g′(x+),上述经过符号化简可得:
(5) 0 = G T Q − 1 ( G ( x − x + ) + V ) = > x + − x = ( G T Q − 1 G ) − 1 G T Q − 1 V 0=G^TQ^{-1}(G(x-x^+)+V) => x^+-x = (G^TQ^{-1}G)^{-1}G^T Q^{-1}V \tag{5} 0=GTQ−1(G(x−x+)+V)=>x+−x=(GTQ−1G)−1GTQ−1V(5)
根据方差的定义,下面计算当前状态的协方差:
(6) P + = E ( ( x + − x ) ( x + − x ) T ) = ( G T Q − 1 G ) − 1 G T Q − 1 E ( V V T ) G ( G T Q − 1 G ) − 1 = ( G T Q − 1 G ) − 1 P^+ = E((x^+-x)(x^+-x)^T)=(G^TQ^{-1}G)^{-1}G^TQ^{-1}E(VV^T)G(G^TQ^{-1}G)^{-1}=(G^TQ^{-1}G)^{-1} \tag{6} P+=E((x+−x)(x+−x)T)=(GTQ−1G)−1GTQ−1E(VVT)G(GTQ−1G)−1=(GTQ−1G)−1(6)
这里由于整个公式中仅有 V V V是变量,因此期望直接由 E ( A V V T B ) E(AVV^TB) E(AVVTB)变为 A E ( V V T ) B AE(VV^T)B AE(VVT)B
对于公式(6),把G和Q的符号进行替换,同时使用矩阵逆引理(Matrix Inversion Lemma)
( A + B C D ) − 1 = A − 1 − A − 1 B ( D A − 1 B + C − 1 ) − 1 D A − 1 (A+BCD)^{-1}=A^{-1}-A^{-1}B(DA^{-1}B+C^{-1})^{-1}DA^{-1} (A+BCD)−1=A−1−A−1B(DA−1B+C−1)−1DA−1
可得:
P + = P − ( H T R − 1 H + P − 1 ) − 1 H T R − 1 H P = ( I − K H ) P w h e r e K = ( H T R − 1 H + P − 1 ) − 1 H T R − 1 = P H T ( H P H T + R ) − 1 P^+ = P-(H^TR^{-1}H+P^{-1})^{-1}H^TR^{-1}HP = (I-KH)P \\ where \quad K=(H^TR^{-1}H+P^{-1})^{-1}H^TR^{-1} =PH^T(HPH^T+R)^{-1} P+=P−(HTR−1H+P−1)−1HTR−1HP=(I−KH)PwhereK=(HTR−1H+P−1)−1HTR−1=PHT(HPHT+R)−1
到此,我们看到最优状态的协方差矩阵的更新与三个量有关:观测的状态量 x ‾ \overline{x} x的协方差P,观测方程的一阶导数H以及观测量 z z z的噪声协方差R有关。


使用GN方法优化目标函数

根据上面的推导,公式(2)就是整个问题的优化目标函数,下面的内容主要是通过使用Gauss-Newton方法对目标函数进行优化,推导得到IKF(IEKF)的结论。
对于目标函数:
(2) q ( x ) = 1 2 ( Z − g ( x ) ) T Q − 1 ( Z − g ( x ) ) q(x) = \frac{1}{2}(Z-g(x))^TQ^{-1}(Z-g(x)) \tag{2} q(x)=21​(Z−g(x))TQ−1(Z−g(x))(2)
可以重写为如下形式,其中 r ( x ) = S ∗ ( Z − g ( x ) ) r(x)=S*(Z-g(x)) r(x)=S∗(Z−g(x)), S满足 S ∗ S T = Q − 1 S*S^T=Q^{-1} S∗ST=Q−1:
q ( x ) = 1 2 ∣ ∣ r ( x ) ∣ ∣ 2 q(x)=\frac{1}{2}||r(x)||^2 q(x)=21​∣∣r(x)∣∣2
对于上述形式,使用Guass-Newton法(可以参考这里)进行求解,可以得到变量每次的迭代公式为:
x i + 1 = x i − ( r ′ ( x i ) T r ′ ( x i ) ) − 1 ( r ′ ( x i ) T r ( x i ) ) x_{i+1}=x_i-(r'(x_i)^Tr'(x_i))^{-1}(r'(x_i)^Tr(x_i)) xi+1​=xi​−(r′(xi​)Tr′(xi​))−1(r′(xi​)Tr(xi​))
把 r ( x ) = S ∗ ( Z − g ( x ) ) , r ′ ( x ) = S ∗ g ′ ( x ) r(x)=S*(Z-g(x)), r'(x)=S*g'(x) r(x)=S∗(Z−g(x)),r′(x)=S∗g′(x)带入之后,不难得到如下公式,这里 G = g ′ ( x i ) G=g'(x_i) G=g′(xi​):
x i + 1 = ( G T Q − 1 G ) − 1 G T Q − 1 ( Z − g ( x i ) + G i x i ) x_{i+1}=(G^TQ^{-1}G)^{-1}G^TQ^{-1}(Z-g(x_i)+G_ix_i) xi+1​=(GTQ−1G)−1GTQ−1(Z−g(xi​)+Gi​xi​)
同样把状态量 g ( x ) g(x) g(x)和协方差 Q Q Q展开就可得到状态量的更新公式:
(7) x i + 1 = x i + ( H i T R − 1 H i + P − 1 ) − 1 H i T R − 1 ( z − h ( x i ) − H i ( x ‾ − x ) ) = x i + K i ( z − h ( x i ) − H i ( x ‾ − x i ) ) x_{i+1}=x_i+(H_i^TR^{-1}H_i+P^{-1})^{-1}H_i^TR^{-1}(z-h(x_i)-H_i(\overline x-x))=x_i+K_i(z-h(x_i)-H_i(\overline x-x_i)) \tag{7} xi+1​=xi​+(HiT​R−1Hi​+P−1)−1HiT​R−1(z−h(xi​)−Hi​(x−x))=xi​+Ki​(z−h(xi​)−Hi​(x−xi​))(7)
所以,从公式(7)可以看到,状态量的迭代更新与6个变量有关:观测值 z z z及其协方差,观测状态 x ‾ \overline{x} x及其协方差以及观测方程 h ( x ) h(x) h(x)及其一阶导数 H ( x ) H(x) H(x)。喜大普奔的是,每次的迭代过程并不用更新每个中间状态 x i x_i xi​的协方差矩阵,也算是稍微节省了一些算力吧。

Ps:
对于公式(7)或者说整个状态变量的迭代过程,如果仅仅进行一次,即 x 0 = x ‾ x_0=\overline{x} x0​=x,则IKF就变化为了EKF


IKF推导小结

对于以上流程而言,简而言之就是:

  1. 使用最大似然的方法得到优化的目标函数(即公式(2));
  2. 随后使用Gauss-Newton方法进行迭代优化,不断的更新状态变量x;
  3. 对于算法而言,当x的改变量很小的时候,就可以停止迭代返回结果了。

reference

[1] The Iterated Kalman Filter Update as a Gauss-Newton Method.
[2] Performance evaluation of iterated extended Kalman filter with variable step-length.
.

Iterated Kalman Filter(IKF/IEKF)总结相关推荐

  1. FAST-LIO:A Fast Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter论文翻译

    0 摘要 本文提出了一种计算高效且鲁棒的激光雷达惯性里程计框架.我们使用紧耦合的迭代扩展卡尔曼滤波(IEKF) 将激光雷达特征点与IMU数据融合,以便在可能会造成退化的快速运动.大量噪声或杂乱环境中进 ...

  2. FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter

      固态激光和IMU紧耦合的里程计,主要创新点加速了卡尔曼增益的求解方法.固态激光由于视野较小,更容易收到环境退化的影响. 系统描述   状态描述和常规的LIO类似.对于固态激光雷达,本文截取一段时间 ...

  3. Error-State Kalman filter (ESKF)

    1. 原理 1.1. 变量定义 1.2. 名义量预测 1.3. 误差量预测 1.4. 更新 1.5. 重置 2. 主要优点 The orientation error-state is minimal ...

  4. 一文图解卡尔曼滤波(Kalman Filter)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者注:这恐怕是全网有关卡尔曼滤波最简单易懂的解释,如果你认真的读 ...

  5. [Math]理解卡尔曼滤波器 (Understanding Kalman Filter)

    2. 基本模型 2.1 系统模型 卡尔曼滤波模型假设k时刻的真实状态是从(k − 1)时刻的状态演化而来,符合下式:  (1) Fk 是作用在 Xk−1 上的状态变换模型(/矩阵/矢量). Bk 是作 ...

  6. Control~Kalman filter

    常用控制算法(包括PID和卡尔曼滤波等)各有什么天然的局限乃至缺陷               回答都专业而又接地气 自平衡小车的探讨:卡尔曼滤波与PID算法                      ...

  7. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇

    卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...

  8. 【UWB】Kalman filter, KF卡尔曼滤波, EKF 扩展卡尔曼滤波

    文章目录 卡尔曼滤波器 扩展卡尔曼滤波器 协方差 Ref: 卡尔曼滤波器 首先从工程上看卡尔曼滤波算法. 引入一个离散控制过程的系统,该系统可用一个线性随机微分方程(linear stochastic ...

  9. 卡尔曼滤波器算法(Kalman Filter)—— 数学推导,图文并茂

    (1)HMM:隐变量是离散的 (2)Kalman Filter:又叫 Linear Dynamic Model 或 Linear Gaussian Model 隐变量和观测变量都是连续的,都是服从高斯 ...

最新文章

  1. 数据结构-双向链表的实现
  2. JVM调优总结(五)-调优方法(转载)
  3. boost::mp11::mp_similar相关用法的测试程序
  4. 用python公众号开书城步骤_资源 | 开放Python书籍:一本短小精悍的初学者入门指南...
  5. 如何检测本计算机耗电量,如何查看电脑耗电量?鲁大师查看电脑使用功率的方法...
  6. OleDbDataAdapter 插入记录
  7. 视频: 电子制作基本知识
  8. mysql 避免重复添加_MySql三种避免重复插入数据的方法
  9. zw版【转发·台湾nvp系列例程】HALCON MirrorRegion (Delphi)
  10. 手机语音翻译的小妙招,一步一步教你!一键音频转文字
  11. JS/JQuery操作iframe元素
  12. 树莓派使用 python IIC 驱动 OLED 刷新率低问题与解决
  13. oc项目中使用swift
  14. MySQL中用户订单复购率的计算
  15. 和OpenAI ChatGPT不相上下的AI聊天机器人
  16. 题解1211判断元素是否存在
  17. 一篇让你弄明白C语言指针传参和数组传参~
  18. 一文读懂寒武纪:AI芯片拓荒者的乘风破浪
  19. PHP快递查询接口api和快递单号智能判断PHP代码
  20. 电脑上如何禁止一切弹窗广告?永久关闭桌面弹出广告

热门文章

  1. 数能低压 1.5A单通道 LED驱动IC芯片 NU405应用电路
  2. 各种排序算法比较(java)
  3. 解决iOS模拟器运行时上下出现黑边的问题
  4. 从程序员创业谈起--对话周鸿祎
  5. Android设计模式详解之观察者模式
  6. C++类中的虚函数不能为模板函数
  7. 再读苹果《Threading Programming Guide》笔记(二):线程配置与Run Loop
  8. linux el 7安装失败,CentOS 6.7 安装 cloog-ppl-0.15.7-1.2.el6.i686.rpm 失败
  9. 嗨,Chrome和火狐,有第三者插足!
  10. 全新天方夜谭即时到账支付源码(全开源)