非线性函数的线性化近似
对于一个状态量
X
∈
R
n
X\in \mathbb{R}^n
X∈Rn,t时刻的状态表示为
X
t
X_t
Xt,t+1时刻的状态表示为
X
t
+
1
X_{t+1}
Xt+1。前后两个时刻的状态可以用一个非线性的运动学函数表示
f
(
⋅
)
f(·)
f(⋅)。
X
t
+
1
=
f
(
X
t
+
n
t
)
X_{t+1}=f(X_t+n_t)
Xt+1=f(Xt+nt)
其中
n
t
∼
N
(
0
,
R
)
n_t\sim \mathcal{N}(0,R)
nt∼N(0,R)是噪声项。注意,通常情况下,函数包含了旋转和平移等操作,因此是非线性的。在非线性的情况下,如果我们知道了
X
t
X_t
Xt的概率分布,想要推导
X
t
+
1
X_{t+1}
Xt+1的概率分布往往是很困难的,因此我们需要对该函数进行一些必要的近似使推导
X
t
+
1
X_{t+1}
Xt+1分布的过程变得简单一些。这个近似就是取
f
(
⋅
)
f(·)
f(⋅)的一阶近似:
X
t
+
1
≈
f
(
X
o
p
t
)
+
F
t
δ
X
t
+
G
t
n
t
X_{t+1}\approx f(X_{opt})+F_t\delta X_t+G_tn_t
Xt+1≈f(Xopt)+FtδXt+Gtnt
F
t
=
∂
f
(
X
o
p
t
+
n
t
)
∂
X
o
p
t
F_t=\frac{\partial f(X_{opt}+n_t)}{\partial X_{opt}}
Ft=∂Xopt∂f(Xopt+nt)
G
t
=
∂
f
(
X
o
p
t
+
n
t
)
∂
n
t
G_t=\frac{\partial f(X_{opt}+n_t)}{\partial n_t}
Gt=∂nt∂f(Xopt+nt)
其中线性展开的点我们成为工作点,这个工作点的选择影响到了线性化近似的好坏,即展开点附近如果函数的形状接近于线性的话,则近似的效果较好,如果很弯曲的话则近似的效果则很差。以上就是非线性函数进行线性化近似的基本思路。
误差项的传播
实际情况下,我们的估计中总是带有一定的误差,即上式的中的
X
=
X
^
+
δ
X
X=\hat{X}+\delta X
X=X^+δX,
X
^
\hat{X}
X^为当前估计量。因此上式我们可以写为:
X
ˇ
t
+
1
=
f
(
X
^
t
+
δ
X
t
+
n
t
)
\check{X}_{t+1}=f(\hat{X}_t+\delta X_t+n_t)
Xˇt+1=f(X^t+δXt+nt)
X
ˇ
t
+
1
\check{X}_{t+1}
Xˇt+1表示一步状态传递得到的
X
t
+
1
X_{t+1}
Xt+1的状态预测(之后还会用测量值进行修正得到最终的
X
^
t
+
1
\hat{X}_{t+1}
X^t+1)
EKF往往选择将
X
^
\hat{X}
X^做为上述提到的线性化近似的展开点。(当然你也可以选择别的点作为展开点,如IEKF就通过多次迭代,每一次的展开点都不一样)
X
ˇ
t
+
1
≈
f
(
X
^
t
)
+
F
t
δ
X
t
+
G
t
n
t
\check{X}_{t+1}\approx f(\hat{X}_t)+F_t\delta X_t+G_tn_t
Xˇt+1≈f(X^t)+FtδXt+Gtnt
X
ˇ
t
+
1
−
f
(
X
^
t
)
=
F
t
δ
X
t
+
G
t
n
t
\check{X}_{t+1}- f(\hat{X}_t)=F_t\delta X_t+G_tn_t
Xˇt+1−f(X^t)=FtδXt+Gtnt
δ
X
t
+
1
=
F
t
δ
X
t
+
G
t
n
t
\delta X_{t+1}=F_t\delta X_t+G_tn_t
δXt+1=FtδXt+Gtnt
Σ
t
+
1
=
E
[
δ
X
t
+
1
δ
X
t
+
1
T
]
=
E
[
(
F
t
δ
X
t
+
G
t
n
t
)
(
F
t
δ
X
t
+
G
t
n
t
)
T
]
=
F
t
Σ
t
F
t
T
+
G
t
R
G
t
T
\Sigma_{t+1}=E[\delta X_{t+1}\delta X_{t+1}^T]=E[(F_t\delta X_t+G_tn_t)(F_t\delta X_t+G_tn_t)^T]=F_t\Sigma_tF_t^T+G_tRG_t^T
Σt+1=E[δXt+1δXt+1T]=E[(FtδXt+Gtnt)(FtδXt+Gtnt)T]=FtΣtFtT+GtRGtT
Σ
t
+
1
\Sigma_{t+1}
Σt+1为t+1时刻的协方差矩阵,
Σ
t
+
1
\Sigma_{t+1}
Σt+1为t时刻的协方差矩阵。