卡尔曼滤波——卡尔曼滤波推导

卡尔曼滤波的基本推导与实例

目录

前言

一、基本数学概念

二、卡尔曼滤波推导

1.卡尔曼增益推导

2.    推导

总结



前言

该笔记是在学习up主DR_CAN的关于卡尔曼滤波视频后做的归纳与总结。
up主主页:https://space.bilibili.com/230105574


一、基本数学概念

均值:将数据集中所有数据相加,然后除以数据集中数据的个数得到的结果。尝用于描述数据集的中心趋势,均值通常用 \mu 来表示。均值计算公式为:

\mu=\frac1n\sum_{i=1}^n x_i

期望:对随机变量可能取值的加权平均值,其中权重是取值的概率。期望是对随机变量整体分布情况的描述,期望通常用 E 表示。期望计算公式为:

E(X)=\sum_{i=1}^n x_i P(X=x_i)

均值期望是两个相似而不同的概念。简而言之,均值是对数据集中的数值进行求和平均,而期望是对随机变量按照其概率进行加权平均

方差:用来衡量数据与其均值的的偏离程度,用 \sigma ^{2} 来表示。\sigma ^{2} 越大,表示数据的分布越分散,反之越集中。方差计算公式为:

\sigma^2=E[(X-\mu)^2]

协方差:用于衡量两个变量之间关系的统计量。它描述的是两个变量的联合变化程度 ,即一个变量偏离了其均值,另一个变量是否也偏离其均值 。协方差为正表示两个变量正相关,协方差为负表示两个变量负相关,协方差为0表示两个变量不相关。

协方差矩阵:协方差矩阵是描述两个或多个随机变量之间关系的矩阵,其中每个元素是两个随机变量之间的协方差。

标准差:是方差的算术平方根,用 \sigma 来表示。标准差也反应数据的分散程度,且与原始数据的单位相同,相同情况下,标准差比方差更为直观。

方差和标准差都是描述数据分散程度的统计量。

正态分布:也叫高斯分布(Gaussian Distribution),它的形状呈钟形曲线,分布在均值 \mu 附近,随着偏离均值越远,分布越稀疏。其概率密度函数表达式为:

                                                     f\left(x|\mu,\sigma^{2}\right)=\dfrac{1}{\sqrt{2\pi\sigma^{2}}}e^{\frac{-(x-\mu^{2})}{2\sigma^{2}}}                                          

二、卡尔曼滤波推导

1.卡尔曼增益推导

现有一状态空间方程如下:

                                                    \begin{array}{l}x_k=Ax_{k+1}+Bu_{k+1}+w_{k-1}\\ z_k=Hx_k+v_k\end{array}                                            (1)

其中 w_{k-1} 是过程噪声,v_{k-1} 是测量噪声,x_{k} 表示 估计值,z_{k} 表示测量值 ,A 表示系统状态转移矩阵,B 表示控制输入矩阵,H 为测量矩阵  。

假设这些噪声满足正态分布,则有 :

                                                        \\P(w)\sim N\left(0,Q\right)\\\:P(v)\sim N\left(0,R\right)\:                                                            (2)

其中 P 和 Q 分别是协方差矩阵,该正态分布的期望为 0 且     \stackrel{.}{Q}=E[w w^{\top}]\:,\:\:R=\stackrel{.}{E}[v v^{\top}] 。

通常测量噪声和过程造成是零均值噪声。这是因为噪声是由许多不同来源产生的随机扰动所组成的,它们可以是正的或负的,而且通常是无偏的,也就是说它们在平均意义下相互抵消,期望为零。因此,假设噪声为零均值可以更好地描述实际情况。对于正态分布而言,均值为0,也符合这种假设。

这里使用协方差矩阵的原因是,要考虑不同维度间的相关性。通常一维变量用方差,多为变量用协方差矩阵。

因为 w_{k-1} 和 v_{k-1} 两种噪声都是未知的,那么已知的如下:

                                                        \begin{array}{l}x_k=Ax_{k+1}+Bu_{k+1}\\ z_k=Hx_k\end{array}                                                     (3)

如公式(3)就是去掉了噪声的值,因为少了噪声,所以这里的 x_{k} 只能是个估计值写作 \hat{x}_k^-,​​​​\hat{x}_k^-表示先验估计,它是在给定当前时刻的观测数据和前一时刻状态向量的情况下,通过卡尔曼滤波算法计算得到的最优估计值。在卡尔曼滤波过程中, ​\hat{x}_k^- 不断更新,以反映对系统状态的更准确估计。

我们将模型直接计算得到的称为先验变量,观测器测量得到的称为测量量,二者的表达式如下:

                                                       \begin{array}{l}\hat x_k^{-}=A\hat x_{k+1}+B u_{k+1}\\ z_k=H\hat x_{kmea}\to\hat x_{kmea}=H^{-}z_k\end{array}                                     (4)

由于少了对噪声计算,这两者都是不准确的值。引入系数 G ,通过数据融合的方法,带入公式(4)我们可以得到后验变量的表达式为:

                                       \\\hat{x}_k=\hat{x}_k^{-}+G\hat{x}_{kmea}\rightarrow\hat{x}_k=\hat{x}_k^{-}+G(H^{-}z_k-\hat{x}_k^{-})                       (5)

由公式(5)可以看出当 G = 0 时,\hat{x}_k=\hat{x}_k^-,更倾向于相信计算得到的结果 \hat{x}_k^- ;当 G = 1 时,

\hat{x}_{k}=H^{-}z_{k}\:,此时则更相信测量得到的结果 \hat{x}_{k}。那么令G = K_{k}H带入式子(5)就能得到卡尔曼滤波中重要的方程之一,状态更新方程,也叫后验估计方程,也是书籍中卡尔曼滤波器的表达式:

                                        \hat{x}_k=\hat{x}_k^{-}+K_k\bigl(z_k-H\hat{x}_k^{-}\bigr)    且  \boldsymbol{K_{k}}\epsilon [0,H^-]                              (6)

于是我们的目标变为寻找合适的 K_{k} 使得后验估计与实际值的误差尽可能最小,将 \hat{x}_k^- 趋近于 \hat{x}_{k}

即引入误差 e_{k} 使得 \:e_{k}=x_{k}-\hat{x}_{k} 最小。

我们认为其满足正态分布即 P(e_{k})\sim N(0,P) ,同理 P 是一个协方差矩阵。

                                         P=E[ee^{\top}]=\begin{bmatrix}\text{cov}(e_1,e_1)&\text{cov}(e_1,e_2)\\ \text{cov}(e_2,e_1)&\text{cov}(e_2,e_2)\end{bmatrix}                                    (7)

其中cov是计算协方差的,例如上式子可以转化为

                                                P=E[ee^\top]=\left[\begin{matrix}\sigma_{e_{1}}^{2}&\sigma_{e_{1}}\sigma_{e_{2}}\\ \sigma_{e_{2}}\sigma_{e_{1}}&\sigma_{e_{2}}^{2}\end{matrix}\right]                                           (8)

当 e_{k} 越小即 e_{k}的方差越小,便越接近期望值 0 。所以想要 e_{k} 最小,则只要协方差矩阵的迹 \begin{aligned}\text{tr}(P)=\text{cov}(e_1,e_1)+\text{cov}(e_2,e_2)\end{aligned} 最小。因为迹等于方差的平方和,所以只要迹越小,那么方差也就越小。

式子(7)的证明:

由 [e_{1}e_{2}]^{T}[e_{1}e_{2}]=\left[\begin{array}{c c}e_{1}^{2}&e_{1}e_{2}\\ e_{2}e_{1}&e_{2}^{2}\end{array}\right] 得E\left[e e^{\top}\right]=\left[\begin{array}{c c}{​{E(e_{1}^{2})}}&{​{E(e_{1}e_{2})}}\\ {​{E(e_{2}e_{1})}}&{​{E(e_{2}^{2})}}\\ \end{array}\right]

因为方差 VAR(X) = E(X^2)-E^2(X),且对于 e 来说 期望是 0 , 所以 E^2(X) = 0

故而 :VAR(X) = E(X^2)  即  VAR(e) = E(e^2)

对于方差来说有 :E(a b)=E(a)E(b)

所以有:

 \\E[ee^\top]=\left[\begin{array}{c c}{​{E(e_{1}^{2})}}&{​{E(e_{1})E(e_{2})}}\\ {​{E(e_{2})E(e_{1})}}&{​{E(e_{2}^{2})}}\\ \end{array}\right]=\left[\begin{matrix}\sigma_{e_{1}}^{2}&\sigma_{e_{1}}\sigma_{e_{2}}\\ \sigma_{e_{2}}\sigma_{e_{1}}&\sigma_{e_{2}}^{2}\end{matrix}\right]\\ =\begin{bmatrix}\text{cov}(e_1,e_1)&\text{cov}(e_1,e_2)\\ \text{cov}(e_2,e_1)&\text{cov}(e_2,e_2)\end{bmatrix}

而协方差 P_k  :

                                                P_k=E[e_ke_k^\top]=E[\left(x_k-\hat{x}_k\right)\left(x_k-\hat{x}_k\right)^\top]                           (8) 

由式子(6)可以得到

 \hat{x}_k=\hat{x}_k^{-}+K_k\bigl(z_k-H\hat{x}_k^{-}\bigr)

进一步推导得:

                                                 \begin{array}{l}x_k-\hat{x}_k=x_k-\big(\hat{x}_k^-+K_k\big(z_k-H\hat{x}_k^-\big)\big)\\ =x_k-\hat{x}_k^--K_kz_k+K_kH\hat{x}_k^-\end{array}                            (9)

将(1)式子中的  z_k=Hx_k+v_k 可得

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        \begin{array}{l}x_{k}-\hat{x}_{k}=x_{k}-\left(\hat{x}_{k}+K_{k}H\left(z_{k}-H\hat{x}_{k}^{-}\right)\right)\\ =x_{k}-\hat{x}_{k}^{-}-K_{k}z_{k}+K_{k}H\hat{x}_{k}^{-}\\ =x_{k}-\hat{x}_{k}^{-}-K_{k}\left(Hx_{k}+v_{k}\right)+K_{k}H\hat{x}_{k}^{-}\\ =\left(x_{k}-\hat{x}_{k}^{-}\right)-K_{k}H\left(x_{k}-\hat{x}_{k}^{-}\right)-K_{k}v_{k}\\ =\left(I-K_{k}H\right)\left(x_{k}-\hat{x}_{k}^{-}\right)-K_{k}v_{k}\\ =\left(I-K_{k}H\right)e_{k}^{-}-K_{k}v_{k}\end{array} 

即         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_k-\hat{x}_k=\left(I-K_{k}H\right)e_{k}^{-}-K_{k}{v_{k}}                                 (10) 

其中 I 是单位矩阵,e_{k}^{-} 是先验误差,即是噪声 e_{k}^{-} = (x_{k}-{\hat{x}}_{k}^{-}) 。将式(10)带入式(8)可得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​   \begin{array}{l}P_k=E[(x_k-\hat{x}_k)\left(x_k-\hat{x}_k\right)^{\top}]\\ =E[\left((I-K_kH)e_k^--K_kv_k\right)\left((I-K_kH)e_k^--K_kv_k\right)^{\top}]\\=E[\left(\left(I-K_kH\right)e_k^{-}-K_k v_k\right)\left(e_k^{-\top}\left(I-K_k H\right)^{\top}-v_k^{\top}K_k^{\top}\right)]\end{array}         (11)

P_k=E\left[\left(I-K_{k}H\right)e_{k}^{-}e_{k}^{-\top}\left(I-K_{k}H\right)^{\top}-\left(I-K_{k}H\right)e_{k}^{-}v_{k}^{\top}K_{k}^{\top}\\ -K_{k}v_{k}e_{k}^{-\top}\left(I-K_{k}H\right)^{\top}+K_{k}v_{k}v_{k}^{\top}K_{k}^{\top}\right]

 因为 \mathop{\mathrm{\mathit{I}}}-K_{k}H 是常数,于是上式子可化简为:

        ​​​​​​​        ​​​​​​​       \begin{aligned}P_k=\left(I-K_kH\right)E\left[e_k^-e_k^{-\top}\right]\left(I-K_kH\right)^\top-\left(I-K_kH\right)E\left[e_k^-v_k^\top\right]K_k^\top\\ -K_kE\left[v_k e_k^{-\top}\right]\left(I-K_kH\right)^\top+K_kE\left[v_k v_k^\top\right]K_k^\top\end{aligned}  (12)            

上面用到了线性代数中 (A B)^{T}=B^{T}A^{T} ,(A+B)^T=A^T+B^T

由于 e_{k}^{-} 和 v_k 相互独立,于是有 E\left[e_{k}^{-}v_{k}^{\top}\right]=E\left[v_{k}e_{k}^{-\top}\right]=0 

这是因为 E(A B)=E(A)E(B) 且 E(e_k^{-})=E(v_k) = 0  

于是乎,由 E\left[e_{k}^{-}v_{k}^{\top}\right]=E\left[v_{k}e_{k}^{-\top}\right]=0 带入式(12)可得:           

                                         \begin{aligned}P_k=\left(I-K_kH\right)E\left[e_k^-e_k^{-\top}\right]+K_kE\left[v_k v_k^\top\right]K_k^\top\end{aligned}                      (13)

 由式子 P(e_{k})\sim N(0,P)  和式子(2)P(v)\sim N\left(0,R\right) 可得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                        \\P_k=E\left(e_{k}^{-}e_{k}^{-\top}\right)\text{}\\R = E\left(v_{k}v_{k}^{\top}\right)                                                     (14)

P_k 是先验误差的协方差矩阵,将式(14)带入式(12)可得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \\P_k = \left(I-K_kH\right)P_k^\top\left(I-K_kH\right)^\top+K_k RK_k^\top\\\\ =\left(P_{k}^{-}-K_{k}H P_{k}^{-}\right)\left(IH^{\top}K_{k}^{\top}\right)+K_{k}R K_{k}^{\top}\\\\=P_k^\top-K_k H P_k^\top-P_k^\top H^\top K_k^\top+K_k H P_k^\top H^\top K_k^\top+K_k R K_k^\top          (15)

因为 K_k H P_k^- 和 P_{k}^{-}H^{\top}K_{k}^{\top}互为转置,而协方差矩阵的转置等于它本身。

因为互为转置的协方差矩阵,它们的迹是相同的。

 所以对上式(15)两侧分别取迹,则得到 式(16):

\\\begin{array}{l}\text{tr}(P_k)=\text{tr}\left(P_k^-\right)-\text{tr}\left(K_k H P_k^-\right)-\text{tr}\left(P_k^-H^\top K_k^\top\right)+\text{tr}\left(K_k H P_k^-H^\top K_k^\top\right)+\text{tr}\left(K_k R K_k^\top\right)\end{array}\\\\ =\text{tr}\big(P_k^-\big)-2\text{tr}\big(K_k H P_k^-\big)+\text{tr}\big(K_k H P_k^-H^\top K_k^\top\big)+\text{tr}\big(K_k R K_k^\top\big)

因为我们的目的是寻找合适的 K_{k} 使 e_{k} 尽可能小,因为 P(e_{k})\sim N(0,P) 符合正态分布,所以想让 e_{k} 越小,只要让其期望接近0,即  e_{k} 的方差尽可能的小。则只要协方差矩阵的迹 tr(P_k) 取极小值。要求的极小值,则需求

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    \dfrac{\mathrm{dtr}\left(P_k\right)}{\mathrm{d}K_k}=0                                                      (17)

所以对式(16)求导得:

\\\dfrac{\operatorname{d}\operatorname{tr}(P_k)}{\operatorname{d}K_k}=0=\dfrac{\operatorname{d}\operatorname{tr}\left(P_k^-\right)}{\operatorname{d}K_k}-2\dfrac{\operatorname{d}\operatorname{tr}\left(K_kH P_k^-\right)}{\operatorname{d}K_k}+\dfrac{\operatorname{d}\operatorname{tr}\left(K_k H P_k^-H^\top K_k^\top\right)}{\operatorname{d}K_k}+\dfrac{\operatorname{d}\operatorname{tr}\left(K_kRK_k^\top\right)}{\operatorname{d}K_k}  (18)

由于 \frac{\mathrm{d}\operatorname{tr}(AB)}{\mathrm{d}A}=B^\top ,\frac{\mathrm{d}\mathrm{tr}(A B A^{\top})}{\mathrm{d}A}=2A B 证明如下:

                ​​​​​​​\frac{\operatorname{d}\operatorname{tr}\left(\begin{bmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{bmatrix}\begin{bmatrix}b_{11}&b_{12}\\ b_{21}&b_{22}\end{bmatrix}\right)}{\operatorname{d}\begin{bmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{bmatrix}}=\frac{\operatorname{d}(a_{11}b_{11}+a_{12}b_{21}+a_{21}b_{12}+a_{11}b_{22})}{\operatorname{d}\begin{bmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{bmatrix}}

                 \frac{\mathrm{d}\operatorname{tr}(AB)}{\mathrm{d}A}=\begin{bmatrix}\frac{\operatorname{d}\operatorname{tr}(AB)}{\mathrm{d}a_{11}}&\frac{\operatorname{d}\operatorname{tr}(AB)}{\mathrm{d}a_{12}}\\ \frac{\operatorname{d}\operatorname{tr}(AB)}{\mathrm{d}a_{21}}&\frac{\operatorname{d}\operatorname{tr}(AB)}{\mathrm{d}a_{22}}\end{bmatrix}=\begin{bmatrix}b_{11}&b_{21}\\ b_{12}&b_{22}\end{bmatrix}=B^{\top}

以及

\frac{\mathrm{d}\mathrm{tr}\left(\begin{bmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{bmatrix}\begin{bmatrix}b_{11}&b_{12}\\ b_{21}&b_{22}\end{bmatrix}\begin{bmatrix}a_{11}&a_{21}\\ a_{12}&a_{22}\end{bmatrix}\right)}{\mathrm{d}\begin{bmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{bmatrix}}\\\\\\=\frac{\mathrm{d}\left(a_{11}^{2}b_{11}+a_{11}a_{12}b_{21}+a_{11}a_{12}b_{12}+a_{12}^{2}b_{22}+a_{21}^{2}b_{11}+a_{21}a_{22}b_{21}+a_{21}a_{22}b_{12}+a_{22}^{2}b_{22}\right)}{\mathrm{d}\left[\begin{smallmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{smallmatrix}\right]}\\\\\\=\frac{\operatorname{d}\operatorname{tr}(ABA^\top)}{\operatorname{d}A}\\\\\\=\begin{bmatrix}\frac{\operatorname{d}\operatorname{tr}(ABA^\top)}{\operatorname{d}a_{11}}&\quad\frac{\operatorname{d}\operatorname{tr}(ABA^\top)}{\operatorname{d}a_{12}}\\[6pt]\frac{\operatorname{d}\operatorname{tr}(ABA^\top)}{\operatorname{d}a_{21}}&\quad\frac{\operatorname{d}\operatorname{tr}(ABA^\top)}{\operatorname{d}a_{22}}\end{bmatrix}

=\begin{bmatrix}2a_{11}b_{11}+a_{12}b_{21}+a_{12}b_{11}&a_{11}b_{21}+a_{11}b_{12}+2a_{12}b_{22}\\ 2a_{21}b_{11}+a_{22}b_{21}+a_{22}b_{12}&a_{21}b_{21}+a_{21}b_{12}+2a_{22}b_{22}\end{bmatrix}

\\=\begin{bmatrix}a_{11}b_{11}+a_{12}b_{21}&a_{11}b_{12}+a_{12}b_{22}\\ a_{21}b_{11}+a_{22}b_{21}&a_{21}b_{12}+a_{22}b_{22}\end{bmatrix}+\begin{bmatrix}a_{11}b_{11}+a_{11}b_{11}&a_{11}b_{21}+a_{12}b_{22}\\ a_{21}b_{11}+a_{22}b_{12}&a_{21}b_{21}+a_{22}b_{22}\end{bmatrix} \\\\\\=AB+AB^\top

因为这里 R 是协方差矩阵,所以 R=R^\top, 故而再此案例中,\frac{\mathrm{d}\mathrm{tr}(A B A^{\top})}{\mathrm{d}A}=2A B

于是式(18)可以变为:

        ​​​​​​​        \\0=0-2\frac{\mathrm{d}\mathrm{tr}\left(K_k H P_k^-\right)}{\mathrm{d}K_k}+\frac{\mathrm{d}\mathrm{tr}\left(K_k H P_k^\top H^\top K_k^\top\right)}{\mathrm{d}K_k}+\frac{\mathrm{d}\mathrm{tr}\left(K_k R K_k^\top\right)}{\mathrm{d}K_k}\\\\\\=0-2\left(HP_k^-\right)^\top+K_kHP_k^-H^\top+K_k\left(HP_k^-H^\top\right)^\top+K_kR+K_kR^\top             (19) 

由于 P_k^{-} 和 R 都是协方差矩阵,是对称矩阵,所以有:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        -2\left(HP_k^-\right)^\top+2K_kHP_k^-H^\top+2K_kR=0                                (20)

所以最终变换式子求得卡尔曼增益 K_k 为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           ​​​​​​​K_k=\dfrac{\left(H P_k^-\right)^\top}{H P_k^-H^\top+R}=\dfrac{P_k^-H^\top}{H P_k^-H^\top+R}                            (21)

通过推导,我们得出了卡尔曼滤波中三个重要方程,先验估计方程,卡尔曼增益方程,后验估计方程:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \\\hat{x}_k^{-}=A\hat{x}_{k+1}+Bu_{k+1}\\\\K_k=\dfrac{P_k^-H^\top}{H P_k^-H^\top+R}\\\\\hat{x}_k=\hat{x}_k^{-}+K_k\bigl(z_k-H\hat{x}_k^{-}\bigr)

2.  P_k^{-}  推导

根据上面的结果,我们发现三大方程中,先验值 P_k^{-} 的我们并不知道,于是乎这一小节将求 P_k^{-}

 由于 P_{k}^{-} 满足 P_{k}^{-}=E\left[e_{k}^{-}e_{k}^{-\top}\right] ,所以带入式(1)和式(8)可得:

        ​​​​​​​        ​​​​​​​                                \begin{array}{l}x_k=Ax_{k+1}+Bu_{k+1}+w_{k-1}\end{array}                                    (1)

        ​​​​​​​        ​​​​​​​                        P_k=E[e_ke_k^\top]=E[\left(x_k-\hat{x}_k\right)\left(x_k-\hat{x}_k\right)^\top]                        (8)

        ​​​​​​​        ​​​​​​​        \\P_{k}^{-}=E\left[e_{k}^{-}e_{k}^{-\top}\right]=P_{k}^{-}=E\left[\left(Ae_{k-1}+w_{k-1}\right)\left(Ae_{k-1}+w_{k-1}\right)^{\top}\right]\\\\=E\left[\left(A e_{k-1}+w_{k-1}\right)\left(e_{k-1}^{\top}A^{\top}+w_{k-1}^{\top}\right)\right]\\\\=E\left[A e_{k-1}e_{k-1}^{\top}A^{\top}+w_{k-1}e_{k-1}^{\top}A^{\top}+A e_{k-1}w_{k-1}^{\top}+w_{k-1}w_{k-1}^{\top}\right]            (22)

因为 w_{k-1} 和 e_{k-1} 相互独立,且 E[w_{k-1}]=E[e_{k-1}]=0 所以带入得到:

                                         E[A e_{k-1}e_{k-1}^{\top}A^{\top}]=E[w_{k-1}e_{k-1}^{\top}A^{\top}]=0

则式(22)可化简为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  P_{k}^{-}=AE\left[e_{k-1}e_{k-1}^{\top}\right]A^{\top}+E\left[w_{k-1}w_{k-1}^{\top}\right]                               (23)

因为 P_{k-1}=E\left[e_{k-1}e_{k-1}^{\top}\right] 且 Q=\left[w_{k-1}w_{k-1}^{\top}\right] 所以上式可以变化成:P^{-}_k = AP_{k-1}A^\top+Q

由式(15)可以得到 :

        ​​​​​​​        ​​​​​​​        ​​​​​​​     P_k=P_k^--K_kHP_k^--P_k^-H^\top K_k^\top+K_kHP_k^-H^\top K_k^\top+K_kRK_k^\top

带入卡尔曼增益方程可得:

        ​​​​​​​        ​​​​​​​        P_k=P_{k}^{-}-K_{k}H P_{k}^{-}-P_{k}^{-}H^{\top}K_{k}^{\top}+\frac{P_{k}^{-}H^{\top}}{H P_{k}^{-}H^{\top}+R}\left(H P_{k}^{-}H^{\top}+R\right)K_{k}^{\top}

化简得到:

P_k=P_{k}^{-}-K_{k}H P_{k}^{-}=\left(I-K_{k}H\right)P_{k}^{-}

 至此卡尔曼滤波五大方程推导完毕,其表达式为:

预测:

先验估计:\hat{x}_{k}^{-}=A\hat{x}_{k+1}+B u_{k+1}

先验协方差:P_{k}^{-}=A P_{k-1}A^{\top}+Q

矫正(卡尔曼增益):K_k=\dfrac{P_k^-H^\top}{H P_k^-H^\top+R}

后验估计:\hat{x}_{k}=\hat{x}_{k}^{-}+K_{k}\left(z_{k}-H\hat{x}_{k}^{-}\right)

更新后验协方差:P_{k}=\left(I-K_{k}H\right)P_{k}^{-}

注意:

矩阵 A 和 B 是状态转移矩阵和控制输入矩阵,它们描述了系统状态随时间的变化规律和外部控制输入对系统的影响。在实际问题中,这些矩阵通常需要通过对系统进行建模来确定,可以通过物理模型、经验公式、数据拟合等方法来获得。

矩阵 Q 是过程噪声的协方差矩阵,描述了系统在运动过程中由于各种因素引起的噪声影响。通常情况下,它也需要通过对系统进行建模来确定,可以通过测量数据、统计分析等方法来获得。

矩阵 H 是观测矩阵,它描述了系统状态与观测量之间的关系。在实际问题中,这个矩阵通常也需要根据具体问题来确定,可以通过物理模型、测量数据、经验公式等方法来获得。         


这是南叔先生写的卡尔曼滤波实际运用例子。

https://blog.csdn.net/seek97/article/details/120012667


总结

以上是卡尔曼滤波的五大方程的基本推导与示例应用。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
卡尔曼滤波(Kalman Filter)是一种用于状态估计的递归滤波器,常用于估计动态系统状态的线性高斯模型。它基于当前测量值和先验(预测)估计值,通过加权融合这两个信息来得到最优的状态估计。 卡尔曼滤波的基本思想是利用系统的动态模型来进行状态的预测,然后通过观测值来进行修正。它将预测和修正两个步骤交替进行,从而实现对状态的逐步更新。卡尔曼滤波的核心数学模型是由卡尔曼滤波方程组组成,包括预测方程和修正方程。 扩展卡尔曼滤波(Extended Kalman Filter)则是卡尔曼滤波在非线性系统中的扩展。在非线性系统中,无法直接应用线性卡尔曼滤波,因为非线性函数通常不能满足高斯分布的假设。扩展卡尔曼滤波通过使用线性化技术,将非线性系统近似为线性系统,并在每个时间步骤上应用卡尔曼滤波。 扩展卡尔曼滤波的主要步骤包括状态预测、测量预测、状态更新和协方差更新。在状态预测和测量预测阶段,通过非线性函数的线性化来计算预测的状态和协方差;在状态更新和协方差更新阶段,通过融合测量数据和预测数据,得到修正后的状态和协方差。 总结起来,卡尔曼滤波和扩展卡尔曼滤波都是用于状态估计的滤波器,卡尔曼滤波适用于线性高斯系统,而扩展卡尔曼滤波适用于非线性系统。它们在估计系统状态方面具有广泛的应用,例如机器人定位、导航系统、目标跟踪等领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值