This blog is translated from https://www.kalmanfilter.net/default.aspx.
It’s an excellent tutorial about Kalman Filter written by Alex Becker.
目录
卡尔曼滤波器(1) – 背景知识
卡尔曼滤波器(2) – α−β−γ滤波器(例1)
卡尔曼滤波器(3) – α−β−γ滤波器(例2)
卡尔曼滤波器(4) – α−β−γ滤波器(例3&例4&总结)
卡尔曼滤波器(5) – 一维卡尔曼滤波器(介绍)
卡尔曼滤波器(6) – 一维卡尔曼滤波器(例5&完整模型)
卡尔曼滤波器(7) – 一维卡尔曼滤波器(例6)
卡尔曼滤波器(8) – 一维卡尔曼滤波器(例7&例8)
卡尔曼滤波器(9) – 多维卡尔曼滤波器(前言&预备)
卡尔曼滤波器(10) – 多维卡尔曼滤波器(状态外推方程)
卡尔曼滤波器(11) – 多维卡尔曼滤波器(线性动态系统模型)
卡尔曼滤波器(12) – 多维卡尔曼滤波器(协方差外推方程)
卡尔曼滤波器(13) – 多维卡尔曼滤波器(测量方程)
卡尔曼滤波器(14) – 多维卡尔曼滤波器(简短总结)
卡尔曼滤波器(15) – 多维卡尔曼滤波器(状态更新方程)
卡尔曼滤波器(16) – 多维卡尔曼滤波器(协方差更新方程)
卡尔曼滤波器(17) – 多维卡尔曼滤波器(卡尔曼增益)
卡尔曼滤波器(18) – 多维卡尔曼滤波器(简化的协方差更新方程)
卡尔曼滤波器(19) – 多维卡尔曼滤波器(总结)
卡尔曼滤波器(20) – 多维卡尔曼滤波器(例9)
我们得出了所有 5 个矩阵形式的卡尔曼滤波器方程,让我们将所有内容放到一个页面中。卡尔曼滤波器以“预测-循环”方式运行。 如下图所示。
初始化后,卡尔曼滤波器将在下一个时间点预测系统状态。同样,卡尔曼滤波器提供了预测的不确定性。
一旦接收到测量值,卡尔曼滤波器就会更新(或修正预测)当前状态的不确定性。同样,卡尔曼滤波器预测下一个状态,等等。
下面是卡尔曼滤波器操作的完整示意图:
下面的表格是卡尔曼滤波器方程:
预测:
方程 | 方程名 | 又名 |
---|---|---|
x ^ n + 1 , n = F x ^ n , n + G u n \pmb{\hat{x}_{n+1,n}} = \pmb{F}\pmb{\hat{x}_{n,n}} + \pmb{Gu_n} x^n+1,nx^n+1,nx^n+1,n=FFFx^n,nx^n,nx^n,n+GunGunGun | 状态外推 (State Extrapolation) | 预测者方程 (Predictor Equation) 过渡方程 (Transition Equation) 预测方程 (Prediction Equation) 动态模型 (Dynamic Model) 动态空间模型 (State Space Model) |
P n + 1 , n = F P n , n F T + Q \pmb{P_{n+1,n}} = \pmb{F} \pmb{P_{n,n}} \pmb{F}^T + \pmb{Q} Pn+1,nPn+1,nPn+1,n=FFFPn,nPn,nPn,nFFFT+QQQ | 协方差外推 (Covariance Extrapolation) | 预测者协方差方程 (Predictor Covariance Equation) |
更新(矫正):
方程 | 方程名 | 又名 |
---|---|---|
x ^ n , n = x ^ n , n − 1 + K n ( z n − H x ^ n , n − 1 ) \pmb{\hat{x}_{n,n}} = \pmb{\hat{x}_{n,n-1}} +\pmb{K_n}(\pmb{z_n} - \pmb{H} \pmb{\hat{x}_{n,n-1}}) x^n,nx^n,nx^n,n=x^n,n−1x^n,n−1x^n,n−1+KnKnKn(znznzn−HHHx^n,n−1x^n,n−1x^n,n−1) | 状态更新 (State Update) | 滤波方程 (Filtering Equation) |
P n , n = ( I − K n H ) P n , n − 1 ( I − K n H ) T + K n R n K n T \pmb{P_{n,n}} = (\pmb{I}-\pmb{K_nH}) \pmb{P_{n,n-1}} (\pmb{I}-\pmb{K_nH})^T + \pmb{K_n} \pmb{R_n} \pmb{K_n}^T Pn,nPn,nPn,n=(III−KnHKnHKnH)Pn,n−1Pn,n−1Pn,n−1(III−KnHKnHKnH)T+KnKnKnRnRnRnKnKnKnT | 协方差更新 (Covariance Update) | 矫正方程 (Corrector Equation) |
K n = P n , n − 1 H T ( H P n , n − 1 H T + R n ) − 1 \pmb{K_n} = \pmb{P_{n,n-1}} \pmb{H}^T (\pmb{HP_{n,n-1}H}^T + \pmb{R_n})^{-1} KnKnKn=Pn,n−1Pn,n−1Pn,n−1HHHT(HPn,n−1HHPn,n−1HHPn,n−1HT+RnRnRn)−1 | 卡尔曼增益 (Kalman Gain) | 权重方程 (Weight Equation) |
辅助的:
方程 | 方程名 | 又名 |
---|---|---|
z n = H x n \pmb{z_n} = \pmb{H}\pmb{x_n} znznzn=HHHxnxnxn | 测量方程 (Measurement Equation) | |
R n = E ( v n v n T ) \pmb{R_n} = E(\pmb{v_n v_n}^T) RnRnRn=E(vnvnvnvnvnvnT) | 测量不确定性 (Measurement Uncertainty) | 测量误差 (Measurement Error) |
Q n = E ( w n w n T ) \pmb{Q_n} = E(\pmb{w_n w_n}^T) QnQnQn=E(wnwnwnwnwnwnT) | 过程噪声不确定性 (Process Noise Uncertainty) | 过程噪声误差 (Process Noise Error) |
P n , n = E ( e n e n T ) = E ( ( x n − x ^ n , n ) ( x n − x ^ n , n ) T ) \pmb{P_{n,n}} = E(\pmb{e_n e_n}^T)=E\left( (\pmb{x_n} - \pmb{\hat{x}_{n,n}}) (\pmb{x_n} - \pmb{\hat{x}_{n,n}})^T \right) Pn,nPn,nPn,n=E(enenenenenenT)=E((xnxnxn−x^n,nx^n,nx^n,n)(xnxnxn−x^n,nx^n,nx^n,n)T) | 估计不确定性 (Estimation Uncertainty) | 估计不确定性误差 (Estimation Error) |
下面是符号的总结:
Term | Name | Alternative term | Dimensions |
---|---|---|---|
x \pmb{x} xxx | 状态向量(State Vector) | n x × 1 n_x \times 1 nx×1 | |
z \pmb{z} zzz | 输出向量(Output Vector) | y \pmb{y} yyy | n z × 1 n_z \times 1 nz×1 |
F \pmb{F} FFF | 状态过渡矩阵(State Transition Matrix) | Φ , A \pmb{\Phi,A} Φ,AΦ,AΦ,A | n x × n x n_x \times n_x nx×nx |
u \pmb{u} uuu | 输入变量(Input Variable) | y \pmb{y} yyy | n u × 1 n_u \times 1 nu×1 |
G \pmb{G} GGG | 控制矩阵(Control Matrix) | B \pmb{B} BBB | n x × n u n_x \times n_u nx×nu |
P \pmb{P} PPP | 估计不确定性(Estimate Uncertainty) | ∑ \pmb{\sum} ∑∑∑ | n x × n x n_x \times n_x nx×nx |
Q \pmb{Q} QQQ | 过程噪声不确定性(Estimate Uncertainty) | n x × n x n_x \times n_x nx×nx | |
R \pmb{R} RRR | 测量不确定性(Measurement Uncertainty) | n z × n z n_z \times n_z nz×nz | |
w \pmb{w} www | 过程噪声向量(Process Noise Vector) | y \pmb{y} yyy | n x × 1 n_x \times 1 nx×1 |
v \pmb{v} vvv | 测量噪声向量(Measurement Noise Vector) | n z × 1 n_z \times 1 nz×1 | |
H \pmb{H} HHH | 观察矩阵(Observation Matrix) | C \pmb{C} CCC | n z × n x n_z \times n_x nz×nx |
K \pmb{K} KKK | 卡尔曼增益(Kalman Gain) | n x × n z n_x \times n_z nx×nz | |
n \pmb{n} nnn | 离散时间序号(Discrete Time Index) |