1 状态估计问题表述

运动方程:
x k = f ( x k − 1 , u k ) + w k (1) \boldsymbol{x}_k = \boldsymbol{f}(\boldsymbol{x}_{k-1}, \boldsymbol{u}_k) + \boldsymbol{w}_k \tag{1} xk=f(xk1,uk)+wk(1)
其中 f \boldsymbol{f} f为运动方程, w k ∼ N ( 0 , R k ) \boldsymbol{w}_k\sim \mathcal{N}(0, R_k) wkN(0,Rk)

测量方程:
z k = h ( x k ) + v k (2) \boldsymbol{z}_k = \boldsymbol{h}(\boldsymbol{x}_k) + \boldsymbol{v}_k \tag{2} zk=h(xk)+vk(2)

2 卡尔曼滤波器

前提条件 f \boldsymbol{f} f h \boldsymbol{h} h是线性函数。

那么有,
x k = A k x k − 1 + u k + w k z k = C k x k + v k (3) \begin{align} \boldsymbol{x}_k &= \boldsymbol{A}_k \boldsymbol{x}_{k-1} + \boldsymbol{u}_k + \boldsymbol{w}_k \\ \boldsymbol{z}_k &= \boldsymbol{C}_k \boldsymbol{x}_k + \boldsymbol{v}_k \end{align} \tag{3} xkzk=Akxk1+uk+wk=Ckxk+vk(3)

预测
x k , p r e d = A k x k − 1 + u k P k , p r e d = A k P k − 1 A k T + R k (4) \begin{align} \boldsymbol{x}_{k,pred} &= \boldsymbol{A}_k \boldsymbol{x}_{k-1} + \boldsymbol{u}_k \\ \boldsymbol{P}_{k,pred} &= \boldsymbol{A}_k \boldsymbol{P}_{k-1} \boldsymbol{A}_k^T + \boldsymbol{R}_k \end{align} \tag{4} xk,predPk,pred=Akxk1+uk=AkPk1AkT+Rk(4)

计算卡尔曼增益 K \boldsymbol{K} K

K k = P k , p r e d C k T ( C k P k , p r e d C k T + Q k ) − 1 (5) \boldsymbol{K}_k = \boldsymbol{P}_{k,pred} \boldsymbol{C}_k^T (\boldsymbol{C}_k \boldsymbol{P}_{k,pred} \boldsymbol{C}_k^T + \boldsymbol{Q}_k)^{-1} \tag{5} Kk=Pk,predCkT(CkPk,predCkT+Qk)1(5)

更新
x k = x k , p r e d + K k ( z k − C k x k , p r e d ) P k = ( I − K k C k ) P k , p r e d (6) \begin{align} \boldsymbol{x}_k &= \boldsymbol{x}_{k,pred} + \boldsymbol{K}_k (\boldsymbol{z}_k - \boldsymbol{C}_k \boldsymbol{x}_{k,pred}) \\ \boldsymbol{P}_k &= (\boldsymbol{I} - \boldsymbol{K}_k \boldsymbol{C}_k) \boldsymbol{P}_{k,pred} \end{align} \tag{6} xkPk=xk,pred+Kk(zkCkxk,pred)=(IKkCk)Pk,pred(6)

3 扩展卡尔曼滤波器

前提条件 f \boldsymbol{f} f h \boldsymbol{h} h是非线性函数。

线性化之后的运行方程和测量方程如下,
x k ≈ f ( x k − 1 , u k ) + F k Δ x k + w k z k ≈ h ( x k , p r e d ) + H k ( x k − x k , p r e d ) + n k (7) \begin{align} \boldsymbol{x}_k & \approx \boldsymbol{f}(\boldsymbol{x}_{k-1}, \boldsymbol{u}_k) + \boldsymbol{F}_k \Delta \boldsymbol{x}_{k} + \boldsymbol{w}_k \\ \boldsymbol{z}_k & \approx \boldsymbol{h}(\boldsymbol{x}_{k,pred}) + \boldsymbol{H}_k (\boldsymbol{x}_k - \boldsymbol{x}_{k,pred}) + \boldsymbol{n}_k \end{align} \tag{7} xkzkf(xk1,uk)+FkΔxk+wkh(xk,pred)+Hk(xkxk,pred)+nk(7)

预测

x k , p r e d = f ( x k − 1 , u k ) P k , p r e d = F k P k − 1 F k T + R k (8) \begin{align} \boldsymbol{x}_{k,pred} &= \boldsymbol{f}(\boldsymbol{x}_{k-1}, \boldsymbol{u}_k) \\ \boldsymbol{P}_{k,pred} &= \boldsymbol{F}_k \boldsymbol{P}_{k-1} \boldsymbol{F}_k^T + \boldsymbol{R}_k \end{align} \tag{8} xk,predPk,pred=f(xk1,uk)=FkPk1FkT+Rk(8)

计算扩展卡尔曼增益 K k \boldsymbol{K}_k Kk
K k = P k , p r e d H k T ( H k P k , p r e d H k T + Q k ) − 1 (9) \boldsymbol{K}_k = \boldsymbol{P}_{k,pred} \boldsymbol{H}_k^T (\boldsymbol{H}_k \boldsymbol{P}_{k,pred} \boldsymbol{H}_k^T + \boldsymbol{Q}_k)^{-1} \tag{9} Kk=Pk,predHkT(HkPk,predHkT+Qk)1(9)

更新

x k = x k , p r e d + K k ( z k − h ( x k , p r e d ) ) P k = ( I − K k H k ) P k , p r e d (10) \begin{align} \boldsymbol{x}_k &= \boldsymbol{x}_{k,pred} + \boldsymbol{K}_k (\boldsymbol{z}_k - \boldsymbol{h}(\boldsymbol{x}_{k,pred})) \\ \boldsymbol{P}_k &= (\boldsymbol{I} - \boldsymbol{K}_k \boldsymbol{H}_k) \boldsymbol{P}_{k,pred} \end{align} \tag{10} xkPk=xk,pred+Kk(zkh(xk,pred))=(IKkHk)Pk,pred(10)

4 其他

已知运动方程为,
x k = ϕ k ∣ k − 1 x k − 1 + Γ k − 1 w k − 1 (1) x_k=\phi_{k|k-1}x_{k-1}+\Gamma_{k-1}w_{k-1} \tag{1} xk=ϕkk1xk1+Γk1wk1(1)
其中 x k x_k xk表示 k k k时刻的状态, ϕ k ∣ k − 1 \phi_{k|k-1} ϕkk1表示状态转移矩阵, x k − 1 x_{k-1} xk1表示 k − 1 k-1 k1时刻的状态, Γ k − 1 \Gamma_{k-1} Γk1表示噪声矩阵, w k − 1 w_{k-1} wk1表示运动噪声。 w k − 1 w_{k-1} wk1服从高斯分布 N ( 0 , Q k − 1 ) N(0,Q_{k-1}) N(0,Qk1)
  测量方程为,
z k = H k x k + v k (2) z_k=H_kx_k+v_k \tag{2} zk=Hkxk+vk(2)
其中 z k z_k zk表示 k k k时刻的测量, H k H_k Hk表示测量矩阵, v k v_k vk表示测量噪声。 v k v_k vk服从高斯分布 N ( 0 , R k ) N(0,R_k) N(0,Rk)
  输入 k − 1 k-1 k1时刻的后验状态 x ^ k − 1 \hat x_{k-1} x^k1和后验状态的协方差矩阵 P ^ k − 1 \hat P_{k-1} P^k1,以及 k k k时刻的测量 z k z_k zk,进行如下操作:预测+更新
  预测:用运动方程得到先验估计,包括先验状态 x ˇ k \check x_k xˇk和先验状态的协方差矩阵 P ˇ k \check P_k Pˇk
x ˇ k = ϕ k ∣ k − 1 x ^ k − 1 (3-1) \check x_k = \phi_{k|k-1}\hat x_{k-1} \tag{3-1} xˇk=ϕkk1x^k1(3-1)
P ˇ k = ϕ k ∣ k − 1 P ^ k − 1 ϕ k ∣ k − 1 T + Γ k − 1 Q k − 1 Γ k − 1 T (3-2) \check P_k=\phi_{k|k-1}\hat P_{k-1}\phi_{k|k-1}^T+\Gamma_{k-1}Q_{k-1}\Gamma_{k-1}^T \tag{3-2} Pˇk=ϕkk1P^k1ϕkk1T+Γk1Qk1Γk1T(3-2)
其中公式(3-1)由均值的传播定律得到,而公式(3-2)由协方差的传播定律得到。
  更新:先计算卡尔曼增益,然后用测量方程更新先验估计得到后验估计,包括后验状态 x ^ k \hat x_k x^k和后验状态的协方差矩阵 P ^ k \hat P_k P^k
K k = P ˇ k H k T ( H k P ˇ k H k T + R k ) − 1 (3-3) K_k=\check P_kH_k^T(H_k\check P_kH_k^T+R_k)^{-1} \tag{3-3} Kk=PˇkHkT(HkPˇkHkT+Rk)1(3-3)

x ^ k = x ˇ k + K k ( z k − H k x ˇ k ) (3-4) \hat x_k = \check x_k + K_k(z_k-H_k\check x_k) \tag{3-4} x^k=xˇk+Kk(zkHkxˇk)(3-4)

P ^ k = ( I − K k H k ) P ˇ k (3-5) \hat P_k= (I-K_kH_k)\check P_k \tag{3-5} P^k=(IKkHk)Pˇk(3-5)
其中公式(3-1)至(3-5)即为离散时间下的卡尔曼滤波器方程。


  卡尔曼滤波器的一个小例子。
  已知房间内的温度受扰动噪声 w w w的影响,它服从高斯分布 N ( 0 , 0. 4 2 ) N(0,0.4^2) N(0,0.42);同时,房间内有一个温度计,它的测量噪声为 v v v,它服从高斯分布 N ( 0 , 0. 3 2 ) N(0,0.3^2) N(0,0.32)。已知 k − 1 k-1 k1时刻房间内的真实温度为25摄氏度, k k k时刻的温度计读数为25.2摄氏度,请问 k k k时刻房间的温度估计为多少?该估计的不确定度为多少?
  解答
由题意,系统的运动方程为,
x k = x k − 1 + w k − 1 x_k=x_{k-1}+w_{k-1} xk=xk1+wk1
测量方程为,
z k = x k + v k z_k=x_k+v_k zk=xk+vk
且已知 k − 1 k-1 k1时刻的后验估计为25摄氏度,方差为0。根据公式(3-1)和(3-2)得到, k k k时刻先验的状态估计为25摄氏度,方差为 0. 4 2 0.4^2 0.42。根据公式(3-3)得到卡尔曼增益为,
K k = 0. 4 2 0. 4 2 + 0. 3 2 = 16 25 = 0.64 K_k=\frac{0.4^2}{0.4^2+0.3^2}=\frac{16}{25}=0.64 Kk=0.42+0.320.42=2516=0.64
那么,根据公式(3-4)和公式(3-5)得到后验的状态估计为,
x ^ k = 25 + 0.64 ⋅ ( 25.2 − 25 ) = 25.128 \hat x_k=25+0.64\cdot(25.2-25)=25.128 x^k=25+0.64(25.225)=25.128
P ^ k = ( 1 − 0.64 ) ⋅ 0. 4 2 = 0.0576 = 0.2 4 2 \hat P_k=(1-0.64)\cdot0.4^2=0.0576=0.24^2 P^k=(10.64)0.42=0.0576=0.242
k k k时刻房间的温度估计为25.128摄氏度,该估计的不确定度为 0.2 4 2 0.24^2 0.242
  换个角度思考(当运动方程和测量方程中的系数皆为1时,下面两个结论才成立),
预测操作时,状态的不确定度等价于电阻的串联,
P ˇ k = 0 2 + 0. 4 2 ⇒ P ˇ k = 0. 4 2 \check P_k=0^2+0.4^2 \Rightarrow \check P_k=0.4^2 Pˇk=02+0.42Pˇk=0.42
更新操作时,状态的不确定度等价于电阻的并联,
1 P ^ k = 1 0. 4 2 + 1 0. 3 2 ⇒ P ^ k = 0.2 4 2 \frac{1}{\hat P_k}=\frac{1}{0.4^2}+\frac{1}{0.3^2} \Rightarrow \hat P_k=0.24^2 P^k1=0.421+0.321P^k=0.242

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐