状态估计(KF-EKF-ESKF)

模型描述

离散时间状态估计问题
运动方程: x k = f ( x k − 1 , u k ) + w k 观测方程: z k = h ( x k ) + v k \begin{split} 运动方程:\pmb x_k &=\pmb f(\pmb x_{k-1},\pmb u_k)+\pmb w_k \\ 观测方程:\pmb z_k &=\pmb h(\pmb x_k)+\pmb v_k \\ \end{split} 运动方程:xk观测方程:zk=f(xk1,uk)+wk=h(xk)+vk
变量含义如下:

  • 系统状态: x k ∈ R n \pmb x_k \in \mathbb{R}^n xkRn
  • 初始状态: x 0 ∈ R n ∼ N ( x ˇ 0 , P ˇ 0 ) \pmb x_0 \in \mathbb{R}^n \sim \mathcal N(\check{\pmb x}_0, \check{\pmb P}_0) x0RnN(xˇ0,Pˇ0)
  • 输入: u k ∈ R p \pmb u_k \in \mathbb{R}^p ukRp
  • 过程噪声: w k ∈ R n ∼ N ( 0 , R k ) \pmb w_k \in \mathbb{R}^n \sim \mathcal N(\pmb 0,\pmb R_k) wkRnN(0,Rk)
  • 测量 : z k ∈ R m \pmb z_k \in \mathbb{R}^m zkRm
  • 测量噪声: v k ∈ R m ∼ N ( 0 , Q k ) \pmb v_k \in \mathbb{R}^m \sim \mathcal N(\pmb 0,\pmb Q_k) vkRmN(0,Qk)

已知数据

  • 先验初始状态及其协方差矩阵 x ˇ 0 , P ˇ 0 \check{\pmb x}_0, \check{\pmb P}_0 xˇ0,Pˇ0
  • 输入量 u 1 : k \pmb u_{1:k} u1:k
  • 观测量 z 0 : k \pmb z_{0:k} z0:k
  • 系统的运动模型 f ( ) \pmb f() f()和观测模型 h ( ) \pmb h() h()

待估计数据

  • 系统真实状态的后验估计值 x ^ k \hat{\pmb x}_k x^k

最大后验估计(Maximum A Posteriori,MAP)

定义宏观变量:

  • x = x 0 : K = ( x 0 , ⋯ x K ) \pmb x = \pmb x_{0:K} = (\pmb x_0, \cdots \pmb x_K) x=x0:K=(x0,xK)
  • u = ( x ˇ 0 , u 1 : K ) \pmb u = (\check{\pmb x}_0, \pmb u_{1:K}) u=(xˇ0,u1:K)
  • z = z 0 : K = ( z 0 , ⋯ z K ) \pmb z = \pmb z_{0:K} = (\pmb z_0, \cdots \pmb z_K) z=z0:K=(z0,zK)

利用贝叶斯公式,得到MAP估计为:
x ^ = arg ⁡ max ⁡ x   p ( x ∣ u , z ) = arg ⁡ max ⁡ x   p ( z ∣ x , u ) p ( x ∣ u ) p ( z ∣ u ) = arg ⁡ max ⁡ x   p ( z ∣ x ) p ( x ∣ u ) \begin{split} \hat{\pmb x} &= \underset{\pmb x}{\arg \max} \, p(\pmb x | \pmb u, \pmb z) \\ &= \underset{\pmb x}{\arg\max} \, \frac{p(\pmb z| \pmb x,\pmb u) p(\pmb x | \pmb u)}{p(\pmb z | \pmb u)} \\ &= \underset{\pmb x}{\arg \max} \, p(\pmb z | \pmb x) p(\pmb x | \pmb u) \\ \end{split} x^=xargmaxp(xu,z)=xargmaxp(zu)p(zx,u)p(xu)=xargmaxp(zx)p(xu)
其中:
p ( z ∣ x ) = ∏ k = 0 K p ( z k ∣ x k ) p ( x ∣ u ) = p ( x 0 ∣ x ˇ 0 ) ∏ k = 1 K p ( x k ∣ x k − 1 , u k ) \begin{split} p(\pmb z | \pmb x) &= \prod_{k=0}^K p(\pmb z_k | \pmb x_k) \\ p(\pmb x| \pmb u) &= p(\pmb x_0 | \check{\pmb x}_0) \prod_{k=1}^K p(\pmb x_k | \pmb x_{k-1}, \pmb u_k) \end{split} p(zx)p(xu)=k=0Kp(zkxk)=p(x0xˇ0)k=1Kp(xkxk1,uk)
所以:
x ^ = arg ⁡ max ⁡ x   p ( x 0 ∣ x ˇ 0 ) ( ∏ k = 1 K p ( x k ∣ x k − 1 , u k ) ) ( ∏ k = 0 K p ( z k ∣ x k ) ) = arg ⁡ max ⁡ x ( ln ⁡ p ( x 0 ∣ x ˇ 0 ) + ∑ k = 1 K ln ⁡ ( p ( x k ∣ x k − 1 , u k ) ) + ∑ k = 0 K ( p ( z k ∣ x k ) ) ) \begin{split} \hat{\pmb x} &= \underset{\pmb x}{\arg \max} \, p(\pmb x_0 | \check{\pmb x}_0) \left(\prod_{k=1}^K p(\pmb x_k | \pmb x_{k-1}, \pmb u_k) \right) \left(\prod_{k=0}^K p(\pmb z_k | \pmb x_k) \right) \\ &= \underset{\pmb x}{\arg \max} \left( \ln p(\pmb x_0 | \check{\pmb x}_0) + \sum_{k=1}^K \ln(p(\pmb x_k | \pmb x_{k-1}, \pmb u_k)) + \sum_{k=0}^K (p(\pmb z_k | \pmb x_k)) \right) \end{split} x^=xargmaxp(x0xˇ0)(k=1Kp(xkxk1,uk))(k=0Kp(zkxk))=xargmax(lnp(x0xˇ0)+k=1Kln(p(xkxk1,uk))+k=0K(p(zkxk)))

贝叶斯滤波

马尔可夫性:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,未来状态与过去(该过程的历史路径)是条件独立的,那么此随机过程称为马尔可夫过程。

​ 根据马尔可夫性,当已知 x k − 1 \pmb x_{k-1} xk1时,可根据运动方程推出 x k \pmb x_k xk
p ( x k ∣ x ˇ 0 , u 1 : k , z 0 : k ) ⏟ 后验 = η   p ( z k ∣ x k ) ⏟ 似然   p ( x k ∣ x ˇ 0 , u 1 : k , z 0 : k − 1 ) ⏟ 先验 = η   p ( z k ∣ x k )   ∫ p ( x k , x k − 1 ∣ x ˇ 0 , u 1 : k , z 0 : k − 1 ) d x k − 1 = η   p ( z k ∣ x k )   ∫ p ( x k ∣ x k − 1 , x ˇ 0 , u 1 : k , z 1 : k − 1 )   p ( x k − 1 ∣ x ˇ 0 , u 1 : k , z 0 : k − 1 ) d x k − 1 = η   p ( z k ∣ x k ) ⏟ h ( ⋅ ) 进行更新   ∫ p ( x k ∣ x k − 1 , u k ) ⏟ f ( ⋅ ) 进行预测   p ( x k − 1 ∣ x ˇ 0 , u 1 : k − 1 , z 0 : k − 1 ) ⏟ 先验 d x k − 1 \begin{split} \underbrace{p(\pmb x_k | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k}) }_{\text 后验} &= \eta \, \underbrace{ p(\pmb z_k | \pmb x_k)}_{\text 似然} \, \underbrace{ p(\pmb x_k | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k-1}) }_{\text 先验} \\ &= \eta \, p(\pmb z_k | \pmb x_k) \, \int p(\pmb x_k,\pmb x_{k-1} | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k-1})d \pmb x_{k-1} \\ &= \eta \, p(\pmb z_k | \pmb x_k) \, \int p(\pmb x_k | \pmb x_{k-1},\check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{1:k-1}) \, p(\pmb x_{k-1} | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k-1})d \pmb x_{k-1} \\ &= \eta \,\underbrace{ p(\pmb z_k | \pmb x_k) }_{\text h({\cdot})进行更新} \, \int \underbrace{ p(\pmb x_k | \pmb x_{k-1},\pmb u_k)}_{\text f(\cdot)进行预测} \, \underbrace{ p(\pmb x_{k-1} | \check{\pmb x}_0, \pmb u_{1:k-1}, \pmb z_{0:k-1})}_{先验} d \pmb x_{k-1} \end{split} p(xkxˇ0,u1:k,z0:k)=η p(zkxk) p(xkxˇ0,u1:k,z0:k1)=ηp(zkxk)p(xk,xk1xˇ0,u1:k,z0:k1)dxk1=ηp(zkxk)p(xkxk1,xˇ0,u1:k,z1:k1)p(xk1xˇ0,u1:k,z0:k1)dxk1=ηh()进行更新 p(zkxk)f()进行预测 p(xkxk1,uk)先验 p(xk1xˇ0,u1:k1,z0:k1)dxk1

广义高斯滤波

假设估计的状态为高斯分布时

k − 1 k-1 k1时刻高斯先验开始
p ( x k − 1 ∣ x ˇ 0 , u 1 : k − 1 , z 0 : k − 1 ) ∼ N ( x ^ k − 1 , P ^ k − 1 ) \begin{split} p(\pmb x_{k-1} | \check{\pmb x}_0, \pmb u_{1:k-1}, \pmb z_{0:k-1}) \sim \mathcal N(\hat{\pmb x}_{k-1}, \hat{\pmb P}_{k-1}) \end{split} p(xk1xˇ0,u1:k1,z0:k1)N(x^k1,P^k1)
预测步骤:利用最新的输入 u k \pmb u_k uk,通过运动方程,得到 k k k时刻的高斯先验
p ( x k ∣ x ˇ 0 , u 1 : k , z 0 : k − 1 ) ∼ N ( x ˇ k , P ˇ k ) \begin{split} p(\pmb x_k | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k-1}) \sim \mathcal N(\check{\pmb x}_k, \check{\pmb P}_k) \end{split} p(xkxˇ0,u1:k,z0:k1)N(xˇk,Pˇk)
校正步骤:写出 k k k时刻的状态和最新测量的联合高斯分布
p ( x k , z k ∣ x ˇ 0 , u 1 : k , z 0 : k − 1 ) ∼ N ( [ μ x , k μ z , k ] , [ Σ x x , k Σ x z , k Σ z x , k Σ z z , k ] ) \begin{split} p(\pmb x_k, \pmb z_k | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k-1}) \sim \mathcal N \left( \begin{bmatrix} \pmb \mu_{x,k} \\ \pmb \mu_{z,k}\end{bmatrix}, \begin{bmatrix} \pmb \Sigma_{xx,k} & \pmb \Sigma_{xz,k} \\ \pmb \Sigma_{zx,k} & \pmb \Sigma_{zz,k} \end{bmatrix} \right) \end{split} p(xk,zkxˇ0,u1:k,z0:k1)N([μx,kμz,k],[Σxx,kΣzx,kΣxz,kΣzz,k])
根据多元高斯概率的分解,得到 x k \pmb x_k xk的条件概率密度(后验概率)
p ( x k ∣ x ˇ 0 , u 1 : k , z 0 : k ) ∼ N ( μ x , k + Σ x z , k Σ z z , k − 1 ( z k − μ z , k ) ⏟ x ^ k , Σ x x , k − Σ x z , k Σ z z , k − 1 Σ z x , k ⏟ P k ^ ) \begin{split} p(\pmb x_k | \check{\pmb x}_0, \pmb u_{1:k}, \pmb z_{0:k}) \sim \mathcal N ( \underbrace{ \pmb \mu_{x,k} + \pmb \Sigma_{xz,k} \pmb \Sigma_{zz,k}^{-1}(\pmb z_k- \pmb \mu_{z,k}) }_{\hat{\pmb x}_k} , \underbrace{\pmb \Sigma_{xx,k} - \pmb \Sigma_{xz,k} \pmb \Sigma_{zz,k}^{-1} \pmb \Sigma_{zx,k} }_{\hat{\pmb P_k}} ) \end{split} p(xkxˇ0,u1:k,z0:k)N(x^k μx,k+Σxz,kΣzz,k1(zkμz,k),Pk^ Σxx,kΣxz,kΣzz,k1Σzx,k)
得出校正方程:
K k = Σ x z , k Σ z z , k − 1 P k ^ = P k ˇ − K k Σ x z , k T x ^ k = x ˇ k + K k ( z k − μ z , k ) \begin{split} \pmb K_k &= \pmb \Sigma_{xz,k} \pmb \Sigma_{zz,k}^{-1} \\ \hat{\pmb P_k} &= \check{\pmb P_k} - \pmb K_k \pmb \Sigma_{xz,k}^T \\ \hat{\pmb x}_k &= \check{\pmb x}_k + \pmb K_k(\pmb z_k- \pmb \mu_{z,k}) \end{split} KkPk^x^k=Σxz,kΣzz,k1=PkˇKkΣxz,kT=xˇk+Kk(zkμz,k)
其中, μ x , k = x ˇ k \pmb \mu_{x,k} = \check{\pmb x}_k μx,k=xˇk Σ x x , k = P ˇ k \pmb \Sigma_{xx,k}=\check{\pmb P}_k Σxx,k=Pˇk

卡尔曼滤波(KF)

运动方程: x k = A k − 1 x k − 1 + u k + w k 观测方程: z k = C k x k + v k \begin{split} 运动方程:\pmb x_k&=\pmb A_{k-1} \pmb x_{k-1} +\pmb u_k + \pmb w_k \\ 观测方程:\pmb z_k&=\pmb C_k\pmb x_k + \pmb v_k \\ \end{split} 运动方程:xk观测方程:zk=Ak1xk1+uk+wk=Ckxk+vk

  • 过程噪声: w k ∈ R n ∼ N ( 0 , R k ) \pmb w_k \in \mathbb{R}^n \sim \mathcal N(\pmb 0,\pmb R_k) wkRnN(0,Rk)
  • 测量噪声: v k ∈ R m ∼ N ( 0 , Q k ) \pmb v_k \in \mathbb{R}^m \sim \mathcal N(\pmb 0,\pmb Q_k) vkRmN(0,Qk)

预测步骤
x ˇ k = A k − 1 x ^ k − 1 + u k P ˇ k = A k − 1 P ^ k − 1 A k − 1 T + R k \begin{split} \check{\pmb x}_k &= \pmb A_{k-1} \hat{\pmb x}_{k-1} + \pmb u_k \\ \check{\pmb P}_k &= \pmb A_{k-1} \hat{\pmb P}_{k-1} \pmb A_{k-1}^T + \pmb R_k \end{split} xˇkPˇk=Ak1x^k1+uk=Ak1P^k1Ak1T+Rk
校正步骤

联合高斯分布参数推导:
μ z , k = E [ z k ] = E [ C k x k + v k ] = C k x ˇ k Σ z z , k = E [ ( z k − μ z , k ) ( z k − μ z , k ) T ] = E [ ( C k x k + v k − C k x ˇ k ) ( C k x k + v k − C k x ˇ k ) T ] = E [ C k ( x k − x ˇ k ) + v k ) ( C k ( x k − x ˇ k ) + v k ) T ] = C k ⋅ E [ ( x k − x ˇ k ) ( x k − x ˇ k ) T ] ⋅ C k T + E [ v k v k T ] = C k P ˇ k C k T + Q k Σ x z , k = E [ ( x k − x ˇ k ) ( z k − μ z , k ) T ] = E [ ( x k − x ˇ k ) ( C k ( x k − x ˇ k ) + v k ) T ] = E [ ( x k − x ˇ k ) ( x k − x ˇ k ) T C k T ] = P ˇ k C k T Σ z x , k = Σ x z , k T = C k P ˇ k T = C k P ˇ k \begin{split} \pmb \mu_{z,k} &= E[\pmb z_k] = E[\pmb C_k \pmb x_k + \pmb v_k] = \pmb C_k \check{\pmb x}_k \\ \pmb \Sigma_{zz,k} &= E[(\pmb z_k - \pmb \mu_{z,k})(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\pmb C_k \pmb x_k + \pmb v_k - \pmb C_k \check{\pmb x}_k)(\pmb C_k \pmb x_k + \pmb v_k - \pmb C_k \check{\pmb x}_k)^T] \\ &= E[\pmb C_k (\pmb x_k-\check{\pmb x}_k)+ \pmb v_k)(\pmb C_k (\pmb x_k-\check{\pmb x}_k)+ \pmb v_k)^T] \\ &= \pmb C_k \cdot E[(\pmb x_k-\check{\pmb x}_k)(\pmb x_k-\check{\pmb x}_k)^T] \cdot \pmb C_k^T + E[\pmb v_k \pmb v_k^T] \\ &= \pmb C_k \check{\pmb P}_k \pmb C_k^T + \pmb Q_k \\ \pmb \Sigma_{xz,k} &= E[(\pmb x_k-\check{\pmb x}_k)(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\pmb x_k-\check{\pmb x}_k)(\pmb C_k (\pmb x_k-\check{\pmb x}_k)+ \pmb v_k)^T] \\ &= E[(\pmb x_k-\check{\pmb x}_k) (\pmb x_k-\check{\pmb x}_k)^T \pmb C_k^T] \\ &= \check{\pmb P}_k \pmb C_k^T \\ \pmb \Sigma_{zx,k} &= \pmb \Sigma_{xz,k}^T \\ &= \pmb C_k \check{\pmb P}_k^T \\ &= \pmb C_k \check{\pmb P}_k \end{split} μz,kΣzz,kΣxz,kΣzx,k=E[zk]=E[Ckxk+vk]=Ckxˇk=E[(zkμz,k)(zkμz,k)T]=E[(Ckxk+vkCkxˇk)(Ckxk+vkCkxˇk)T]=E[Ck(xkxˇk)+vk)(Ck(xkxˇk)+vk)T]=CkE[(xkxˇk)(xkxˇk)T]CkT+E[vkvkT]=CkPˇkCkT+Qk=E[(xkxˇk)(zkμz,k)T]=E[(xkxˇk)(Ck(xkxˇk)+vk)T]=E[(xkxˇk)(xkxˇk)TCkT]=PˇkCkT=Σxz,kT=CkPˇkT=CkPˇk
带入广义高斯滤波得:
K k = Σ x z , k Σ z z , k − 1 = P ˇ k C k T ( C k P ˇ k C k T + Q k ) − 1 P k ^ = P k ˇ − K k Σ x z , k T = P k ˇ − K k C k P ˇ k = ( I − K k C k ) P k ˇ x ^ k = x ˇ k + K k ( z k − μ z , k ) \begin{split} \pmb K_k &= \pmb \Sigma_{xz,k} \pmb \Sigma_{zz,k}^{-1} \\ &= \check{\pmb P}_k \pmb C_k^T (\pmb C_k \check{\pmb P}_k \pmb C_k^T + \pmb Q_k)^{-1} \\ \hat{\pmb P_k} &= \check{\pmb P_k} - \pmb K_k \pmb \Sigma_{xz,k}^T \\ &= \check{\pmb P_k} - \pmb K_k \pmb C_k \check{\pmb P}_k \\ &= (\pmb I - \pmb K_k \pmb C_k) \check{\pmb P_k} \\ \hat{\pmb x}_k &= \check{\pmb x}_k + \pmb K_k(\pmb z_k- \pmb \mu_{z,k}) \\ \end{split} KkPk^x^k=Σxz,kΣzz,k1=PˇkCkT(CkPˇkCkT+Qk)1=PkˇKkΣxz,kT=PkˇKkCkPˇk=(IKkCk)Pkˇ=xˇk+Kk(zkμz,k)

扩展卡尔曼滤波(EKF)

对运动方程和观测方程进行线性化,即进行一阶泰勒展开
运动方程: x k = f ( x k − 1 , u k ) + w k = f ( x ^ k − 1 , u k ) + ∂ f ∂ x k − 1 ∣ x ^ k − 1 ( x k − 1 − x ^ k − 1 ) + w k = f ( x ^ k − 1 , u k ) + F k − 1 ( x k − 1 − x ^ k − 1 ) + w k 观测方程: z k = h ( x k ) + v k = h ( x ˇ k − 1 ) + ∂ h x k ∣ x ˇ k − 1 ( x k − x ˇ k − 1 ) + v k = h ( x ˇ k − 1 ) + H k ( x k − x ˇ k − 1 ) + v k \begin{split} 运动方程:\pmb x_k &=\pmb f(\pmb x_{k-1},\pmb u_k) + \pmb w_k \\ &= \pmb f(\hat{\pmb x}_{k-1}, \pmb u_k) + \frac{\partial \pmb f}{\partial \pmb x_{k-1}}|_{\hat{\pmb x}_{k-1}} (\pmb x_{k-1} - \hat{\pmb x}_{k-1}) + \pmb w_k \\ &= \pmb f(\hat{\pmb x}_{k-1}, \pmb u_k) + \pmb F_{k-1} (\pmb x_{k-1} - \hat{\pmb x}_{k-1}) + \pmb w_k \\ 观测方程:\pmb z_k &=\pmb h(\pmb x_k) + \pmb v_k \\ &= \pmb h(\check{\pmb x}_{k-1}) + \frac{\partial \pmb h}{\pmb x_k} |_{\check{\pmb x}_{k-1}} (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k \\ &= \pmb h(\check{\pmb x}_{k-1}) + \pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k \\ \end{split} 运动方程:xk观测方程:zk=f(xk1,uk)+wk=f(x^k1,uk)+xk1fx^k1(xk1x^k1)+wk=f(x^k1,uk)+Fk1(xk1x^k1)+wk=h(xk)+vk=h(xˇk1)+xkhxˇk1(xkxˇk1)+vk=h(xˇk1)+Hk(xkxˇk1)+vk

  • 过程噪声: w k ∈ R n ∼ N ( 0 , R k ) \pmb w_k \in \mathbb{R}^n \sim \mathcal N(\pmb 0,\pmb R_k) wkRnN(0,Rk)
  • 测量噪声: v k ∈ R m ∼ N ( 0 , Q k ) \pmb v_k \in \mathbb{R}^m \sim \mathcal N(\pmb 0,\pmb Q_k) vkRmN(0,Qk)

预测步骤
x ˇ k = f ( x ^ k − 1 , u k ) P ˇ k = F k − 1 P ^ k − 1 F k − 1 T + R k \begin{split} \check{\pmb x}_k &= \pmb f(\hat{\pmb x}_{k-1}, \pmb u_k) \\ \check{\pmb P}_k &= \pmb F_{k-1} \hat{\pmb P}_{k-1} \pmb F_{k-1}^T + \pmb R_k \\ \end{split} xˇkPˇk=f(x^k1,uk)=Fk1P^k1Fk1T+Rk
校正步骤

联合高斯分布推导:
μ z , k = E [ z k ] = E [ h ( x ˇ k − 1 ) + H k ( x k − x ˇ k − 1 ) + v k ] = h ( x ˇ k − 1 ) Σ z z , k = E [ ( z k − μ z , k ) ( z k − μ z , k ) T ] = E [ ( h ( x ˇ k − 1 ) + H k ( x k − x ˇ k − 1 ) + v k − h ( x ˇ k − 1 ) )   ( h ( x ˇ k − 1 ) + H k ( x k − x ˇ k − 1 ) + v k − h ( x ˇ k − 1 ) ) T ] = E [ ( H k ( x k − x ˇ k − 1 ) + v k ) ( H k ( x k − x ˇ k − 1 ) + v k ) T ] = H k P ˇ k H k T + Q k Σ x z , k = E [ ( x k − x ˇ k ) ( z k − μ z , k ) T ] = E [ ( x k − x ˇ k ) ( h ( x ˇ k − 1 ) + H k ( x k − x ˇ k − 1 ) + v k − h ( x ˇ k − 1 ) ) T ] = E [ ( x k − x ˇ k ) ( H k ( x k − x ˇ k − 1 ) + v k ) T ] = P ˇ k H k T Σ z x , k = Σ x z , k T = H k P ˇ k T = H k P ˇ k \begin{split} \pmb \mu_{z,k} &= E[\pmb z_k] \\ &= E[\pmb h(\check{\pmb x}_{k-1}) + \pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k] \\ &= \pmb h(\check{\pmb x}_{k-1}) \\ \pmb \Sigma_{zz,k} &= E[(\pmb z_k - \pmb \mu_{z,k})(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\pmb h(\check{\pmb x}_{k-1}) + \pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k - \pmb h(\check{\pmb x}_{k-1})) \\& \qquad \space (\pmb h(\check{\pmb x}_{k-1}) + \pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k - \pmb h(\check{\pmb x}_{k-1}))^T] \\ &= E[(\pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k) (\pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k)^T] \\ &= \pmb H_k \check{\pmb P}_k \pmb H_k^T + \pmb Q_k \\ \pmb \Sigma_{xz,k} &= E[(\pmb x_k-\check{\pmb x}_k)(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\pmb x_k-\check{\pmb x}_k)(\pmb h(\check{\pmb x}_{k-1}) + \pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k - \pmb h(\check{\pmb x}_{k-1}))^T] \\ &= E[(\pmb x_k-\check{\pmb x}_k) (\pmb H_k (\pmb x_k - \check{\pmb x}_{k-1}) + \pmb v_k)^T] \\ &= \check{\pmb P}_k \pmb H_k^T \\ \pmb \Sigma_{zx,k} &= \pmb \Sigma_{xz,k}^T \\ &= \pmb H_k \check{\pmb P}_k^T \\ &= \pmb H_k \check{\pmb P}_k \end{split} μz,kΣzz,kΣxz,kΣzx,k=E[zk]=E[h(xˇk1)+Hk(xkxˇk1)+vk]=h(xˇk1)=E[(zkμz,k)(zkμz,k)T]=E[(h(xˇk1)+Hk(xkxˇk1)+vkh(xˇk1)) (h(xˇk1)+Hk(xkxˇk1)+vkh(xˇk1))T]=E[(Hk(xkxˇk1)+vk)(Hk(xkxˇk1)+vk)T]=HkPˇkHkT+Qk=E[(xkxˇk)(zkμz,k)T]=E[(xkxˇk)(h(xˇk1)+Hk(xkxˇk1)+vkh(xˇk1))T]=E[(xkxˇk)(Hk(xkxˇk1)+vk)T]=PˇkHkT=Σxz,kT=HkPˇkT=HkPˇk
带入广义高斯滤波器得:
K k = Σ x z , k Σ z z , k − 1 = P ˇ k H k T ( H k P ˇ k H k T + Q k ) − 1 P k ^ = P k ˇ − K k Σ x z , k T = P k ˇ − K k H k P ˇ k = ( I − K k H k ) P k ˇ x ^ k = x ˇ k + K k ( z k − μ z , k ) = x ˇ k + K k ( z k − h ( x ˇ k − 1 ) ) \begin{split} \pmb K_k &= \pmb \Sigma_{xz,k} \pmb \Sigma_{zz,k}^{-1} \\ &= \check{\pmb P}_k \pmb H_k^T (\pmb H_k \check{\pmb P}_k \pmb H_k^T + \pmb Q_k)^{-1} \\ \hat{\pmb P_k} &= \check{\pmb P_k} - \pmb K_k \pmb \Sigma_{xz,k}^T \\ &= \check{\pmb P_k} - \pmb K_k \pmb H_k \check{\pmb P}_k \\ &= (\pmb I - \pmb K_k \pmb H_k) \check{\pmb P_k} \\ \hat{\pmb x}_k &= \check{\pmb x}_k + \pmb K_k(\pmb z_k- \pmb \mu_{z,k}) \\ &= \check{\pmb x}_k + \pmb K_k(\pmb z_k - \pmb h(\check{\pmb x}_{k-1})) \end{split} KkPk^x^k=Σxz,kΣzz,k1=PˇkHkT(HkPˇkHkT+Qk)1=PkˇKkΣxz,kT=PkˇKkHkPˇk=(IKkHk)Pkˇ=xˇk+Kk(zkμz,k)=xˇk+Kk(zkh(xˇk1))

误差卡尔曼滤波(ESKF)

将真值(true)状态变量分解为名义(nominal)状态变量和误差(error)状态变量的组合: x t = x ⊕ δ x \pmb x_t = \pmb x \oplus \delta \pmb x xt=xδx。书写简单起见,无特殊描述时,下文统一使用一般的 + / − +/- +/符号。

核心思想是将名义状态视为大信号(可非线性积分),将误差状态视为小信号(因此可线性积分,适用于线性高斯滤波)。

重写运动方程,将输入噪声项叠加到输入 u k \pmb u_k uk
x t , k = f ( x t , k − 1 , u t , k ) x k + δ x k = f ( x k − 1 + δ x k − 1 , u k + δ u k ) = f ( x k − 1 , u k ) + ∂ f ∂ x ∣ x k − 1 ⋅ δ x k − 1 + ∂ f ∂ u ∣ u k ⋅ δ u k δ x k = F k − 1 ⋅ δ x k − 1 + G k ⋅ δ u k \begin{split} \pmb x_{t,k} &= \pmb f(\pmb x_{t,k-1},\pmb u_{t,k}) \\ \pmb x_{k} + \delta \pmb x_k &= \pmb f(\pmb x_{k-1} + \delta \pmb x_{k-1},\pmb u_{k} + \delta \pmb u_k) \\ &= \pmb f(\pmb x_{k-1},\pmb u_{k}) + \frac{\partial \pmb f}{\partial \pmb x}|_{\pmb x_{k-1}} \cdot \delta \pmb x_{k-1} + \frac{\partial \pmb f}{\partial \pmb u}|_{\pmb u_{k}} \cdot \delta \pmb u_k \\ \delta \pmb x_k &= \pmb F_{k-1} \cdot \delta \pmb x_{k-1} + \pmb G_k \cdot \delta \pmb u_k \end{split} xt,kxk+δxkδxk=f(xt,k1,ut,k)=f(xk1+δxk1,uk+δuk)=f(xk1,uk)+xfxk1δxk1+ufukδuk=Fk1δxk1+Gkδuk

  • 过程噪声: G k ⋅ δ u k = w k ∼ N ( 0 , R k ) \pmb G_k \cdot \delta \pmb u_k = \pmb w_k \sim \mathcal N(\pmb 0, \pmb R_k) Gkδuk=wkN(0,Rk)

δ x k = F k − 1 ⋅ δ x k − 1 + w k \delta \pmb x_k = \pmb F_{k-1} \cdot \delta \pmb x_{k-1} + \pmb w_k δxk=Fk1δxk1+wk

  • 初始状态: δ x ^ 0 ∼ N ( 0 , P ^ 0 ) \delta \hat{\pmb x}_0 \sim \mathcal N(\pmb 0, \hat{\pmb P}_0) δx^0N(0,P^0)

重写观测方程
z k = h ( x t , k ) + v k = h ( x k + δ x k ) + v k = h ( x k ) + ∂ h ∂ δ x k ∣ x k ⋅ δ x k + v k = h ( x k ) + H k ⋅ δ x k + v k \begin{split} \pmb z_k &=\pmb h(\pmb x_{t,k})+\pmb v_k \\ &= \pmb h(\pmb x_k + \delta \pmb x_k) + \pmb v_k \\ &= \pmb h(\pmb x_k) + \frac{\partial \pmb h}{\partial \delta \pmb x_k}|_{\pmb x_k} \cdot \delta \pmb x_k + \pmb v_k \\ &= \pmb h(\pmb x_k) + \pmb H_k \cdot \delta \pmb x_k + \pmb v_k \\ \end{split} zk=h(xt,k)+vk=h(xk+δxk)+vk=h(xk)+δxkhxkδxk+vk=h(xk)+Hkδxk+vk

  • 测量噪声: v k ∈ R m ∼ N ( 0 , Q k ) \pmb v_k \in \mathbb{R}^m \sim \mathcal N(\pmb 0,\pmb Q_k) vkRmN(0,Qk)

预测步骤
x k = f ( x k − 1 , u k ) δ x ˇ k = F k − 1 ⋅ δ x ^ k − 1 P ˇ k = F k − 1 P ^ k − 1 F k − 1 T + R k \begin{split} \pmb x_k &= \pmb f(\pmb x_{k-1}, \pmb u_k) \\ \delta \check{\pmb x}_k &= \pmb F_{k-1} \cdot \delta \hat{\pmb x}_{k-1}\\ \check{\pmb P}_k &= \pmb F_{k-1} \hat{\pmb P}_{k-1} \pmb F_{k-1}^T + \pmb R_k \\ \end{split} xkδxˇkPˇk=f(xk1,uk)=Fk1δx^k1=Fk1P^k1Fk1T+Rk
说明: δ x ˇ k = F k − 1 ⋅ δ x ^ k − 1 \delta \check{\pmb x}_k = \pmb F_{k-1} \cdot \delta \hat{\pmb x}_{k-1} δxˇk=Fk1δx^k1在此更新意义不大,因每次更新后,会重置 δ x k = 0 \delta {\pmb x}_k = \pmb 0 δxk=0

校正步骤

联合高斯分布推导
μ x , k = E [ δ x k ] = 0 Σ x x , k = E [ δ x k ⋅ δ x k T ] = P ˇ k μ z , k = E [ h ( x k ) + H k ⋅ δ x k + v k ] = h ( x k ) Σ z z , k = E [ ( z k − μ z , k ) ( z k − μ z , k ) T ] = E [ ( h ( x k ) + H k ⋅ δ x k + v k − h ( x k ) ( h ( x k ) + H k ⋅ δ x k + v k − h ( x k ) T ] = E [ ( H k ⋅ δ x k + v k ) ( H k ⋅ δ x k + v k ) T ] = H k P ˇ k H k T + Q k Σ x z , k = E [ ( δ x k − δ x ˇ k ) ( z k − μ z , k ) T ] = E [ ( δ x k ) ( H k ⋅ δ x k + v k ) T ] = P ˇ k H k T Σ z x , k = Σ x z , k T = H k P ˇ k T = H k P ˇ k \begin{split} \pmb \mu_{x,k} &= E[\delta \pmb x_k] = \pmb 0 \\ \pmb \Sigma_{xx,k} &= E[\delta \pmb x_k \cdot \delta \pmb x_k^T] = \check{\pmb P}_k \\ \pmb \mu_{z,k} &= E[\pmb h(\pmb x_k) + \pmb H_k \cdot \delta \pmb x_k + \pmb v_k] \\ &= \pmb h(\pmb x_k) \\ \pmb \Sigma_{zz,k} &= E[(\pmb z_k - \pmb \mu_{z,k})(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\pmb h(\pmb x_k) + \pmb H_k \cdot \delta \pmb x_k + \pmb v_k - \pmb h(\pmb x_k)(\pmb h(\pmb x_k) + \pmb H_k \cdot \delta \pmb x_k + \pmb v_k - \pmb h(\pmb x_k)^T] \\ &= E[(\pmb H_k \cdot \delta \pmb x_k + \pmb v_k)(\pmb H_k \cdot \delta \pmb x_k + \pmb v_k)^T] \\ &= \pmb H_k \check{\pmb P}_k \pmb H_k^T + \pmb Q_k \\ \pmb \Sigma_{xz,k} &= E[(\delta \pmb x_k - \delta \check{\pmb x}_k)(\pmb z_k - \pmb \mu_{z,k})^T] \\ &= E[(\delta \pmb x_k) (\pmb H_k \cdot \delta \pmb x_k + \pmb v_k)^T] \\ &= \check{\pmb P}_k \pmb H_k^T \\ \pmb \Sigma_{zx,k} &= \pmb \Sigma_{xz,k}^T \\ &= \pmb H_k \check{\pmb P}_k^T \\ &= \pmb H_k \check{\pmb P}_k \end{split} μx,kΣxx,kμz,kΣzz,kΣxz,kΣzx,k=E[δxk]=0=E[δxkδxkT]=Pˇk=E[h(xk)+Hkδxk+vk]=h(xk)=E[(zkμz,k)(zkμz,k)T]=E[(h(xk)+Hkδxk+vkh(xk)(h(xk)+Hkδxk+vkh(xk)T]=E[(Hkδxk+vk)(Hkδxk+vk)T]=HkPˇkHkT+Qk=E[(δxkδxˇk)(zkμz,k)T]=E[(δxk)(Hkδxk+vk)T]=PˇkHkT=Σxz,kT=HkPˇkT=HkPˇk
带入广义高斯滤波得:
K k = P ˇ k H k T ( H k P ˇ k H k T + Q k ) − 1 P k ^ = ( I − K k H k ) P k ˇ δ x ^ k = K k ( z k − μ z , k ) = K k ( z k − h ( x k ) ) \begin{split} \pmb K_k &= \check{\pmb P}_k \pmb H_k^T (\pmb H_k \check{\pmb P}_k \pmb H_k^T + \pmb Q_k)^{-1} \\ \hat{\pmb P_k} &= (\pmb I - \pmb K_k \pmb H_k) \check{\pmb P_k} \\ \delta \hat{\pmb x}_k &= \pmb K_k(\pmb z_k- \pmb \mu_{z,k}) \\ &= \pmb K_k(\pmb z_k - \pmb h(\pmb x_k)) \end{split} KkPk^δx^k=PˇkHkT(HkPˇkHkT+Qk)1=(IKkHk)Pkˇ=Kk(zkμz,k)=Kk(zkh(xk))
误差重置

更新完成后,将观测误差 δ x k \delta \pmb x_k δxk更新到名义状态变量中,保持误差状态变量均值为零。

名义状态变量更新:
x ^ k = x k + δ x ^ k \begin{split} \hat{\pmb x}_k = \pmb x_k + \delta \hat{\pmb x}_k \end{split} x^k=xk+δx^k
状态误差重置:
δ x k ← g ( δ x k ) = δ x k ⊖ δ x ^ k P ← J P J T J = ∂ g ∂ δ x ∣ δ x ^ k \begin{split} \delta \pmb x_k &\leftarrow \pmb g(\delta \pmb x_k) = \delta \pmb x_k \ominus \delta \hat{\pmb x}_k \\ \pmb P &\leftarrow \pmb J \pmb P \pmb J^T \\ \pmb J &= \frac{\partial \pmb g}{\partial \delta \pmb x} |_{\delta \hat{x}_k} \end{split} δxkPJg(δxk)=δxkδx^kJPJT=δxgδx^k
重置前: δ x k ∼ N ( δ x ^ k , P ^ k ) \delta \pmb x_k \sim \mathcal N(\delta \hat{\pmb x}_k,\hat{\pmb P}_k) δxkN(δx^k,P^k)描述的是关于 x k \pmb x_k xk切空间的分布

重置后: δ x k ∼ N ( 0 , P k ) \delta \pmb x_k \sim \mathcal N(\pmb 0,\pmb P_k) δxkN(0,Pk)描述的是关于 x k + δ x k \pmb x_k + \delta \pmb x_k xk+δxk切空间的分布

对于欧拉空间 J \pmb J J为单位阵,但是对于带旋转的状态变量,切空间零点发生改变。Jacobian推导如下:

  • 旧的角度误差 δ θ \delta \pmb \theta δθ及其对应的四元数 δ q \delta \pmb q δq,观测误差 δ θ ^ \delta \hat{\pmb \theta} δθ^

  • 新的角度误差 δ θ + \delta \pmb \theta^+ δθ+及其对应的四元数 δ q + \delta \pmb q^+ δq+

  • 新的名义旋转变量 q + \pmb q^+ q+

  • 旋转的真值不变:
    q t = q + ⊗ δ q + = q ⊗ δ q \begin{split} \pmb q_t = \pmb q^+ \otimes \delta \pmb q^+ = \pmb q \otimes \delta \pmb q \end{split} qt=q+δq+=qδq

  • 观察误差注入到名义状态变量
    q + = q ⊗ δ q ^ \begin{split} \pmb q^+ = \pmb q \otimes \delta \hat{\pmb q} \end{split} q+=qδq^

  • 联合上述两式得
    δ q + = δ q ^ ∗ ⊗ δ q = [ δ q ^ ∗ ] L ⋅ δ q ≈ [ 1 − 1 2 δ θ ^ ] L ⋅ δ q [ 1 1 2 δ θ + ] ≈ [ 1 1 2 δ θ ^ T − 1 2 δ θ ^ I − [ 1 2 δ θ ^ ] × ] ⋅ [ 1 1 2 δ θ ] δ θ + ≈ − δ θ ^ + ( I − [ 1 2 δ θ ^ ] × ) δ θ \begin{split} \delta \pmb q^+ &= \delta \hat{\pmb q}^* \otimes \delta \pmb q \\ &= [\delta \hat{\pmb q}^*]_L \cdot \delta \pmb q \\ &\approx \begin{bmatrix} 1 \\ -\frac12 \delta \hat{\pmb \theta} \end{bmatrix}_L \cdot \delta \pmb q \\ \begin{bmatrix} 1 \\ \frac12 \delta \pmb \theta^+ \end{bmatrix} &\approx \begin{bmatrix} 1 & \frac12 \delta \hat{\pmb \theta}^T \\ -\frac12 \delta \hat{\pmb \theta} & \pmb I - \left[\frac12 \delta \hat{\pmb \theta} \right]_\times \end{bmatrix} \cdot \begin{bmatrix} 1 \\ \frac12 \delta \pmb \theta \end{bmatrix} \\ \delta \pmb \theta^+ &\approx - \delta \hat{\pmb \theta} + \left( \pmb I - \left[\frac12 \delta \hat{\pmb \theta} \right]_\times \right) \delta \pmb \theta \\ \end{split} δq+[121δθ+]δθ+=δq^δq=[δq^]Lδq[121δθ^]Lδq 121δθ^21δθ^TI[21δθ^]× [121δθ]δθ^+(I[21δθ^]×)δθ
    得到:
    ∂ δ θ + ∂ δ θ = I − [ 1 2 δ θ ^ ] × \begin{split} \frac{\partial \delta \pmb \theta^+}{\partial \delta \pmb \theta} = \pmb I - \left[\frac12 \delta \hat{\pmb \theta} \right]_\times \end{split} δθδθ+=I[21δθ^]×

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: imm-ekf是一种算法,它结合了Interacting Multiple Model (IMM)和Extended Kalman Filter (EKF)两种技术。该算法主要用于目标跟踪和估计问题。 在目标跟踪中,IMM-ekf的思想是通过同时使用多个模型来建模目标的运动行为。这些模型可以表示目标在不同状态下的不同运动模式。每个模型有自己的状态方程和测量方程。使用IMM技术,我们可以根据目标当前的状态和历史观测数据,以一定的权重来选择最优的模型,并预测目标的下一个状态。 而EKF是一种扩展卡尔曼滤波器,它通过线性化非线性状态和测量方程来提高滤波的效果。IMM-ekf算法将IMM和EKF结合起来,通过使用EKF对每个模型进行状态估计,从而实现对目标的多模型跟踪和估计。 在matlab中,我们可以使用现有的工具箱或自己编写代码来实现IMM-ekf算法。首先,我们需要定义每个模型的状态方程和测量方程,并选择适当的初始状态和协方差矩阵。然后,我们可以使用IMM技术来选择最佳模型,并使用EKF对每个模型进行预测和更新。最后,我们可以分析估计结果,并根据需要进行进一步的优化和改进。 总而言之,imm-ekf是一种结合了IMM和EKF技术的目标跟踪和估计算法。在matlab中,我们可以使用该算法来实现多模型目标跟踪,并对目标状态进行估计。这种算法在目标跟踪、自动驾驶、机器人导航等领域具有广泛的应用前景。 ### 回答2: Imm-EKF(Immersion Extended Kalman Filter)是一种在多传感器融合中广泛使用的算法,用于估计系统的状态。其主要思想是将不同传感器的测量数据与系统的动力学方程进行融合,从而提高估计的精度和鲁棒性。 Matlab是一个常用的科学计算软件,提供了丰富的数学和工程计算功能,非常适用于实现Imm-EKF算法。 在使用Matlab实现Imm-EKF时,首先需要定义系统的动力学模型和传感器模型。动力学模型描述了系统的状态演化规律,传感器模型描述了传感器的测量输出与系统状态之间的关系。 然后,根据Imm-EKF算法的步骤,初始化系统状态估计值和协方差矩阵。接下来,利用系统的动力学模型和传感器模型,根据当前的传感器测量数据和前一时刻的状态估计,进行预测和更新步骤。 预测步骤使用系统的动力学模型进行状态预测,并更新协方差矩阵。更新步骤利用传感器模型将预测的状态与实际的传感器测量进行差异信息的融合,从而得到系统状态估计值和协方差矩阵。 最后,根据需要,可以对Imm-EKF算法进行参数调整和性能评估。通过改变系统模型、传感器模型或者调整算法参数,可以进一步改善系统状态估计精度和鲁棒性。 总之,通过在Matlab中实现Imm-EKF算法,可以实现多传感器融合中的状态估计问题。在实际应用中,可以根据实际场景和需求进行算法的优化和改进,进一步提高状态估计的精度和鲁棒性。 ### 回答3: IMM-EKF是一种用于多模型估计的滤波器,该算法结合了交互式多模型(IMM)和扩展卡尔曼滤波(EKF)的优点。 IMM-EKF在目标跟踪和状态估计中应用广泛。它适用于目标具有多个特定模型的情况,每个模型描述了目标的不同行为模式。一个模型可以代表目标的匀速运动,另一个模型可以代表目标的加速运动。这种多模型方法可以更好地适应目标在不同场景中的行为变化,从而提高估计的准确性和稳定性。 IMM-EKF的工作原理如下: 1. 初始时,为每个模型分配一个初始权重。这些权重代表了每个模型在当前状态下的置信度。 2. 对于每个时间步,IMM-EKF首先针对每个模型使用EKF来进行状态预测。 3. 然后,通过比较观测数据与每个模型的预测结果,计算每个模型的更新权重。观测数据有助于选择最佳的模型。 4. 最后,通过加权平均每个模型的预测结果,得到最终的估计结果。 IMM-EKF算法在MATLAB中可以实现。MATLAB提供了丰富的函数和工具箱来进行矩阵运算、卡尔曼滤波和状态估计。可以利用MATLAB中的矩阵操作和函数进行IMM-EKF的步骤计算和权重更新。 总之,IMM-EKF是一种结合了交互式多模型和扩展卡尔曼滤波的滤波算法。它在多目标跟踪和状态估计中具有良好的适应性和性能。使用MATLAB进行实现时,可以利用其丰富的函数和工具箱来简化算法的实现过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值