卡尔曼滤波(Kalman filtering)基础
前言
参考书籍:
《视觉SLAM十四讲》
《机器人学中的状态估计》
知乎:如何通俗并尽可能详细地解释卡尔曼滤波?云羽落的回答
还需要一些高数、线性代数和概率论的基础。
本文主要是一些学习笔记与个人的总结,主要引用自上述的参考书籍中。
一、SLAM问题的数学表述
早期的SLAM问题是一个状态估计问题,被人们称为“空间状态不确定性估计”,正是如今的后端优化问题。这也反映了SLAM问题的本质:对运动主体自身和周围空间不确定的估计。为了解决这个问题,需要用到 状态估计 理论。而状态估计理论的经典代表就是以卡尔曼滤波为核心的 卡尔曼系列滤波器。
状态估计:通过初始状态、各时刻的观测数据、输入数据,估计系统的真实状态。
系统模型
运动主体携带各种传感器在未知环境中运动,主要由以下两个事情描述:
(假设为:考虑离散时间的线性时变系统)
- 运动方程: x k = A k − 1 x k − 1 + v k + w k , k = 1 , ⋯ , K x_k = A_{k-1} x_{k-1} + v_k + w_k ,k=1, \cdots ,K xk=Ak−1xk−1+vk+wk,k=1,⋯,K
- 观测方程: y k = C k x k + n k , k = 0 , ⋯ , K y_k = C_k x_k + n_k ,k=0, \cdots ,K yk=Ckxk+nk,k=0,⋯,K
除了 v k v_k vk以外,其他变量均为随机变量;各个时刻的噪声互不相关; A A A称为转移矩阵; C C C称为观测矩阵。
其中各个变量含义:
- 系统状态: x k ∈ R N x_k \in \mathbb{R}^N xk∈RN ; 输入: v k ∈ R N v_k \in \mathbb{R}^N vk∈RN
- 初始状态: x 0 ∈ R N ∼ N ( x 0 ˇ , P 0 ˇ ) x_0 \in \mathbb{R}^N \sim \mathcal{N}(\check{x_0},\check{P_0}) x0∈RN∼N(x0ˇ,P0ˇ)
- 过程噪声: w k ∈ R N ∼ N ( 0 , Q k ) w_k \in \mathbb{R}^N \sim \mathcal{N}(0,Q_k) wk∈RN∼N(0,Qk)
- 测量: y k ∈ R M y_k \in \mathbb{R}^M yk∈RM ; 测量噪声: n k ∈ R M ∼ N ( 0 , R k ) n_k \in \mathbb{R^M} \sim \mathcal{N}(0,R_k) nk∈RM∼N(0,Rk)
除系统模型之外,我们还知道:
带下帽子的变量称为先验,上帽子的称为后验。
- 初始状态 x 0 ˇ \check{x_0} x0ˇ,以及它的初始协方差矩阵 P 0 ˇ \check{P_0} P0ˇ。有时候不知道初始信息,必须在没初始信息的情况下进行推导.
- 输入量 v k v_k vk,通常来自控制器,是已知的;它的噪声协方差矩阵是 Q k Q_k Qk.
- 观测数据 y k , m e a s y_{k,meas} yk,meas是观测变量 y k y_k yk的一次实现(realization),它的协方差矩阵是 R k R_k Rk.
二、离散时间线性高斯系统批量式状态估计
1.最大后验估计(Maximum A Posteriori, MAP)
MAP:已知输入和观测,求最大概率的状态
x
^
=
arg max
x
p
(
x
∣
v
,
y
)
\hat x = \underset{x}{\argmax}p(x|v,y)
x^=xargmaxp(x∣v,y)
用贝叶斯公式重写目标函数:
x
^
=
arg max
x
p
(
x
∣
v
,
y
)
=
arg max
x
p
(
y
∣
x
,
v
)
p
(
x
∣
v
)
p
(
y
∣
v
)
=
arg max
x
p
(
y
∣
x
)
p
(
x
∣
v
)
\hat x = \underset{x}{\argmax}p(x|v,y) = \underset{x}{\argmax} \frac{p(y|x,v)p(x|v)}{p(y|v)} =\underset{x}{\argmax} p(y|x)p(x|v)
x^=xargmaxp(x∣v,y)=xargmaxp(y∣v)p(y∣x,v)p(x∣v)=xargmaxp(y∣x)p(x∣v)
在这里,需要把不带下标的变量定义为宏观变量:
x
=
x
0
:
K
=
(
x
0
,
⋯
,
x
K
)
v
=
(
x
0
ˇ
,
v
1
:
K
)
=
(
x
ˇ
,
v
1
,
⋯
,
v
K
)
y
=
y
0
:
K
=
(
y
0
,
⋯
,
y
K
)
x=x_{0:K}=(x_0,\cdots,x_K) \\ v=(\check{x_0} ,v_{1:K})=(\check{x},v_1,\cdots,v_K)\\y=y_{0:K}=(y_0,\cdots,y_K)
x=x0:K=(x0,⋯,xK)v=(x0ˇ,v1:K)=(xˇ,v1,⋯,vK)y=y0:K=(y0,⋯,yK)
由于各时刻观测、输入的噪声都是无关的,上面两个项可以因式分解:
p
(
y
∣
x
)
=
∏
k
=
0
K
p
(
y
k
∣
x
k
)
p
(
x
∣
v
)
=
p
(
x
0
∣
x
0
ˇ
)
∏
k
=
1
K
p
(
x
k
∣
x
k
−
1
,
v
k
)
p(y|x)=\prod_{k=0}^{K}p(y_k|x_k)\\p(x|v)=p(x_0|\check{x_0})\prod_{k=1}^{K}p(x_k|x_{k-1},v_k)
p(y∣x)=k=0∏Kp(yk∣xk)p(x∣v)=p(x0∣x0ˇ)k=1∏Kp(xk∣xk−1,vk)
同时,对目标函数两边取对数,对数是个单调映射,不影响最优解:
ln
(
p
(
y
∣
x
)
p
(
x
∣
v
)
)
=
ln
p
(
x
0
∣
x
0
ˇ
)
+
∑
k
=
1
K
ln
p
(
x
k
∣
x
k
−
1
,
v
k
)
+
∑
k
=
0
K
ln
p
(
y
k
∣
x
k
)
\ln \left( p(y|x)p(x|v) \right) = \ln p(x_0|\check{x_0}) + \sum_{k=1}^{K}\ln p(x_k|x_{k-1},v_k) + \sum_{k=0}^{K}\ln p(y_k|x_k)
ln(p(y∣x)p(x∣v))=lnp(x0∣x0ˇ)+k=1∑Klnp(xk∣xk−1,vk)+k=0∑Klnp(yk∣xk)
这时因子相乘变成了对数项相加。
高斯分布取对数之后有较好的形式:
ln
p
(
x
0
∣
x
0
ˇ
)
=
−
1
2
(
x
0
−
x
0
ˇ
)
T
P
ˇ
0
−
1
(
x
−
x
0
ˇ
)
−
1
2
ln
(
(
2
π
)
N
det
P
ˇ
0
)
\ln p(x_0|\check{x_0}) = -\frac{1}{2}(x_0-\check{x_0})^T \check{P}_0^{-1}(x-\check{x_0}) \\ -\frac{1}{2}\ln \left( (2\pi)^N \det \check{P}_0\right)
lnp(x0∣x0ˇ)=−21(x0−x0ˇ)TPˇ0−1(x−x0ˇ)−21ln((2π)NdetPˇ0)
ln
p
(
x
k
∣
x
k
−
1
,
v
k
)
=
−
1
2
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
T
Q
k
−
1
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
−
1
2
ln
(
(
2
π
)
N
det
Q
k
)
\ln p(x_k|x_{k-1},v_k) =-\frac{1}{2}( x_k - A_{k-1}x_{k-1} - v_k)^T Q_k^{-1} (x_k - A_{k-1}x_{k-1} - v_k) \\ -\frac{1}{2}\ln \left( (2\pi)^N \det Q_k\right)
lnp(xk∣xk−1,vk)=−21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk)−21ln((2π)NdetQk)
ln
p
(
y
k
∣
x
k
)
=
−
1
2
(
y
k
−
C
k
x
k
)
T
R
k
−
1
(
y
k
−
C
k
x
k
)
−
1
2
ln
(
(
2
π
)
N
det
R
k
)
\ln p(y_k|x_k) = -\frac{1}{2}( y_k - C_k x_k )^T R_k^{-1} (y_k - C_k x_k) \\ -\frac{1}{2}\ln \left( (2\pi)^N \det R_k\right)
lnp(yk∣xk)=−21(yk−Ckxk)TRk−1(yk−Ckxk)−21ln((2π)NdetRk)
舍掉那些与
x
x
x无关的项,定义:
J
v
,
k
(
x
)
=
{
1
2
(
x
0
−
x
0
ˇ
)
T
P
ˇ
0
−
1
(
x
−
x
0
ˇ
)
,
k
=
0
1
2
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
T
Q
k
−
1
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
,
k
=
1
,
⋯
,
K
J_{v,k}(x) = \left\{\begin{matrix} &\frac{1}{2}(x_0-\check{x_0})^T \check{P}_0^{-1}(x-\check{x_0}),&k=0\\ &\frac{1}{2}( x_k - A_{k-1}x_{k-1} - v_k)^T Q_k^{-1} (x_k - A_{k-1}x_{k-1} - v_k),& k=1,\cdots,K \end{matrix}\right.
Jv,k(x)={21(x0−x0ˇ)TPˇ0−1(x−x0ˇ),21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk),k=0k=1,⋯,K
J
y
,
k
(
x
)
=
1
2
(
y
k
−
C
k
x
k
)
T
R
k
−
1
(
y
k
−
C
k
x
k
)
,
k
=
0
,
…
,
K
\begin{matrix} J_{y,k}(x)=\frac{1}{2}( y_k - C_k x_k )^T R_k^{-1} (y_k - C_k x_k),& k=0,\dots,K \end{matrix}
Jy,k(x)=21(yk−Ckxk)TRk−1(yk−Ckxk),k=0,…,K
于是目标函数变为求这个式的最小化:
{
x
^
=
arg min
x
J
(
x
)
J
(
x
)
=
∑
k
=
0
K
(
J
v
,
k
(
x
)
+
J
y
,
k
(
x
)
)
\left\{\begin{matrix} \hat{x}=\underset{x}{\argmin}J(x) \\ J(x)=\sum_{k=0}^{K}\left( J_{v,k}(x) + J_{y,k}(x)\right) \end{matrix}\right.
{x^=xargminJ(x)J(x)=∑k=0K(Jv,k(x)+Jy,k(x))
这个问题就是常见的无约束最小二乘。
写成更紧凑的矩阵形式(提升形式):
z
=
[
x
0
ˇ
v
1
⋮
v
K
y
0
y
1
⋮
y
K
]
,
x
=
[
x
0
⋮
x
K
]
,
H
=
[
1
−
A
0
1
⋱
⋱
−
A
K
−
1
1
C
0
C
1
⋱
C
K
]
z=\begin{bmatrix} \check{x_0}\\ v_1\\ \vdots\\ v_K\\ y_0\\ y_1\\ \vdots\\ y_K \end{bmatrix}, x=\begin{bmatrix} x_0\\ \vdots\\ x_K \end{bmatrix}, H=\begin{bmatrix} 1\\ -A_0 & 1\\ &\ddots &\ddots\\ &&-A_{K-1} &1\\ C_0\\ &C_1\\ &&\ddots\\ &&&C_K \end{bmatrix}
z=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x0ˇv1⋮vKy0y1⋮yK⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,x=⎣⎢⎡x0⋮xK⎦⎥⎤,H=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡1−A0C01⋱C1⋱−AK−1⋱1CK⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
W
=
[
P
0
ˇ
Q
1
⋱
Q
K
R
0
R
1
⋱
R
K
]
W= \begin{bmatrix} \check{P_0}\\ &Q_1\\ &&\ddots\\ &&&Q_K\\ &&&&R_0\\ &&&&&R_1\\ &&&&&&\ddots\\ &&&&&&&R_K \end{bmatrix}
W=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡P0ˇQ1⋱QKR0R1⋱RK⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤把运动和观测写在一起:
z
=
H
x
+
W
z=Hx+W
z=Hx+W
提升形式的目标函数:
J
(
x
)
=
1
2
(
z
−
H
x
)
T
W
−
1
(
z
−
H
x
)
J(x)=\frac{1}{2}(z-Hx)^TW^{-1}(z-Hx)
J(x)=21(z−Hx)TW−1(z−Hx)它是个二次的,求其最小值,只要令自变量导数为零:
∂
J
(
x
)
∂
x
T
∣
x
^
=
−
H
T
W
−
1
(
z
−
H
x
^
)
=
0
⇒
(
H
T
W
−
1
H
)
x
^
=
H
T
W
−
1
z
\frac{\partial J(x)}{\partial x^T} \mid_{\hat x} = -H^TW^{-1}(z-H\hat x)=0 \\ \Rightarrow(H^TW^{-1}H)\hat x = H^TW^{-1}z
∂xT∂J(x)∣x^=−HTW−1(z−Hx^)=0⇒(HTW−1H)x^=HTW−1z
于是就解析地得到了最优解
- 这个解等价于经典的批量最小二乘法,也等价于固定区间平滑算法,或者也等价于伪逆
- 由于 H H H具有特殊的稀疏结构,这个问题也有特殊的解法,不需要暴力算矩阵求逆
2.贝叶斯推断(Bayesian Inference)
在线性高斯系统中,可以根据运动方程和观测方程显式写出状态变量分布的变化过程:
运动方程:
- k时刻状态更新: x k = A k − 1 x k − 1 + v k + w k x_k= A _{k-1}x_{k-1}+v_k+w_k xk=Ak−1xk−1+vk+wk
- 提升形式:
x
=
A
(
v
+
w
)
x=A(v+w)
x=A(v+w)
其中 A = [ 1 A 0 1 A 1 A 0 A 1 1 ⋮ ⋮ ⋮ ⋱ A k − 2 ⋯ A 0 A k − 2 ⋯ A 1 A k − 2 … A 2 … 1 A k − 1 ⋯ A 0 A k − 2 ⋯ A 0 A k − 2 ⋯ A 1 A k − 2 … A 2 … 1 ] A=\begin{bmatrix} 1& & \\ A_0& 1 &\\ A_1A_0 &A_1 &1\\ \vdots& \vdots& \vdots& \ddots & \\ A_{k-2}\cdots A_0 &A_{k-2}\cdots A_1 & A_{k-2}\dots A_2 & \dots &1&\\ A_{k-1}\cdots A_0 &A_{k-2}\cdots A_0 &A_{k-2}\cdots A_1 & A_{k-2}\dots A_2 & \dots &1\\ \end{bmatrix} A=⎣⎢⎢⎢⎢⎢⎢⎢⎡1A0A1A0⋮Ak−2⋯A0Ak−1⋯A01A1⋮Ak−2⋯A1Ak−2⋯A01⋮Ak−2…A2Ak−2⋯A1⋱…Ak−2…A21…1⎦⎥⎥⎥⎥⎥⎥⎥⎤
在上式中,右侧只有 v , w v,w v,w,故容易求得均值和协方差( v v v为确定的输入量, w w w是高斯,所以此处也是高斯分布的线性变换):
- 均值: x ˇ = E [ x ] = E [ A ( v + w ) ] = A v \check{x} =\text{E}[x]=\text{E}[A(v+w)]=Av xˇ=E[x]=E[A(v+w)]=Av
- 协方差: P ˇ = E [ ( x − E [ x ] ) ( x − E [ x ] ) T ] = E [ ( x − A v ) ( x − A v ) T ] = A Q A T \check{P} =\text{E}[(x-\text{E}[x])(x-\text{E}[x])^T]=\text{E}[(x-Av)(x-Av)^T]=AQA^T Pˇ=E[(x−E[x])(x−E[x])T]=E[(x−Av)(x−Av)T]=AQAT
所以,先验部分写作:
p
(
x
∣
v
)
=
N
(
x
ˇ
,
P
ˇ
)
=
N
(
A
v
,
A
Q
A
T
)
p(x|v)=\mathcal{N}(\check{x},\check{P})=\mathcal{N}(Av,AQA^T)
p(x∣v)=N(xˇ,Pˇ)=N(Av,AQAT)
此处先验的意思为:仅考虑运动方程时的条件概率分布
观测模型:
- 单次观测: y k = C k x k + n k y_k = C_kx_k+n_k yk=Ckxk+nk
- 提升形式:
y
=
C
x
+
n
y=Cx+n
y=Cx+n
其中 C = d i a g ( C 0 , C 1 , … , C k ) C=diag(C_0,C_1,\dots,C_k) C=diag(C0,C1,…,Ck)
联合分布:
(由于已知
v
v
v时,
x
x
x的先验分布已经确定,所以
y
y
y的分布也可确定)
p
(
x
,
y
∣
v
)
=
N
(
[
x
ˇ
C
x
ˇ
]
,
[
P
ˇ
P
ˇ
C
T
C
P
ˇ
C
P
ˇ
C
T
+
R
]
)
p(x,y|v) = \mathcal{N} \left( \begin{bmatrix} \check{x}\\ C\check{x} \end{bmatrix}, \begin{bmatrix} \check{P} & \check{P}C^T \\ C\check{P} & C\check{P}C^T+R \end{bmatrix} \right)
p(x,y∣v)=N([xˇCxˇ],[PˇCPˇPˇCTCPˇCT+R])
条件分布:
下面是已知联合分布,求条件分布。
联合=条件*边缘
p
(
x
,
y
∣
v
)
=
p
(
x
∣
v
,
y
)
p
(
y
∣
v
)
=
N
(
[
x
ˇ
C
x
ˇ
]
,
[
P
ˇ
P
ˇ
C
T
C
P
ˇ
C
P
ˇ
C
T
+
R
]
)
p(x,y|v) = p(x|v,y)p(y|v)\\ =\mathcal{N} \left( \begin{bmatrix} \check{x}\\ C\check{x} \end{bmatrix}, \begin{bmatrix} \check{P} & \check{P}C^T \\ C\check{P} & C\check{P}C^T+R \end{bmatrix} \right)
p(x,y∣v)=p(x∣v,y)p(y∣v)=N([xˇCxˇ],[PˇCPˇPˇCTCPˇCT+R])
由下列高斯推断:
- 联合分布: p ( x , y ) = p ( x ∣ y ) p ( y ) p(x,y)=p(x|y)p(y) p(x,y)=p(x∣y)p(y)
- 条件分布: p ( x ∣ y ) = N ( μ x + Σ x y Σ y y − 1 ( y − μ y ) , Σ x x − Σ x y Σ y y − 1 Σ y x ) p(x|y)=\mathcal{N}(\mu_x+\Sigma_{xy}\Sigma_{yy}^{-1}(y-\mu_y),\Sigma_{xx}-\Sigma_{xy}\Sigma_{yy}^{-1}\Sigma_{yx}) p(x∣y)=N(μx+ΣxyΣyy−1(y−μy),Σxx−ΣxyΣyy−1Σyx)
- 边缘分布: p ( y ) = N ( μ y , Σ y y ) p(y)=\mathcal{N}(\mu_y,\Sigma_{yy}) p(y)=N(μy,Σyy)
代入得: p ( x ∣ v , y ) = N ( x ˇ + P ˇ C T ( C P ˇ C T + R ) − 1 ( y − C x ˇ ) , P ˇ − P ˇ C T ( C P ˇ C T + R ) − 1 C P ˇ ) p(x|v,y)=\mathcal{N}\left( \check{x}+\check{P}C^T(C\check{P}C^T+R)^{-1}(y-C\check{x}),\check{P}-\check{P}C^T(C\check{P}C^T+R)^{-1}C\check{P} \right) p(x∣v,y)=N(xˇ+PˇCT(CPˇCT+R)−1(y−Cxˇ),Pˇ−PˇCT(CPˇCT+R)−1CPˇ)
SMW式:
- A B ( D + C A B ) − 1 = ( A − 1 + B D − 1 C ) − 1 B D − 1 AB(D+CAB)^{-1}=(A^{-1}+BD^{-1}C)^{-1}BD^{-1} AB(D+CAB)−1=(A−1+BD−1C)−1BD−1
- ( A − 1 + B D − 1 C ) − 1 = A − A B ( D + C A B ) − 1 C A (A^{-1}+BD^{-1}C)^{-1}=A-AB(D+CAB)^{-1}CA (A−1+BD−1C)−1=A−AB(D+CAB)−1CA
故化简可得:
p
(
x
∣
v
,
y
)
=
N
(
(
P
ˇ
−
1
+
C
T
R
−
1
C
)
−
1
(
P
ˇ
−
1
x
ˇ
+
C
T
R
−
1
y
)
,
(
P
ˇ
−
1
+
C
T
R
−
1
C
)
−
1
)
p(x|v,y)=\mathcal{N}\left( (\check{P}^{-1}+C^TR^{-1}C)^{-1}(\check{P}^{-1}\check{x}+C^TR^{-1}y),(\check{P}^{-1}+C^TR^{-1}C)^{-1} \right)
p(x∣v,y)=N((Pˇ−1+CTR−1C)−1(Pˇ−1xˇ+CTR−1y),(Pˇ−1+CTR−1C)−1)
- ( P ˇ − 1 + C T R − 1 C ) − 1 ( P ˇ − 1 x ˇ + C T R − 1 y ) (\check{P}^{-1}+C^TR^{-1}C)^{-1}(\check{P}^{-1}\check{x}+C^TR^{-1}y) (Pˇ−1+CTR−1C)−1(Pˇ−1xˇ+CTR−1y)即均值 x ^ . \hat{x}. x^.
- ( P ˇ − 1 + C T R − 1 C ) − 1 (\check{P}^{-1}+C^TR^{-1}C)^{-1} (Pˇ−1+CTR−1C)−1 即后验协方差 P ^ \hat{P} P^.
进一步整理:
均值部分:
(
P
ˇ
−
1
+
C
T
R
−
1
C
)
x
^
=
P
ˇ
−
1
x
ˇ
+
C
T
R
−
1
y
(\check{P}^{-1}+C^TR^{-1}C)\hat{x}=\check{P}^{-1}\check{x}+C^TR^{-1}y
(Pˇ−1+CTR−1C)x^=Pˇ−1xˇ+CTR−1y
代入
x
ˇ
=
A
v
\check{x}=Av
xˇ=Av和
P
ˇ
−
1
=
(
A
Q
A
T
)
−
1
=
(
A
−
1
)
T
Q
−
1
A
−
1
\check{P}^{-1}=(AQA^T)^{-1}={(A^{-1})}^{T}Q^{-1}A^{-1}
Pˇ−1=(AQAT)−1=(A−1)TQ−1A−1,
得:
(
(
A
−
1
)
T
Q
−
1
A
−
1
+
C
T
R
−
1
C
)
x
^
=
(
A
−
1
)
T
Q
−
1
v
+
C
T
R
−
1
y
({(A^{-1})}^{T}Q^{-1}A^{-1}+C^TR^{-1}C)\hat{x}={(A^{-1})}^{T}Q^{-1}v+C^TR^{-1}y
((A−1)TQ−1A−1+CTR−1C)x^=(A−1)TQ−1v+CTR−1y
这里由于A为下三角矩阵,故A逆有特殊的形式:
A
−
1
=
[
1
−
A
0
1
−
A
1
1
−
A
2
⋱
⋱
1
−
A
k
−
1
1
]
A^{-1}= \begin{bmatrix} 1 & \\ -A_0&1\\ &-A_1&1\\ &&-A_2&\ddots\\ &&& \ddots &1\\ &&&& -A_{k-1}&1 \end{bmatrix}
A−1=⎣⎢⎢⎢⎢⎢⎢⎡1−A01−A11−A2⋱⋱1−Ak−11⎦⎥⎥⎥⎥⎥⎥⎤
得出一些结论:
- 按均值式: P ^ − 1 x ^ = ( ( A − 1 ) T Q − 1 A − 1 + C T R − 1 C ) x ^ = ( A − 1 ) T Q − 1 v + C T R − 1 y \hat{P}^{-1}\hat{x}=({(A^{-1})}^{T}Q^{-1}A^{-1}+C^TR^{-1}C)\hat{x}={(A^{-1})}^{T}Q^{-1}v+C^TR^{-1}y P^−1x^=((A−1)TQ−1A−1+CTR−1C)x^=(A−1)TQ−1v+CTR−1y
- 定义: z = [ v y ] , H = [ A − 1 C ] , W = [ Q R ] z=\begin{bmatrix}v\\y\end{bmatrix},H=\begin{bmatrix}A^{-1}\\C\end{bmatrix},W=\begin{bmatrix}Q\\&R\end{bmatrix} z=[vy],H=[A−1C],W=[QR]
- 得到: ( H T W − 1 H ) x ^ = H T W − 1 z (H^TW^{-1}H)\hat{x} = H^TW^{-1}z (HTW−1H)x^=HTW−1z
与MAP结果一致。
线性高斯系统的最优估计显然有以下要求:
- ( H T W − 1 H ) x ^ = H T W − 1 z ⇔ x ^ = ( H T W − 1 H ) − 1 H T W − 1 z (H^TW^{-1}H)\hat{x} = H^TW^{-1}z \Leftrightarrow \hat{x}=(H^TW^{-1}H)^{-1}H^TW^{-1}z (HTW−1H)x^=HTW−1z⇔x^=(HTW−1H)−1HTW−1z
- 即要求 ( H T W − 1 H ) x ^ (H^TW^{-1}H)\hat{x} (HTW−1H)x^可逆, rank ( H T W − 1 H ) = N ( k + 1 ) \text{rank}(H^TW^{-1}H)=N(k+1) rank(HTW−1H)=N(k+1)
- 协方差矩阵的对称正定性要求: rank ( H T H ) = rank ( H T ) = N ( k + 1 ) \text{rank}(H^TH)=\text{rank}(H^T)=N(k+1) rank(HTH)=rank(HT)=N(k+1)
三、离散时间线性高斯系统递归式平滑算法
1.平滑算法的引出——Cholesky解法
2.Rauch-Tung-Striebel平滑算法(RTS Smoother)
四、离散时间线性高斯系统的滤波算法
卡尔曼滤波(Kalman filtering)
总结
- 卡尔曼滤波器给出了线性高斯系统下最优线性无偏估计(Best Linear Unbiased Estimate, BLUE)
- 卡尔曼滤波器依赖于初始状态
- 卡尔曼滤波器即Rauch-Tung-Striebel平滑算法(RTS Smoother)的前向部分
- 在线性高斯系统中,最大后验估计(Maximum A Posteriori, MAP)和贝叶斯推断(Bayesian Inference)的结果等价于卡尔曼滤波器,原因是高斯分布的均值和模在同一点上
- 在非线性系统中,可以使用扩展卡尔曼滤波器(EKF),此时最大后验估计(Maximum A Posteriori, MAP)、贝叶斯推断(Bayesian Inference)、扩展卡尔曼滤波器(EKF)估计的结果均不一样
该处使用的url网络请求的数据。