卡爾曼濾波(KF)與擴展卡爾曼濾波(EKF)講解與推導

卡爾曼濾波

  • 系統方程:

                                                                        $$\begin{aligned} x_k &= Ax_{k-1} + Bu_{k-1} + q_{k} \\ z_k &= Hx_{k-1} + r_k \end{aligned} \tag{1}$$

       A爲狀態轉移矩陣,B爲控制矩陣,u_{k-1}爲控制向量,q_{k}爲系統白噪聲,對應狀態的每一個分量,均值爲0,方差爲Q_{k}r_{k}爲觀測白噪聲,同樣方差爲R_{k},服從高斯分佈。

  • 基本假設

      下一個狀態是前一個狀態的線性函數,觀測量是狀態量的線性函數。

  • 預測

                                                                           $$\begin{aligned} \overline{x_k} &= A\hat{x}_{k-1} + Bu_{k-1}\\ \overline{P_k} & =A\hat{P}_{k-1}A^T + Q_k \end{aligned}$$

  • 更新

                                                                    $$\begin{aligned} K_k &= \overline{P}_kH_k^T(H_k\overline{P_k}H_k^T+R_k)^{-1}\\ \hat{X_k}&=\overline{X}_k+K_k(z_k-H_k\overline{X_k})\\ \hat{P_k}&=(I-K_kH_k)\overline{P}_k \end{aligned}$$

  • 符號意義

        $$K_k$$是卡爾曼增益,$\overline{x_k} $是狀態預測值,$\overline{P_k} $是預測狀態協方差值,\hat{X_k}是狀態更新值(結果),\hat{P_k}是更新狀態協方差值。

KF推導過程:

       卡爾曼濾波通過迭代遞推實現狀態值與狀態協方差值的更新與計算,每次輸入爲上一時刻計算得到的狀態值與協方差值。

       首先根據系統方程可以計算得到預測方程:

                                                                           \overline{x_k} &= A\hat{x}_{k-1} + Bu_{k-1}

       根據協方差公式cov(AX_k) = Acov(X_k)A^T得到:

                                                                           \overline{P_k}=A\hat{P}_{k-1}A^T + Q_k

       根據定理:如果A\sim(\mu _0,\sigma _0^2),B\sim(\mu_1,\sigma_0^2),則統一量崗後,A \cdot B \sim (\mu{}',\sigma_0{}'),均值與方差滿足如下公式:

                                                                          $$\begin{aligned}\mu{}'&= \mu_0 - \frac{\sigma_0^2(\mu_1-\mu_0)}{\sigma_0^2+\sigma_1^2} \\\sigma{}'^2 & = \sigma_0^2 - \frac{\sigma_0^4}{\sigma_0^2+\sigma_1^2}\end{aligned}$$

        預測狀態量統一量綱到觀測變量,加上原觀測量得到兩組高斯分佈:(Hx_k,)\(H\overline{x_k},H\overline{P_k}H^T\),(y_k,R_k)

        融合兩組高斯變量,爲了表示方便令K=\frac{\sigma_0^2}{\sigma_0^2+\sigma_1^2},將得到的結果視爲真值得到:

                                                              $$\begin{aligned} H\hat{X_k}&=H\overline{X}_k+K(z_k-H_k\overline{X_k})\\ H\hat{P_k}H^T&=H\overline{P}_kH^T-KH\overline{P}_kH^T \end{aligned}$$  

        去掉觀測矩陣變量H,令\overline{P}_kH_k^T(H_k\overline{P_k}H_k^T+Q)^{-1}得到:

                                                                       $$\begin{aligned} \hat{X_k}&=\overline{X}_k+K_k(z_k-H_k\overline{X_k})\\ \hat{P_k}&=(I-K_kH_k)\overline{P}_k \end{aligned}$$

        推導完畢,簡單的理解就是用狀態方程進行預測,用觀測變量進行後驗概率校正,將兩種高斯分佈融合增加狀態可信度。從卡爾曼增益可以看出,如果狀態遞推的方差較大,即使用狀態遞推不準確度大,則狀態更新值中觀測量的比重較大;反之如果觀測量的方差較大,觀測量不準確,狀態更新值中狀態量的比重較大。狀態遞推與觀測值使用更準的,即兩種傳感器使用更準的完成狀態更新。

卡爾曼濾波假設狀態方程與觀測方程的線性,當狀態與觀測方程不滿足線性條件時需要將其線性化,即EKF。 

KF的三大假設:

應用KF具有侷限性,需要滿足三大假設:

1 測量噪聲、系統噪聲以及初始值服從高斯分佈且互不相關

2 系統是線性的,觀測方程與狀態方程均要求爲線性方程

3 滿足貝葉斯濾波的馬爾可夫假設,假設過去以及未來的數據都是獨立的。也就是t時刻的狀態可以只由t-1時刻的狀態推出

然而實際應用中很難滿足系統是線性的,需要用到擴展卡爾曼濾波,將非線性系統轉化爲線性系統

EKF推導過程:

  • 非線性系統方程:

                                                                       $$\begin{aligned} x_k &= f(x_{k-1}) + Bu_{k-1} + q_{k} \\ z_k &= h(x_{k-1}) + r_k \end{aligned} \tag{1}$$

對狀態轉移函數進行一階泰勒展開得到:

                                                     $$\begin{aligned} x_k &= f(\hat{x}_{k-1} + Bu_{k-1})+f{}'(\hat{x}_{k-1})(x_{k-1}-\hat{x}_{k-1}) + r_{k} \\ z_k &= h(\overline{x}_{k-1}) +h{}'(x_{k-1}-\overline{x}_{k-1})+ q_k \end{aligned} \tag{1}$$

完成線性化後,系統爲線性,狀態方程與觀測方程同KF中的方程,線性化後EKF5個方程推導過程上述KF所示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章