记录:卡尔曼滤波推导

参考:古月居-卡尔曼滤波

一、高斯分布(Gaussian Distribution)

  • 一维高斯分布:随机变量 X X X服从数学期望 μ \mu μ、方差 σ 2 \sigma^2 σ2的正态分布,概率密度函数为 p ( x ) p(x) p(x)
    X ∼ N ( μ , σ 2 ) X \sim N(\mu, \sigma^2) XN(μ,σ2)
    p ( x ) = 1 2 π σ e x p ( − 1 2 ( x − μ ) 2 σ 2 ) p(x) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2}\frac{(x-\mu)^2}{\sigma^2}) p(x)=2π σ1exp(21σ2(xμ)2)
  • 高维高斯分布:数学期望 μ \mu μ 1 × n 1×n 1×n的矩阵, Σ \Sigma Σ n × n n×n n×n的协方差矩阵。
    X ∼ N ( μ , Σ ) X \sim N(\mu, \Sigma) XN(μ,Σ)
    p ( x ) = 1 ( 2 π ) n d e t ( Σ ) e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x) = \frac{1}{\sqrt{(2\pi)^ndet(\Sigma)}}exp(-\frac{1}{2}(x - \mu)^T\Sigma^{-1}(x-\mu)) p(x)=(2π)ndet(Σ) 1exp(21(xμ)TΣ1(xμ))

注:

  1. 总体方差 σ 2 \sigma^2 σ2
    x i x_i xi是表示第 i i i个样本的观测值, N N N是总体样本数量, n n n是采样样本数量, μ \mu μ是总体均值( μ = 1 N Σ i = 1 N x i \mu=\frac{1}{N}{\Sigma}_{i=1}^{N}x_i μ=N1Σi=1Nxi), x ˉ \bar{x} xˉ是采样样本均值( x ˉ = 1 n Σ i = 1 n x i \bar{x}=\frac{1}{n}{\Sigma}_{i=1}^{n}x_i xˉ=n1Σi=1nxi)。根据n个采样样本的方差估计总体方差,有如下两种情况。
    (1)如果总体均值 μ \mu μ已知,那么总体方差:
    σ 2 = Σ i = 1 N ( x i − μ ) 2 N (1) \sigma^2=\frac{{\Sigma}_{i=1}^N(x_i-\mu)^2}{N} \tag{1} σ2=NΣi=1N(xiμ)2(1)
    (2)在总体均值未知的情况下,根据样本方差估计总体方差,则分为有偏估计和无偏估计。
  • 有偏估计:
    σ 2 = Σ i = 1 n ( x i − x ˉ ) 2 n (2) \sigma^2=\frac{{\Sigma}_{i=1}^n(x_i-\bar{x})^2}{n} \tag{2} σ2=nΣi=1n(xixˉ)2(2)
  • 无偏估计
    σ 2 = Σ i = 1 n ( x i − x ˉ ) 2 n − 1 (3) \sigma^2=\frac{{\Sigma}_{i=1}^n(x_i-\bar{x})^2}{n-1} \tag{3} σ2=n1Σi=1n(xixˉ)2(3)
  1. 协方差
    在无偏估计的基础上,协方差的定义如下,其中 x ˉ \bar{x} xˉ y ˉ \bar{y} yˉ分别表示两个随机变量对应的观测样本均值。
    σ ( x , y ) = 1 n − 1 Σ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ) (4) \sigma(x,y)=\frac{1}{n-1}\Sigma_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})) \tag{4} σ(x,y)=n11Σi=1n(xixˉ)(yiyˉ))(4)
    则公式(3)可以写成如下格式,表示随机变量 x x x关于其自身的协方差。
    σ 2 = Σ i = 1 n ( x i − x ˉ ) 2 n − 1 = σ ( x , x ) \sigma^2=\frac{{\Sigma}_{i=1}^n(x_i-\bar{x})^2}{n-1} =\sigma(x,x) σ2=n1Σi=1n(xixˉ)2=σ(x,x)
  2. 协方差矩阵
    给定d个随机变量 X = { x 1 , x 2 , x 3 , . . . , x d } X=\{x_1, x_2, x_3, ..., x_d\} X={x1,x2,x3,...,xd},有 x k ∈ X , k = 1 , 2 , . . . , d x_k\in{X},k=1,2,...,d xkX,k=1,2,...,d,则这些随机变量的方差为:
    σ ( x k , x k ) = 1 n − 1 Σ i = 1 n ( x k i − x ˉ k ) \sigma(x_k, x_k)=\frac{1}{n-1}\Sigma_{i=1}^n(x_{ki}-{\bar{x}}_k) σ(xk,xk)=n11Σi=1n(xkixˉk)
    其中, x k i x_{ki} xki表示第 k k k个随机变量 x k x_{k} xk的第 i i i个观测值, n n n表示采样样本数量,每个随机变量均采样了 n n n个样本。对于这些随机变量,求两两之间的协方差,则有:
    σ ( x m , x k ) = 1 n − 1 Σ i = 1 n ( x m i − x ˉ m ) ( x k i − x ˉ k ) \sigma(x_m, x_k)=\frac{1}{n-1}\Sigma_{i=1}^n(x_{mi}-{\bar{x}}_m)(x_{ki}-{\bar{x}}_k) σ(xm,xk)=n11Σi=1n(xmixˉm)(xkixˉk)
    所以,协方差矩阵为:
    Σ = [ σ ( x 1 , x 1 ) . . . σ ( x 1 , x d ) ⋮ ⋱ ⋮ σ ( x d , x 1 ) . . . σ ( x d , x d ) ] ∈ R d × d \Sigma = \begin{bmatrix} \sigma(x_1, x_1) & ... & \sigma(x_1, x_d)\\ \vdots & \ddots & \vdots \\ \sigma(x_d, x_1) & ... & \sigma(x_d, x_d)\end{bmatrix} \in{\R^{d×d}} Σ= σ(x1,x1)σ(xd,x1)......σ(x1,xd)σ(xd,xd) Rd×d

参考:总体方差的有偏与无偏估计高斯分布如何理解多维高斯分布?

二、卡尔曼滤波

经典线性卡尔曼滤波推导

【参考:一文看懂卡尔曼滤波卡尔曼滤波算法详细推导

  • 建模
    已知一辆汽车直线行驶,已知它在 t − 1 t-1 t1时刻的位置是 p t − 1 p_{t-1} pt1,速度是 v t − 1 v_{t-1} vt1,加速度是 u u u t t t时刻与 t − 1 t-1 t1时刻的时间差为 Δ t \Delta_{t} Δt。理想情况下,根据速度、位移、加速度之间的关系,它在 t t t时刻的位置 p t p_{t} pt和速度 v t v_{t} vt 可以表述为:
    v t = v t − 1 + u Δ t (1) v_t=v_{t-1}+u\Delta_{t} \tag{1} vt=vt1+uΔt(1)
    p t = p t − 1 + u t − 1 Δ t + 1 2 u ( Δ t ) 2 (2) p_t=p_{t-1}+u_{t-1}\Delta_{t}+\frac{1}{2} u{(\Delta_{t})}^2\tag{2} pt=pt1+ut1Δt+21u(Δt)2(2)

直接根据上一时刻状态预测下一时刻的状态得到的预测结果没有考虑过程误差和传感器测量误差。实际情况误差是存在的,卡尔曼滤波即是通过观测信息寻求一个最优的状态估计。上式写成矩阵形式:
[ p t v t ] = [ 1 Δ t 0 1 ] [ p t − 1 v t − 1 ] + [ ( Δ t ) 2 2 Δ t ] u (3) \begin{bmatrix} p_t \\ v_t \end{bmatrix}=\begin{bmatrix} 1 & {\Delta}_t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} p_{t -1}\\ v_{t -1} \end{bmatrix} + \begin{bmatrix} \frac{({\Delta}_t)^2}{2} \\ {\Delta}_t \end{bmatrix}u \tag{3} [ptvt]=[10Δt1][pt1vt1]+[2(Δt)2Δt]u(3)
即可写成:
x t = F x t − 1 + B u (4) x_t=Fx_{t-1}+Bu \tag{4} xt=Fxt1+Bu(4)
考虑过程误差 w t w_t wt,上式可写成:
x t = F x t − 1 + B u + w t (5) x_t=Fx_{t-1}+Bu+w_{t} \tag{5} xt=Fxt1+Bu+wt(5)
通过传感器观测可对 t t t时刻的速度和位置进行测量,假设直接预测结果与传感器观测的结果之间是线性变换关系,并考虑传感器测量误差 v t v_t vt,则观测方程可写为:
z t = H x t + v t (6) z_t=Hx_t+v_t \tag{6} zt=Hxt+vt(6)
一般假设过程误差和观测误差服从高斯分布,即 p ( W ) ∼ N ( 0 , Q ) p(W)\sim{N(0,Q)} p(W)N(0,Q) p ( V ) ∼ N ( 0 , R ) p(V)\sim{N(0,R)} p(V)N(0,R) Q Q Q R R R为协方差矩阵,即 Q = E [ W W T ] Q=E[WW^T] Q=E[WWT] R = E [ V V T ] R=E[VV^T] R=E[VVT] Q Q Q R R R为超参数,根据经验设定,推导过程中认为已知。

  • 变量定义
    x t x_t xt:状态真实值
    x ~ t − {\tilde{x}_t^-} x~t:直接根据上一时刻的状态预测的结果(没有考虑观测信息,先验)
    x ~ t \tilde{x}_t x~t:根据观测结果进行优化得到的最优估计值(考虑观测信息,后验)
    先验误差: e t − = x t − x ~ t − {e_t^-}=x_t-{\tilde{x}_t^-} et=xtx~t
    后验误差: e t = x t − x ~ t e_t=x_t-\tilde{x}_t et=xtx~t
    先验误差协方差矩阵: P t − = E [ e t − ( e t − ) T ] {P_t^-}=E[e_t^-({{e}_t^-)^T}] Pt=E[et(et)T]
    后验误差协方差矩阵: P t = E [ e t e t T ] {P_t}=E[e_t{{e}_t^T}] Pt=E[etetT]
  • 写公式
  1. 真实状态空间
    状态真实值: x t = F x t − 1 + B u + w t x_t = Fx_{t-1}+Bu+w_t xt=Fxt1+Bu+wt,其中 p ( W ) ∼ N ( 0 , Q ) , Q = E [ W W T ] p(W)\sim{N(0,Q)}, Q=E[WW^T] p(W)N(0,Q),Q=E[WWT]
    状态观测值: z t = H x t + v t z_t=Hx_t+v_t zt=Hxt+vt,其中 p ( V ) ∼ N ( 0 , R ) , R = E [ V V T ] p(V)\sim{N(0,R)}, R=E[VV^T] p(V)N(0,R),R=E[VVT]
  2. 实际状态空间
    直接预测值: x ~ t − = F x ~ t − 1 + B u \tilde{x}_t^-=F\tilde{x}_{t-1}+Bu x~t=Fx~t1+Bu
    校正后状态: x ~ t = x ~ t − + K t ( z t − H x ~ t − ) \tilde{x}_t=\tilde{x}_t^-+{K_t}(z_t-H\tilde{x}_t^-) x~t=x~t+Kt(ztHx~t),其中 K t ( z t − H x ~ t − ) {K_t}(z_t-H\tilde{x}_t^-) Kt(ztHx~t)表示对预测值的修正

寻找 K t K_t Kt使 x ~ t \tilde{x}_t x~t尽可能接近 x t x_t xt,即使后验误差 e t = x t − x ~ t e_t=x_t-\tilde{x}_t et=xtx~t最小化。

  • 推导求解
    。。。巨难敲。。。待敲公式。。。

  • 结论
    卡尔曼增益:
    后验估计:
    更新误差协方差:

扩展卡尔曼理解参考:卡尔曼滤波器之扩展卡尔曼滤波

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值