Error State Kalman Filter
前置知识:卡尔曼滤波器详细推导
1、误差状态卡尔曼滤波器
误差状态卡尔曼滤波器(ESKF)全称误差状态扩展卡尔曼滤波器(ESEKF),其将IMU视为运动模型,将其他传感器(如RTK,轮速计等)视为观测模型,并将状态变量的真值分为名义状态变量和误差状态变量,在滤波过程中,仅对误差状态变量进行预测和更新。
设ESKF的真值状态变量为 x t = [ p t , v t , R t , b a t , b g t , g t ] \mathbf{x}_{t}=[\mathbf{p}_{t},\mathbf{v}_{t},\mathbf{R}_{t},\mathbf{b}_{at},\mathbf{b}_{gt},\mathbf{g}_{t}] xt=[pt,vt,Rt,bat,bgt,gt](为简便起见,将旋转矩阵也写入向量,下同),下标 t t t表示true,名义状态变量为 x = [ p , v , R , b a , b g , g ] \mathbf{x}=[\mathbf{p},\mathbf{v},\mathbf{R},\mathbf{b}_{a},\mathbf{b}_{g},\mathbf{g}] x=[p,v,R,ba,bg,g],误差状态变量为 δ x = [ δ p , δ v , δ θ , δ b a , δ b g , δ g ] \delta\mathbf{x}=[\delta\mathbf{p},\delta\mathbf{v},\delta\boldsymbol{\theta},\delta\mathbf{b}_{a},\delta\mathbf{b}_{g},\delta\mathbf{g}] δx=[δp,δv,δθ,δba,δbg,δg],三者各自内部元素依次表示平移,速度,旋转矩阵(误差状态变量采用误差旋转向量),加速度计零偏,陀螺仪零偏,重力。记加速度计读数为 a ~ \tilde{\mathbf{a}} a~,IMU陀螺仪读数为 ω ~ \tilde{\boldsymbol\omega} ω~,加速度计测量噪声为 η a \boldsymbol{\eta}_{a} ηa,其零偏的导数为 η b a \boldsymbol{\eta}_{ba} ηba,陀螺仪测量噪声为 η b \boldsymbol{\eta}_{b} ηb,其计零偏的导数为 η b g \boldsymbol{\eta}_{bg} ηbg,上述测量噪声和零偏的导数均为白噪声高斯过程。
真值状态的运动学方程为
p
˙
t
=
v
t
v
˙
t
=
R
t
(
a
~
−
b
a
t
−
η
a
)
+
g
t
R
˙
t
=
R
t
(
ω
~
−
b
g
t
−
η
g
)
∧
b
˙
a
t
=
η
b
a
b
˙
g
t
=
η
b
g
g
˙
t
=
0
\begin{align*} \dot{\mathbf{p}}_{t}&=\mathbf{v}_{t}\tag{1a}\\ \dot{\mathbf{v}}_{t}&=\mathbf{R}_{t}(\tilde{\mathbf{a}}-\mathbf{b}_{at}-\boldsymbol{\eta}_{a})+\mathbf{g}_{t}\tag{1b}\\ \dot{\mathbf{R}}_{t}&=\mathbf{R}_{t}(\tilde{\boldsymbol{\omega}}-\mathbf{b}_{gt}-\boldsymbol{\eta}_{g})^{\wedge}\tag{1c}\\ \dot{\mathbf{b}}_{at}&=\boldsymbol{\eta}_{\mathbf{b}_{a}}\tag{1d}\\ \dot{\mathbf{b}}_{gt}&=\boldsymbol{\eta}_{\mathbf{b}_{g}}\tag{1e}\\ \dot{\mathbf{g}}_{t}&=\mathbf{0}\tag{1f}\\ \end{align*}
p˙tv˙tR˙tb˙atb˙gtg˙t=vt=Rt(a~−bat−ηa)+gt=Rt(ω~−bgt−ηg)∧=ηba=ηbg=0(1a)(1b)(1c)(1d)(1e)(1f)
在名义变量的运动学方程与真值状态运动学方程相似,只是在该方程中不必考虑噪声,因为噪声会在误差状态方程中考虑,该方程为
p
˙
=
v
v
˙
=
R
(
a
~
−
b
a
)
+
g
R
˙
=
R
(
ω
~
−
b
g
)
∧
b
˙
a
=
0
b
˙
g
=
0
g
˙
=
0
\begin{align*} \dot{\mathbf{p}}&=\mathbf{v}\tag{2a}\\ \dot{\mathbf{v}}&=\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a})+\mathbf{g}\tag{2b}\\ \dot{\mathbf{R}}&=\mathbf{R}(\tilde{\boldsymbol{\omega}}-\mathbf{b}_{g})^{\wedge}\tag{2c}\\ \dot{\mathbf{b}}_{a}&=\mathbf{0}\tag{2d}\\ \dot{\mathbf{b}}_{g}&=\mathbf{0}\tag{2e}\\ \dot{\mathbf{g}}&=\mathbf{0}\tag{2f}\\ \end{align*}
p˙v˙R˙b˙ab˙gg˙=v=R(a~−ba)+g=R(ω~−bg)∧=0=0=0(2a)(2b)(2c)(2d)(2e)(2f)
真值状态变量,名义状态变量,误差状态变量三者之间满足关系
x
t
=
x
⊕
δ
x
\mathbf{x}_{t}=\mathbf{x}\oplus\delta\mathbf{x}
xt=x⊕δx,其中
⊕
\oplus
⊕为广义加法,该关系也是误差状态的定义,该式可展开写为
p
t
=
p
+
δ
p
v
t
=
v
+
δ
v
R
t
=
R
E
x
p
(
δ
θ
)
b
a
t
=
b
a
+
δ
b
a
b
g
t
=
b
g
+
δ
b
g
g
t
=
g
+
δ
g
\begin{align*} \mathbf{p}_{t}&=\mathbf{p}+\delta\mathbf{p}\tag{3a}\\ \mathbf{v}_{t}&=\mathbf{v}+\delta\mathbf{v}\tag{3b}\\ \mathbf{R}_{t}&=\mathbf{R}\mathrm{Exp}(\delta\boldsymbol{\theta})\tag{3c}\\ \mathbf{b}_{at}&=\mathbf{b}_{a}+\delta\mathbf{b}_{a}\tag{3d}\\ \mathbf{b}_{gt}&=\mathbf{b}_{g}+\delta\mathbf{b}_{g}\tag{3e}\\ \mathbf{g}_{t}&=\mathbf{g}+\delta\mathbf{g}\tag{3f}\\ \end{align*}
ptvtRtbatbgtgt=p+δp=v+δv=RExp(δθ)=ba+δba=bg+δbg=g+δg(3a)(3b)(3c)(3d)(3e)(3f)
由
(
1
)
,
(
2
)
,
(
3
)
(1),(2),(3)
(1),(2),(3)通过变形和约简可以得到误差状态变量的运动学方程,为方便后续推导,此处将约等于号写成等于号,下同
δ
p
˙
=
δ
v
δ
v
˙
=
−
R
(
a
~
−
b
a
)
∧
δ
θ
−
R
δ
b
a
−
η
a
+
δ
g
δ
θ
˙
=
−
(
ω
~
−
b
g
)
∧
δ
θ
−
δ
b
g
−
η
g
δ
b
˙
a
=
η
b
a
δ
b
˙
g
=
η
b
g
δ
g
˙
=
0
\begin{align*} \dot{\delta\mathbf{p}}&=\delta{\mathbf{v}}\tag{4a}\\ \dot{\delta\mathbf{v}}&=-\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a})^{\wedge}\delta\boldsymbol{\theta}-\mathbf{R}\delta\mathbf{b}_{a}-\boldsymbol{\eta}_{a}+\delta\mathbf{g}\tag{4b}\\ \dot{\delta\boldsymbol{\theta}}&=-(\tilde{\boldsymbol{\omega}}-\mathbf{b}_{g})^{\wedge}\delta\boldsymbol{\theta}-\delta\mathbf{b}_{g}-\boldsymbol{\eta}_{g}\tag{4c}\\ \dot{\delta\mathbf{b}}_{a}&=\boldsymbol{\eta}_{\mathbf{b}_{a}}\tag{4d}\\ \dot{\delta\mathbf{b}}_{g}&=\boldsymbol{\eta}_{\mathbf{b}_{g}}\tag{4e}\\ \dot{\delta\mathbf{g}}&=\mathbf{0}\tag{4f}\\ \end{align*}
δp˙δv˙δθ˙δb˙aδb˙gδg˙=δv=−R(a~−ba)∧δθ−Rδba−ηa+δg=−(ω~−bg)∧δθ−δbg−ηg=ηba=ηbg=0(4a)(4b)(4c)(4d)(4e)(4f)
因为实际是在离散时间进行采样,故需要将名义状态变量和误差状态变量对应的运动学方程离散化。在
[
t
,
t
+
Δ
t
]
[t,t+\Delta{t}]
[t,t+Δt]这段非常短的时间段内,可以假定加速度和角速度不变,恒为
t
t
t时刻的取值,在该假定下,名义状态变量运动学方程
(
2
)
(2)
(2)可离散化为(省略等号右侧所有的
(
t
)
(t)
(t)以化简公式)
p
(
t
+
Δ
t
)
=
p
+
v
Δ
t
+
1
2
(
R
(
a
~
−
b
a
)
)
Δ
t
2
+
1
2
g
Δ
t
2
v
(
t
+
Δ
t
)
=
v
+
R
(
a
~
−
b
a
)
Δ
t
+
g
Δ
t
R
(
t
+
Δ
t
)
=
R
E
x
p
(
(
ω
~
−
b
g
)
Δ
t
)
b
a
(
t
+
Δ
t
)
=
b
a
b
g
(
t
+
Δ
t
)
=
b
g
g
(
t
+
Δ
t
)
=
g
\begin{align*} \mathbf{p}(t+\Delta{t})&=\mathbf{p}+\mathbf{v}\Delta t+\frac{1}{2}(\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a}))\Delta{t}^2+\frac{1}{2}\mathbf{g}\Delta{t}^2\tag{5a}\\ \mathbf{v}(t+\Delta{t})&=\mathbf{v}+\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a})\Delta{t}+\mathbf{g}\Delta{t}\tag{5b}\\ \mathbf{R}(t+\Delta{t})&=\mathbf{R}\mathrm{Exp}((\tilde{\boldsymbol{\omega}}-\mathbf{b}_{g})\Delta{t})\tag{5c}\\ \mathbf{b}_{a}(t+\Delta{t})&=\mathbf{b}_{a}\tag{5d}\\ \mathbf{b}_{g}(t+\Delta{t})&=\mathbf{b}_{g}\tag{5e}\\ \mathbf{g}(t+\Delta{t})&=\mathbf{g}\tag{5f}\\ \end{align*}
p(t+Δt)v(t+Δt)R(t+Δt)ba(t+Δt)bg(t+Δt)g(t+Δt)=p+vΔt+21(R(a~−ba))Δt2+21gΔt2=v+R(a~−ba)Δt+gΔt=RExp((ω~−bg)Δt)=ba=bg=g(5a)(5b)(5c)(5d)(5e)(5f)
误差状态变量运动学方程
(
4
)
(4)
(4)可离散化为(同样省略等号右侧所有的
(
t
)
(t)
(t)以化简公式)
δ
p
(
t
+
Δ
t
)
=
δ
p
+
δ
v
Δ
t
δ
v
(
t
+
Δ
t
)
=
δ
v
+
(
−
R
(
a
~
−
b
a
)
∧
δ
θ
−
R
δ
b
a
+
δ
g
)
Δ
t
−
w
v
δ
θ
(
t
+
Δ
t
)
=
E
x
p
(
−
(
ω
~
−
b
g
)
Δ
t
)
δ
θ
−
δ
b
g
Δ
t
−
w
θ
δ
b
a
(
t
+
Δ
t
)
=
δ
b
a
+
w
a
δ
b
g
(
t
+
Δ
t
)
=
δ
b
g
+
w
g
δ
g
(
t
+
Δ
t
)
=
δ
g
\begin{align*} \delta\mathbf{p}(t+\Delta{t})&=\delta{\mathbf{p}}+\delta{\mathbf{v}}\Delta{t}\tag{6a}\\ \delta\mathbf{v}(t+\Delta{t})&=\delta\mathbf{v}+(-\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a})^{\wedge}\delta\boldsymbol{\theta}-\mathbf{R}\delta\mathbf{b}_{a}+\delta\mathbf{g})\Delta{t}-\mathbf{w}_{v}\tag{6b}\\ \delta\boldsymbol{\theta}(t+\Delta{t})&=\mathrm{Exp}(-(\tilde{\boldsymbol{\omega}}-\mathbf{b}_{g})\Delta{t})\delta{\boldsymbol{\theta}}-\delta\mathbf{b}_{g}\Delta{t}-\mathbf{w}_{\theta}\tag{6c}\\ \delta\mathbf{b}_{a}(t+\Delta{t})&=\delta\mathbf{b}_{a}+\mathbf{w}_{a}\tag{6d}\\ \delta\mathbf{b}_{g}(t+\Delta{t})&=\delta\mathbf{b}_{g}+\mathbf{w}_{g}\tag{6e}\\ \delta\mathbf{g}(t+\Delta{t})&=\delta\mathbf{g}\tag{6f}\\ \end{align*}
δp(t+Δt)δv(t+Δt)δθ(t+Δt)δba(t+Δt)δbg(t+Δt)δg(t+Δt)=δp+δvΔt=δv+(−R(a~−ba)∧δθ−Rδba+δg)Δt−wv=Exp(−(ω~−bg)Δt)δθ−δbgΔt−wθ=δba+wa=δbg+wg=δg(6a)(6b)(6c)(6d)(6e)(6f)
w
v
,
w
θ
,
w
b
a
,
w
b
g
\mathbf{w}_{\mathbf{v}},\mathbf{w}_{\boldsymbol\theta},\mathbf{w}_{\mathbf{b}_{a}},\mathbf{w}_{\mathbf{b}_{g}}
wv,wθ,wba,wbg分别为白噪声高斯随机过程
η
a
,
η
g
,
η
b
a
,
η
b
g
\boldsymbol{\eta}_{a},\boldsymbol{\eta}_{g},\boldsymbol{\eta}_{\mathbf{b}_{a}},\boldsymbol{\eta}_{\mathbf{b}_{g}}
ηa,ηg,ηba,ηbg的积分,即表示维纳过程,则上述维纳过程的标准差为
σ
(
w
v
)
=
Δ
t
σ
k
(
η
a
)
=
Δ
t
σ
(
η
a
)
σ
(
w
θ
)
=
Δ
t
σ
k
(
η
g
)
=
Δ
t
σ
(
η
g
)
σ
(
w
b
a
)
=
σ
k
(
b
a
)
=
Δ
t
σ
(
b
a
)
σ
(
w
b
g
)
=
σ
k
(
b
g
)
=
Δ
t
σ
(
b
g
)
\begin{array}{ll} &\sigma(\mathbf{w}_{\mathbf{v}})=\Delta{t}{\sigma}_{k}({\boldsymbol{\eta}_{a}})=\sqrt{\Delta{t}}{\sigma}(\boldsymbol{\eta}_{a}) &\sigma(\mathbf{w}_{\boldsymbol\theta})=\Delta{t}{\sigma}_{k}({\boldsymbol{\eta}_{g}})=\sqrt{\Delta{t}}{\sigma}(\boldsymbol{\eta}_{g})\\ &\sigma(\mathbf{w}_{\mathbf{b}_{a}})=\sigma_{k}(\mathbf{b}_{a})=\sqrt{\Delta{t}}{\sigma}(\mathbf{b}_{a}) &\sigma(\mathbf{w}_{\mathbf{b}_{g}})={\sigma}_{k}(\mathbf{b}_{g})=\sqrt{\Delta{t}}{\sigma}(\mathbf{b}_{g}) \end{array}
σ(wv)=Δtσk(ηa)=Δtσ(ηa)σ(wba)=σk(ba)=Δtσ(ba)σ(wθ)=Δtσk(ηg)=Δtσ(ηg)σ(wbg)=σk(bg)=Δtσ(bg)
记
t
k
=
t
t_{k}=t
tk=t,
t
k
+
1
=
t
+
Δ
t
t_{k+1}=t+\Delta{t}
tk+1=t+Δt,将
u
=
[
a
~
,
ω
~
]
T
\mathbf{u}=[\tilde{\mathbf{a}},\tilde{\boldsymbol{\omega}}]^T
u=[a~,ω~]T视为输入,
(
6
)
(6)
(6)可以整体地写成
δ
x
k
+
1
=
f
(
δ
x
k
,
x
k
,
u
k
+
1
)
+
w
k
+
1
,
w
k
+
1
∼
N
(
0
,
Q
k
+
1
)
(7)
\delta\mathbf{x}_{k+1}=\mathbf{f}(\delta\mathbf{x}_{k},\mathbf{x}_{k},\mathbf{u}_{k+1})+\mathbf{w}_{k+1},\quad\mathbf{w}_{k+1}\sim\mathcal{N}(\mathbf{0},\mathbf{Q}_{k+1})\tag{7}
δxk+1=f(δxk,xk,uk+1)+wk+1,wk+1∼N(0,Qk+1)(7)
w
\mathbf{w}
w为随机游走噪声,其分布与时间步无关,下标只起标记时间步的作用,按照前面的定义,其协方差矩阵为
Q
k
+
1
=
d
i
a
g
(
O
3
×
3
,
Σ
(
w
v
)
,
Σ
(
w
θ
)
,
Σ
(
w
b
a
)
,
Σ
(
w
b
g
)
,
O
3
×
3
)
\mathbf{Q}_{k+1}=\mathrm{diag}(\mathbf{O}_{3\times3},\boldsymbol\Sigma(\mathbf{w}_{v}),\boldsymbol\Sigma(\mathbf{w}_{\theta}),\boldsymbol\Sigma(\mathbf{w}_{\mathbf{b}_{a}}),\boldsymbol\Sigma(\mathbf{w}_{\mathbf{b}_{g}}),\mathbf{O}_{3\times3})
Qk+1=diag(O3×3,Σ(wv),Σ(wθ),Σ(wba),Σ(wbg),O3×3)
将
(
7
)
(7)
(7)中的预测方程在
(
0
,
x
^
k
,
u
k
+
1
)
(\mathbf{0},\hat{\mathbf{x}}_{k},\mathbf{u}_{k+1})
(0,x^k,uk+1)处展开,得到
δ
x
k
+
1
≈
f
(
0
,
x
^
k
,
u
k
+
1
)
+
∂
f
(
δ
x
k
,
x
k
,
u
k
+
1
)
∂
δ
x
k
∣
0
,
x
^
k
,
u
k
+
1
δ
x
k
+
w
k
+
1
\delta\mathbf{x}_{k+1}\approx\mathbf{f}(\mathbf{0},\hat{\mathbf{x}}_{k},\mathbf{u}_{k+1})+\left.\frac{\partial{\mathbf{f}(\delta\mathbf{x}_{k},\mathbf{x}_{k},\mathbf{u}_{k+1})}}{\partial{\delta\mathbf{x}_{k}}}\right|_{\mathbf{0},\hat{\mathbf{x}}_{k},\mathbf{u}_{k+1}}\delta\mathbf{x}_{k}+\mathbf{w}_{k+1}
δxk+1≈f(0,x^k,uk+1)+∂δxk∂f(δxk,xk,uk+1)
0,x^k,uk+1δxk+wk+1
上式第一项,代入
(
6
)
(6)
(6)可知其值为
0
\mathbf{0}
0,记第二项中偏导数矩阵为
F
k
+
1
\mathbf{F}_{k+1}
Fk+1,由
(
21
)
(21)
(21)可以得到
F
k
+
1
=
[
I
I
Δ
t
O
O
O
O
O
I
−
R
(
a
~
−
b
a
)
∧
Δ
t
O
−
R
Δ
t
I
Δ
t
O
O
E
x
p
(
−
(
ω
~
−
b
g
)
Δ
t
)
−
I
Δ
t
O
O
O
O
O
I
O
O
O
O
O
O
I
O
O
O
O
O
O
I
]
\mathbf{F}_{k+1}= \begin{bmatrix} \mathbf{I}&\mathbf{I}\Delta{t}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}\\ \mathbf{O}&\mathbf{I}&-\mathbf{R}(\tilde{\mathbf{a}}-\mathbf{b}_{a})^{\wedge}\Delta{t}&\mathbf{O}&-\mathbf{R}\Delta{t}&\mathbf{I}\Delta{t}\\ \mathbf{O}&\mathbf{O}&\mathrm{Exp}(-(\tilde{\boldsymbol{\omega}}-\mathbf{b}_{g})\Delta{t})&-\mathbf{I}\Delta{t}&\mathbf{O}&\mathbf{O}\\ \mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{I}&\mathbf{O}&\mathbf{O}\\ \mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{I}&\mathbf{O}\\ \mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{I}\\ \end{bmatrix}
Fk+1=
IOOOOOIΔtIOOOOO−R(a~−ba)∧ΔtExp(−(ω~−bg)Δt)OOOOO−IΔtIOOO−RΔtOOIOOIΔtOOOI
将偏导数矩阵表达式代入展开式可以得到
δ
x
k
+
1
≈
F
k
+
1
δ
x
k
+
w
k
+
1
(8)
\delta\mathbf{x}_{k+1}\approx\mathbf{F}_{k+1}\delta\mathbf{x}_{k}+\mathbf{w}_{k+1}\tag{8}
δxk+1≈Fk+1δxk+wk+1(8)
在此基础上,执行ESKF的预测过程。预测过程包括对名义状态的预测和对误差状态的预测,对名义状态的预测即按
(
5
)
(5)
(5)式进行IMU积分即得到
x
ˇ
k
+
1
\check{\mathbf{x}}_{k+1}
xˇk+1。注意,初始时刻
k
=
0
k=0
k=0,误差状态后验均值为
δ
x
^
0
=
0
\hat{\delta\mathbf{x}}_{0}=\mathbf{0}
δx^0=0,后验协方差矩阵为
P
^
0
=
I
\hat{\mathbf{P}}_{0}=\mathbf{I}
P^0=I,即
δ
x
0
∼
N
(
δ
x
^
0
,
P
^
0
)
\delta\mathbf{x}_{0}\sim\mathcal{N}(\hat{\delta\mathbf{x}}_{0},\hat{\mathbf{P}}_{0})
δx0∼N(δx^0,P^0),并未经过修正,故预测方程应写为
δ
x
ˇ
k
+
1
=
F
k
+
1
δ
x
^
k
P
ˇ
k
+
1
=
F
k
+
1
P
^
k
F
k
+
1
T
+
Q
k
+
1
\begin{align*} \check{\delta\mathbf{x}}_{k+1}&=\mathbf{F}_{k+1}\hat{\delta\mathbf{x}}_{k}\tag{9a}\\ \check{\mathbf{P}}_{k+1}&=\mathbf{F}_{k+1}\hat{\mathbf{P}}_{k}\mathbf{F}_{k+1}^{T}+\mathbf{Q}_{k+1}\tag{9b}\\ \end{align*}
δxˇk+1Pˇk+1=Fk+1δx^k=Fk+1P^kFk+1T+Qk+1(9a)(9b)
对于后续时间步
k
=
1
,
2
,
⋯
k=1,2,\cdots
k=1,2,⋯,因为原误差状态已经过修正,故下一时间步误差状态的预测方程如下
δ
x
ˇ
k
+
1
=
F
k
+
1
δ
x
^
k
+
P
ˇ
k
+
1
=
F
k
+
1
P
^
k
+
F
k
+
1
T
+
Q
k
+
1
\begin{align*} \check{\delta\mathbf{x}}_{k+1}&=\mathbf{F}_{k+1}\hat{\delta\mathbf{x}}^{+}_{k}\tag{10a}\\ \check{\mathbf{P}}_{k+1}&=\mathbf{F}_{k+1}\hat{\mathbf{P}}^{+}_{k}\mathbf{F}_{k+1}^{T}+\mathbf{Q}_{k+1}\tag{10b}\\ \end{align*}
δxˇk+1Pˇk+1=Fk+1δx^k+=Fk+1P^k+Fk+1T+Qk+1(10a)(10b)
事实上,因为重置后的均值
δ
x
^
k
+
1
+
=
0
\hat{\delta\mathbf{x}}_{k+1}^{+}=\mathbf{0}
δx^k+1+=0,因此
δ
x
ˇ
k
+
1
=
0
\check{\delta\mathbf{x}}_{k+1}=\mathbf{0}
δxˇk+1=0
前文阐述了ESKF的预测过程,现考虑更新过程。假设一个抽象的传感器能对状态变量产生观测(其输出为向量),观测方程为
z
k
+
1
=
h
(
x
t
k
+
1
)
+
ϵ
k
+
1
\mathbf{z}_{k+1}=\mathbf{h}({\mathbf{x}_{t}}_{k+1})+\boldsymbol{\epsilon}_{k+1}
zk+1=h(xtk+1)+ϵk+1
其中
ϵ
k
+
1
∼
N
(
0
,
V
k
+
1
)
\boldsymbol{\epsilon}_{k+1}\sim\mathcal{N}(\mathbf{0},\mathbf{V}_{k+1})
ϵk+1∼N(0,Vk+1)。可以认为观测方程实际具有如下形式
z
k
+
1
=
h
(
x
ˇ
k
+
1
⊕
δ
x
k
+
1
)
+
ϵ
k
+
1
(11)
\mathbf{z}_{k+1}=\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\delta\mathbf{x}_{k+1})+\boldsymbol{\epsilon}_{k+1}\tag{11}
zk+1=h(xˇk+1⊕δxk+1)+ϵk+1(11)
因为在ESKF中,需要更新的是误差状态变量,故将
h
(
x
k
+
1
⊕
δ
x
k
+
1
)
\mathbf{h}(\mathbf{x}_{k+1}\oplus\delta\mathbf{x}_{k+1})
h(xk+1⊕δxk+1)视为
δ
x
k
+
1
\delta\mathbf{x}_{k+1}
δxk+1的函数,并将其在
δ
x
ˇ
k
+
1
=
0
\check{\delta\mathbf{x}}_{k+1}=\mathbf{0}
δxˇk+1=0处展开,得到
z
k
+
1
≈
h
(
x
ˇ
k
+
1
⊕
δ
x
ˇ
k
+
1
)
+
∂
h
(
x
ˇ
k
+
1
⊕
δ
x
k
+
1
)
∂
δ
x
k
+
1
∣
δ
x
ˇ
k
+
1
(
δ
x
k
+
1
−
δ
x
ˇ
k
+
1
)
+
ϵ
k
+
1
=
h
(
x
ˇ
k
+
1
)
+
H
k
+
1
δ
x
k
+
1
+
ϵ
k
+
1
\begin{align*} \mathbf{z}_{k+1}&\approx\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\check{\delta\mathbf{x}}_{k+1})+\left.\frac{\partial\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus{\delta\mathbf{x}}_{k+1})}{\partial{\delta\mathbf{x}}_{k+1}}\right|_{\check{\delta\mathbf{x}}_{k+1}}({\delta\mathbf{x}}_{k+1}-\check{\delta\mathbf{x}}_{k+1})+\boldsymbol{\epsilon}_{k+1}\\ &=\mathbf{h}(\check{\mathbf{x}}_{k+1})+\mathbf{H}_{k+1}\delta\mathbf{x}_{k+1}+\boldsymbol{\epsilon}_{k+1}\tag{12} \end{align*}
zk+1≈h(xˇk+1⊕δxˇk+1)+∂δxk+1∂h(xˇk+1⊕δxk+1)
δxˇk+1(δxk+1−δxˇk+1)+ϵk+1=h(xˇk+1)+Hk+1δxk+1+ϵk+1(12)
其中
H
k
+
1
\mathbf{H}_{k+1}
Hk+1是观测方程相对于误差状态的雅可比矩阵,其具体计算方式为
H
k
+
1
=
lim
δ
x
k
+
1
→
0
h
(
x
ˇ
k
+
1
⊕
(
δ
x
ˇ
k
+
1
+
δ
x
k
+
1
)
)
−
h
(
x
ˇ
k
+
1
⊕
δ
x
ˇ
k
+
1
)
δ
x
k
+
1
\begin{align*} \mathbf{H}_{k+1}&=\lim_{\delta\mathbf{x}_{k+1}\rightarrow\mathbf{0}}\frac{\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus(\check{\delta\mathbf{x}}_{k+1}+{\delta\mathbf{x}}_{k+1}))-\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\check{\delta\mathbf{x}}_{k+1})}{\delta\mathbf{x}_{k+1}}\\ \end{align*}
Hk+1=δxk+1→0limδxk+1h(xˇk+1⊕(δxˇk+1+δxk+1))−h(xˇk+1⊕δxˇk+1)
下面求出卡尔曼增益,进而更新误差状态的协方差矩阵和均值
K
k
+
1
=
P
ˇ
k
+
1
H
k
+
1
T
(
V
k
+
1
+
H
k
+
1
P
ˇ
k
+
1
H
k
+
1
T
)
−
1
δ
x
^
k
+
1
=
δ
x
ˇ
k
+
1
+
K
k
+
1
(
z
k
+
1
−
h
(
x
ˇ
k
+
1
⊕
δ
x
ˇ
k
+
1
)
)
P
^
k
+
1
=
(
I
−
K
k
+
1
H
k
+
1
)
P
ˇ
k
+
1
\begin{align*} \mathbf{K}_{k+1}&=\check{\mathbf{P}}_{k+1}\mathbf{H}_{k+1}^{T}(\mathbf{V}_{k+1}+\mathbf{H}_{k+1}\check{\mathbf{P}}_{k+1}\mathbf{H}_{k+1}^{T})^{-1}\tag{13a}\\ \hat{\delta\mathbf{x}}_{k+1}&=\check{\delta\mathbf{x}}_{k+1}+\mathbf{K}_{k+1}(\mathbf{z}_{k+1}-\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\check{\delta\mathbf{x}}_{k+1}))\tag{13b}\\ \hat{\mathbf{P}}_{k+1}&=(\mathbf{I}-\mathbf{K}_{k+1}\mathbf{H}_{k+1})\check{\mathbf{P}}_{k+1}\tag{13c}\\ \end{align*}
Kk+1δx^k+1P^k+1=Pˇk+1Hk+1T(Vk+1+Hk+1Pˇk+1Hk+1T)−1=δxˇk+1+Kk+1(zk+1−h(xˇk+1⊕δxˇk+1))=(I−Kk+1Hk+1)Pˇk+1(13a)(13b)(13c)
实际上,上式得到了误差状态的后验均值和后验协方差矩阵,即满足
δ
x
k
+
1
∼
N
(
δ
x
^
k
+
1
,
P
^
k
+
1
)
\delta\mathbf{x}_{k+1}\sim\mathcal{N}(\hat{\delta\mathbf{x}}_{k+1},\hat{\mathbf{P}}_{k+1})
δxk+1∼N(δx^k+1,P^k+1)
事实上,用于预测的观测数据和用于更新的观测数据并不是一一对应的,用于预测的观测数据往往获取频率更高。当用于预测的观测数据到来时,应先根据 ( 5 ) (5) (5)进行IMU积分得到名义状态,并根据 ( 9 ) , ( 10 ) (9),(10) (9),(10)对误差状态变量进行预测,直到观测数据到来时,再根据 ( 13 ) (13) (13)更新误差状态变量。
得到误差状态的分布后,将其均值按
(
3
)
(3)
(3)的方式合并入名义状态,得到真值状态的具体数值
x
^
k
+
1
=
x
ˇ
k
+
1
⊕
δ
x
^
k
+
1
(14)
\hat{\mathbf{x}}_{k+1}=\check{\mathbf{x}}_{k+1}\oplus\hat{\delta\mathbf{x}}_{k+1}\tag{14}
x^k+1=xˇk+1⊕δx^k+1(14)
因为在每次将误差状态合并入名义状态后,误差的实际分布会发生改变,该改变可理解为通过重置函数
g
\mathbf{g}
g对误差状态进行重置。下面考虑重置对于误差状态的影响,设重置后误差状态为
δ
x
k
+
1
+
\delta\mathbf{x}_{k+1}^{+}
δxk+1+,即
δ
x
k
+
1
+
=
g
(
δ
x
k
+
1
)
(15)
\delta\mathbf{x}_{k+1}^{+}=\mathbf{g}(\delta\mathbf{x}_{k+1})\tag{15}
δxk+1+=g(δxk+1)(15)
首先要确定重置函数的形式。考虑到应保证重置前后真值服从的分布不变
(
x
ˇ
k
+
1
⊕
δ
x
^
k
+
1
)
⊕
δ
x
+
=
x
ˇ
k
+
1
⊕
δ
x
k
+
1
(16)
(\check{\mathbf{x}}_{k+1}\oplus\hat{\delta\mathbf{x}}_{k+1})\oplus\delta\mathbf{x}^{+}=\check{\mathbf{x}}_{k+1}\oplus\delta\mathbf{x}_{k+1}\tag{16}
(xˇk+1⊕δx^k+1)⊕δx+=xˇk+1⊕δxk+1(16)
该式等号两侧均表示分布,将该式展开可知
δ
p
k
+
1
+
=
δ
p
k
+
1
−
δ
p
^
k
+
1
δ
v
k
+
1
+
=
δ
v
k
+
1
−
δ
v
^
k
+
1
E
x
p
(
δ
θ
k
+
1
+
)
=
E
x
p
(
−
δ
θ
^
k
+
1
)
E
x
p
(
δ
θ
k
+
1
)
δ
b
a
k
+
1
+
=
δ
b
a
k
+
1
−
δ
b
^
a
k
+
1
δ
b
g
k
+
1
+
=
δ
b
g
k
+
1
−
δ
b
^
g
k
+
1
δ
g
k
+
1
+
=
δ
g
k
+
1
−
δ
g
^
k
+
1
\begin{align*} \delta\mathbf{p}_{k+1}^{+}&=\delta\mathbf{p}_{k+1}-\hat{\delta\mathbf{p}}_{k+1}\tag{17a}\\ \delta\mathbf{v}_{k+1}^{+}&=\delta\mathbf{v}_{k+1}-\hat{\delta\mathbf{v}}_{k+1}\tag{17b}\\ \mathrm{Exp}(\delta\boldsymbol{\theta}_{k+1}^{+})&=\mathrm{Exp}(-\hat{\delta\boldsymbol{\theta}}_{k+1})\mathrm{Exp}(\delta\boldsymbol{\theta}_{k+1})\tag{17c}\\ \delta{\mathbf{b}_{a}}^{+}_{k+1}&={\delta\mathbf{b}_{a}}_{k+1}-{\hat{\delta\mathbf{b}}_{a}}_{k+1}\tag{17d}\\ \delta{\mathbf{b}_{g}}^{+}_{k+1}&={\delta\mathbf{b}_{g}}_{k+1}-{\hat{\delta\mathbf{b}}_{g}}_{k+1}\tag{17e}\\ \delta\mathbf{g}_{k+1}^{+}&=\delta\mathbf{g}_{k+1}-\hat{\delta\mathbf{g}}_{k+1}\tag{17f}\\ \end{align*}
δpk+1+δvk+1+Exp(δθk+1+)δbak+1+δbgk+1+δgk+1+=δpk+1−δp^k+1=δvk+1−δv^k+1=Exp(−δθ^k+1)Exp(δθk+1)=δbak+1−δb^ak+1=δbgk+1−δb^gk+1=δgk+1−δg^k+1(17a)(17b)(17c)(17d)(17e)(17f)
令等号右侧到左侧的映射为函数
g
\mathbf{g}
g即可。易知重置后均值为
δ
x
^
k
+
1
+
=
0
\hat{\delta\mathbf{x}}_{k+1}^{+}=\mathbf{0}
δx^k+1+=0,协方差矩阵为
P
^
k
+
1
+
=
J
k
+
1
P
^
k
+
1
J
k
+
1
T
\hat{\mathbf{P}}^{+}_{k+1}=\mathbf{J}_{k+1}\hat{\mathbf{P}}_{k+1}\mathbf{J}_{k+1}^{T}
P^k+1+=Jk+1P^k+1Jk+1T
其中
J
k
+
1
=
∂
g
(
δ
x
k
+
1
)
∂
δ
x
k
+
1
∣
δ
x
^
k
+
1
\mathbf{J}_{k+1}=\left.\frac{\partial\mathbf{g}(\delta\mathbf{x}_{k+1})}{\partial\delta\mathbf{x}_{k+1}}\right|_{\hat{\delta\mathbf{x}}_{k+1}}
Jk+1=∂δxk+1∂g(δxk+1)
δx^k+1
由
(
17
)
(17)
(17)的结构知,
J
k
+
1
=
d
i
a
g
(
I
3
,
I
3
,
J
θ
,
I
3
,
I
3
,
I
3
)
\mathbf{J}_{k+1}=\mathrm{diag}(\mathbf{I}_{3},\mathbf{I}_{3},\mathbf{J}_{\boldsymbol{\theta}},\mathbf{I}_{3},\mathbf{I}_{3},\mathbf{I}_{3})
Jk+1=diag(I3,I3,Jθ,I3,I3,I3),其中
J
θ
=
∂
δ
θ
k
+
1
+
∂
δ
θ
k
+
1
∣
δ
θ
^
k
+
1
=
I
−
1
2
δ
θ
^
k
+
1
∧
\mathbf{J}_{\boldsymbol{\theta}}=\left.\frac{\partial\delta\boldsymbol{\theta}_{k+1}^{+}}{\partial\delta\boldsymbol{\theta}_{k+1}}\right|_{\hat{\delta\boldsymbol{\theta}}_{k+1}}=\mathbf{I}-\frac{1}{2}\hat{\delta\boldsymbol{\theta}}_{k+1}^{\wedge}
Jθ=∂δθk+1∂δθk+1+
δθ^k+1=I−21δθ^k+1∧
故重置后的误差状态服从新的分布,即满足
δ
x
k
+
1
+
∼
N
(
δ
x
^
k
+
1
+
,
P
^
k
+
1
+
)
(18)
\delta\mathbf{x}_{k+1}^{+}\sim\mathcal{N}(\hat{\delta\mathbf{x}}_{k+1}^{+},\hat{\mathbf{P}}^{+}_{k+1})\tag{18}
δxk+1+∼N(δx^k+1+,P^k+1+)(18)
并以此进行下一步的迭代。
从贝叶斯滤波的角度再理解ESKF,可以写出误差状态的贝叶斯滤波公式
p
(
δ
x
k
+
1
∣
δ
x
0
,
u
1
:
k
+
1
,
z
1
:
k
+
1
)
=
η
∗
p
(
z
k
+
1
∣
δ
x
k
+
1
,
δ
x
0
,
u
1
:
k
+
1
,
z
1
:
k
)
∫
p
(
δ
x
k
+
1
∣
δ
x
k
,
δ
x
0
,
u
1
:
k
+
1
,
z
1
:
k
)
p
(
δ
x
k
∣
δ
x
0
,
u
1
:
k
,
z
1
:
k
)
d
δ
x
k
p(\delta\mathbf{x}_{k+1}|\delta\mathbf{x}_{0},\mathbf{u}_{1:k+1},\mathbf{z}_{1:k+1})=\eta\ast p(\mathbf{z}_{k+1}|\mathbf{\delta{x}}_{k+1},\delta\mathbf{x}_{0},\mathbf{u}_{1:k+1},\mathbf{z}_{1:k})\int p(\delta\mathbf{x}_{k+1}|\delta\mathbf{x}_{k},\delta\mathbf{x}_{0},\mathbf{u}_{1:k+1},\mathbf{z}_{1:k})p(\delta\mathbf{x}_{k}|\delta\mathbf{x}_{0},\mathbf{u}_{1:k},\mathbf{z}_{1:k})d\delta\mathbf{x}_{k}
p(δxk+1∣δx0,u1:k+1,z1:k+1)=η∗p(zk+1∣δxk+1,δx0,u1:k+1,z1:k)∫p(δxk+1∣δxk,δx0,u1:k+1,z1:k)p(δxk∣δx0,u1:k,z1:k)dδxk
上式中,积分式(先验)由
(
9
)
,
(
10
)
,
(
18
)
(9),(10),(18)
(9),(10),(18)给出,即预测部分;并通过
(
13
)
(13)
(13)进行校正和更新,算入似然,即观测部分,而名义状态变量相当于系统的时变参数。
实验:ESKF组合导航
本实验通过ESKF,将IMU,卫星导航和轮式编码器进行融合,实现传统的组合导航方案。下面首先研究RTK和轮式编码器这两种实际的传感器的观测方程,即将观测方程的抽象形式 ( 11 ) (11) (11)具体化。
4.1、GNSS观测
得到GNSS观测数据后,可转换为对机体在世界坐标系下的真实位姿的观测
p
~
t
G
k
+
1
,
R
~
t
G
k
+
1
{\tilde{\mathbf{p}}^{G}_{t}}_{k+1},{\tilde{\mathbf{R}}^{G}_{t}}_{k+1}
p~tGk+1,R~tGk+1,观测方程为
p
~
t
G
k
+
1
=
p
t
k
+
1
+
ϵ
p
k
+
1
=
p
ˇ
k
+
1
+
δ
p
k
+
1
+
ϵ
p
k
+
1
R
~
t
G
k
+
1
=
R
t
k
+
1
+
ϵ
R
k
+
1
=
R
ˇ
k
+
1
E
x
p
(
δ
θ
k
+
1
)
+
ϵ
R
k
+
1
\begin{align*} {\tilde{\mathbf{p}}^{G}_{t}}_{k+1}&={\mathbf{p}_{t}}_{k+1}+{\boldsymbol{\epsilon}_{p}}_{k+1}=\check{\mathbf{p}}_{k+1}+\delta\mathbf{p}_{k+1}+{\boldsymbol{\epsilon}_{\mathbf{p}}}_{k+1}\tag{19a}\\ {\tilde{\mathbf{R}}^{G}_{t}}_{k+1}&={\mathbf{R}_{t}}_{k+1}+{\boldsymbol{\epsilon}_{R}}_{k+1}=\check{\mathbf{R}}_{k+1}\mathrm{Exp}(\delta\mathbf{\boldsymbol{\theta}}_{k+1})+{\boldsymbol{\epsilon}_{\mathbf{R}}}_{k+1}\tag{19b}\\ \end{align*}
p~tGk+1R~tGk+1=ptk+1+ϵpk+1=pˇk+1+δpk+1+ϵpk+1=Rtk+1+ϵRk+1=Rˇk+1Exp(δθk+1)+ϵRk+1(19a)(19b)
为更容易求误差状态的雅可比矩阵,将GNSS对真实旋转矩阵的观测转换成对误差旋转向量的观测,即将
(
19
b
)
\mathrm{(19b)}
(19b)写成
L
o
g
(
R
ˇ
k
+
1
T
R
~
t
G
k
+
1
)
=
δ
θ
k
+
1
+
ϵ
θ
k
+
1
(20)
\mathrm{Log}(\check{\mathbf{R}}_{k+1}^{T}{\tilde{\mathbf{R}}^{G}_{t}}_{k+1})=\delta\mathbf{\boldsymbol{\theta}}_{k+1}+{\boldsymbol{\epsilon}_{\boldsymbol\theta}}_{k+1}\tag{20}
Log(Rˇk+1TR~tGk+1)=δθk+1+ϵθk+1(20)
(
19
a
)
(\mathrm{19a})
(19a)和
(
20
)
(20)
(20)共同组成了转换后的观测方程
z
k
+
1
=
[
p
~
t
G
k
+
1
L
o
g
(
R
ˇ
k
+
1
T
R
~
t
G
k
+
1
)
]
=
[
p
ˇ
k
+
1
+
δ
p
k
+
1
+
ϵ
p
k
+
1
δ
θ
k
+
1
+
ϵ
θ
k
+
1
]
=
h
(
x
ˇ
k
+
1
⊕
δ
x
k
+
1
)
+
ϵ
k
+
1
\begin{align*} \mathbf{z}_{k+1} =\begin{bmatrix} {\tilde{\mathbf{p}}^{G}_{t}}_{k+1}\\ \mathrm{Log}(\check{\mathbf{R}}_{k+1}^{T}{\tilde{\mathbf{R}}^{G}_{t}}_{k+1}) \end{bmatrix} =\begin{bmatrix} \check{\mathbf{p}}_{k+1}+\delta\mathbf{p}_{k+1}+{\boldsymbol{\epsilon}_{p}}_{k+1}\\ \delta\mathbf{\boldsymbol{\theta}}_{k+1}+{\boldsymbol{\epsilon}_{\theta}}_{k+1} \end{bmatrix} =\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\delta\mathbf{x}_{k+1})+\boldsymbol{\epsilon}_{k+1}\tag{21} \end{align*}
zk+1=[p~tGk+1Log(Rˇk+1TR~tGk+1)]=[pˇk+1+δpk+1+ϵpk+1δθk+1+ϵθk+1]=h(xˇk+1⊕δxk+1)+ϵk+1(21)
由
(
21
)
(21)
(21)知,误差状态的雅可比矩阵为
H
k
+
1
=
[
I
O
O
O
O
O
O
O
I
O
O
O
]
\begin{align*} \mathbf{H}_{k+1} =\begin{bmatrix} \mathbf{I}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O}\\ \mathbf{O}&\mathbf{O}&\mathbf{I}&\mathbf{O}&\mathbf{O}&\mathbf{O} \end{bmatrix} \end{align*}
Hk+1=[IOOOOIOOOOOO]
该矩阵中各分块矩阵均为
3
×
3
3\times3
3×3矩阵
4.2、轮式编码器观测
得到Odom观测数据后,可转换为对机体在世界坐标系下的真实速度的观测
v
~
t
O
k
+
1
{\tilde{\mathbf{v}}^{O}_{t}}_{k+1}
v~tOk+1,观测方程为
v
~
t
O
k
+
1
=
R
t
k
+
1
v
t
k
+
1
+
ϵ
v
W
k
+
1
=
(
R
ˇ
k
+
1
E
x
p
(
δ
θ
k
+
1
)
)
T
(
v
ˇ
k
+
1
+
δ
v
k
+
1
)
+
ϵ
v
W
k
+
1
(22)
{\tilde{\mathbf{v}}^{O}_{t}}_{k+1}={\mathbf{R}_{t}}_{k+1}{\mathbf{v}_{t}}_{k+1}+{\boldsymbol{\epsilon}_{\mathbf{v}^{W}}}_{k+1}=(\check{\mathbf{R}}_{k+1}\mathrm{Exp}(\delta\mathbf{\boldsymbol{\theta}}_{k+1}))^{T}(\check{\mathbf{v}}_{k+1}+\delta\mathbf{v}_{k+1})+{\boldsymbol{\epsilon}_{\mathbf{v}^{W}}}_{k+1}\tag{22}
v~tOk+1=Rtk+1vtk+1+ϵvWk+1=(Rˇk+1Exp(δθk+1))T(vˇk+1+δvk+1)+ϵvWk+1(22)
为更容易求误差状态的雅可比矩阵,忽略误差旋转向量,只保留当前预测出的旋转矩阵名义状态,并将对机体坐标系下速度的观测转换成对世界坐标系下速度的观测
z
k
+
1
=
R
ˇ
k
+
1
v
~
t
O
k
+
1
=
v
ˇ
k
+
1
+
δ
v
k
+
1
+
ϵ
v
k
+
1
=
h
(
x
ˇ
k
+
1
⊕
δ
x
k
+
1
)
+
ϵ
v
k
+
1
(23)
\mathbf{z}_{k+1}=\check{\mathbf{R}}_{k+1}{\tilde{\mathbf{v}}^{O}_{t}}_{k+1}=\check{\mathbf{v}}_{k+1}+\delta\mathbf{v}_{k+1}+{\boldsymbol{\epsilon}_{\mathbf{v}}}_{k+1}=\mathbf{h}(\check{\mathbf{x}}_{k+1}\oplus\delta\mathbf{x}_{k+1})+{\boldsymbol\epsilon_{\mathbf{v}}}_{k+1}\tag{23}
zk+1=Rˇk+1v~tOk+1=vˇk+1+δvk+1+ϵvk+1=h(xˇk+1⊕δxk+1)+ϵvk+1(23)
由
(
23
)
(23)
(23)知,误差状态的雅可比矩阵为
H
k
+
1
=
[
O
I
O
O
O
O
]
\begin{align*} \mathbf{H}_{k+1} =\begin{bmatrix} \mathbf{O}&\mathbf{I}&\mathbf{O}&\mathbf{O}&\mathbf{O}&\mathbf{O} \end{bmatrix} \end{align*}
Hk+1=[OIOOOO]
该矩阵中各分块矩阵均为
3
×
3
3\times3
3×3矩阵
4.3 实验结果分析
ESKF通过将IMU与卫星导航进行组合,得到GINS(GNSS-INS)系统,该系统将IMU观测与GNSS观测进行融合,融合结果整体趋近于GNSS观测,但获得了相比于GNSS更高的频率(因为IMU频率更高)。通过下图可以看到,存在某些RTK信号不良的场合,ESKF会缺少观测,位移部分呈快速发散状态,当RTK恢复以后,位移部分会收敛到RTK轨迹上。
如果长时间缺少RTK观测数据,ESKF就变为纯靠IMU积分的递推模式,该模式下位移将很快发散,位移发散的主要原因是缺少速度观测,导致速度发散。 引入速度传感器,如轮式编码器,将速度测量融入ESKF,则可以限制速度的发散。通过下图可以看到,几处因缺少RTK观测而发散的地方得到了明显改善,可见速度观测对于组合导航是有积极作用的。
附录
§1、向量函数的一阶泰勒展开
若一个多元向量函数
f
=
[
f
1
,
⋯
,
f
M
]
T
:
R
N
→
R
M
\mathbf{f}=[f_{1},\cdots,f_{M}]^{T}:\mathbb{R}^{N}\rightarrow\mathbb{R}^{M}
f=[f1,⋯,fM]T:RN→RM在
x
\mathbf{x}
x点处可微,则存在
x
\mathbf{x}
x的邻域
U
(
x
,
δ
)
=
{
x
+
Δ
x
∣
∥
Δ
x
∥
<
δ
}
U(\mathbf{x},\delta)=\{\mathbf{x}+\Delta\mathbf{x}|\|\Delta\mathbf{x}\|<\delta\}
U(x,δ)={x+Δx∣∥Δx∥<δ},使得在该邻域中
f
(
x
+
Δ
x
)
=
f
(
x
)
+
J
f
(
x
)
Δ
x
+
o
(
∥
Δ
x
∥
)
(A1)
\mathbf{f}(\mathbf{x}+\Delta\mathbf{x})=\mathbf{f}(\mathbf{x})+\mathbf{J}\mathbf{f}(\mathbf{x})\Delta\mathbf{x}+\mathrm{o}(\|\Delta\mathbf{x}\|)\tag{A1}
f(x+Δx)=f(x)+Jf(x)Δx+o(∥Δx∥)(A1)
其中
J
f
(
x
)
=
∇
f
(
x
)
T
=
lim
Δ
x
→
0
f
(
x
+
Δ
x
)
−
f
(
x
)
Δ
x
T
∈
R
M
×
N
\mathbf{J}\mathbf{f}(\mathbf{x})=\nabla\mathbf{f}(\mathbf{x})^{T}=\lim_{\Delta\mathbf{x}\rightarrow\mathbf{0}}\frac{\mathbf{f}(\mathbf{x}+\Delta\mathbf{x})-\mathbf{f}(\mathbf{x})}{\Delta\mathbf{x}^{T}}\in\mathbb{R}^{M\times N}
Jf(x)=∇f(x)T=limΔx→0ΔxTf(x+Δx)−f(x)∈RM×N称为雅可比矩阵。
( A 4 ) \mathrm{(A4)} (A4)称为多元向量函数 f \mathbf{f} f的一阶泰勒展开。
下面根据上述理论推导当 f \mathbf{f} f的定义域为非欧式空间 D o m ( x ) \mathrm{Dom}(\mathbf{x}) Dom(x)时的一阶泰勒展开
记
h
(
Δ
x
)
=
f
(
x
⊕
Δ
x
)
\mathbf{h}(\Delta\mathbf{x})=\mathbf{f}(\mathbf{x}\oplus\Delta\mathbf{x})
h(Δx)=f(x⊕Δx),故
h
:
R
N
→
R
M
\mathbf{h}:\mathbb{R}^{N}\rightarrow\mathbb{R}^{M}
h:RN→RM,
⊕
:
D
o
m
(
x
)
×
R
N
→
D
o
m
(
x
)
\oplus:\mathrm{Dom}(\mathbf{x})\times\mathbb{R}^{N}\rightarrow\mathrm{Dom}(\mathbf{x})
⊕:Dom(x)×RN→Dom(x),若
h
\mathbf{h}
h在
0
\mathbf{0}
0点处可微,则存在
0
\mathbf{0}
0的邻域
U
(
0
,
δ
)
=
{
Δ
x
∣
∥
Δ
x
∥
<
δ
}
U(\mathbf{0},\delta)=\{\Delta\mathbf{x}|\|\Delta\mathbf{x}\|<\delta\}
U(0,δ)={Δx∣∥Δx∥<δ},使得在该邻域中
h
(
Δ
x
)
=
h
(
0
)
+
J
h
(
0
)
Δ
x
+
o
(
∥
Δ
x
∥
)
(A2)
\mathbf{h}(\Delta\mathbf{x})=\mathbf{h}(\mathbf{0})+\mathbf{J}\mathbf{h}(\mathbf{0})\Delta\mathbf{x}+\mathrm{o}(\|\Delta\mathbf{x}\|)\tag{A2}
h(Δx)=h(0)+Jh(0)Δx+o(∥Δx∥)(A2)
其中
J
h
(
0
)
=
∇
f
(
x
)
T
=
lim
Δ
x
→
0
h
(
Δ
x
)
−
h
(
0
)
Δ
x
T
=
lim
Δ
x
→
0
f
(
x
⊕
Δ
x
)
−
f
(
x
)
Δ
x
T
∈
R
M
×
N
\mathbf{J}\mathbf{h}(\mathbf{0})=\nabla\mathbf{f}(\mathbf{x})^{T}=\lim_{\Delta\mathbf{x}\rightarrow\mathbf{0}}\frac{\mathbf{h}(\Delta\mathbf{x})-\mathbf{h}(\mathbf{0})}{\Delta\mathbf{x}^{T}}=\lim_{\Delta\mathbf{x}\rightarrow\mathbf{0}}\frac{\mathbf{f}(\mathbf{x}\oplus\Delta\mathbf{x})-\mathbf{f}(\mathbf{x})}{\Delta\mathbf{x}^{T}}\in\mathbb{R}^{M\times N}
Jh(0)=∇f(x)T=limΔx→0ΔxTh(Δx)−h(0)=limΔx→0ΔxTf(x⊕Δx)−f(x)∈RM×N,可以发现
J
h
(
0
)
\mathbf{J}\mathbf{h}(\mathbf{0})
Jh(0)和
(
A
4
)
\mathrm{(A4)}
(A4)中
J
f
(
x
)
\mathbf{J}\mathbf{f}(\mathbf{x})
Jf(x)具有类似的结构,故记
J
f
(
x
)
=
J
h
(
0
)
\mathbf{J}\mathbf{f}(\mathbf{x})=\mathbf{J}\mathbf{h}(\mathbf{0})
Jf(x)=Jh(0),仍称
J
f
(
x
)
\mathbf{J}\mathbf{f}(\mathbf{x})
Jf(x)为对增量
Δ
x
\Delta\mathbf{x}
Δx的雅可比矩阵。
综上,
(
A
5
)
\mathrm{(A5)}
(A5)也可以写成
f
(
x
⊕
Δ
x
)
=
f
(
x
)
+
J
f
(
x
)
Δ
x
+
o
(
∥
Δ
x
∥
)
(A3)
\mathbf{f}(\mathbf{x}\oplus\Delta\mathbf{x})=\mathbf{f}(\mathbf{x})+\mathbf{J}\mathbf{f}(\mathbf{x})\Delta\mathbf{x}+\mathrm{o}(\|\Delta\mathbf{x}\|)\tag{A3}
f(x⊕Δx)=f(x)+Jf(x)Δx+o(∥Δx∥)(A3)
(
A
6
)
\mathrm{(A6)}
(A6)称为
D
o
m
(
x
)
\mathrm{Dom}(\mathbf{x})
Dom(x)上的向量函数
f
\mathbf{f}
f的一阶泰勒展开。
为简便起见,常将上面的雅可比矩阵用 J ( ⋅ ) \mathbf{J}(\cdot) J(⋅)代替
§2、极限形式的多元向量函数导数
若一个多元向量函数
f
=
[
f
1
,
⋯
,
f
M
]
T
:
R
N
→
R
M
\mathbf{f}=[f_{1},\cdots,f_{M}]^{T}:\mathbb{R}^{N}\rightarrow\mathbb{R}^{M}
f=[f1,⋯,fM]T:RN→RM在
x
\mathbf{x}
x点处可微,则
lim
Δ
x
→
0
f
(
x
+
Δ
x
)
−
f
(
x
)
Δ
x
T
=
∂
f
∂
x
T
=
[
∂
f
1
∂
x
1
⋯
∂
f
1
∂
x
N
⋮
⋱
⋮
∂
f
M
∂
x
1
⋯
∂
f
M
∂
x
N
]
M
×
N
\lim_{\Delta\mathbf{x}\rightarrow\mathbf{0}}\frac{\mathbf{f}(\mathbf{x}+\Delta\mathbf{x})-\mathbf{f}(\mathbf{x})}{\Delta\mathbf{x}^{T}}=\frac{\partial{\mathbf{f}}}{\partial\mathbf{x}^{T}} =\begin{bmatrix} \frac{\partial{f}_{1}}{\partial{x}_{1}}&\cdots&\frac{\partial{f}_{1}}{\partial{x}_{N}}\\ \vdots&\ddots&\vdots\\ \frac{\partial{f}_{M}}{\partial{x}_{1}}&\cdots&\frac{\partial{f}_{M}}{\partial{x}_{N}} \end{bmatrix}_{M\times{N}}
Δx→0limΔxTf(x+Δx)−f(x)=∂xT∂f=
∂x1∂f1⋮∂x1∂fM⋯⋱⋯∂xN∂f1⋮∂xN∂fM
M×N
在SLAM领域,通常省略上式中的转置符号,直接记为
lim
Δ
x
→
0
f
(
x
+
Δ
x
)
−
f
(
x
)
Δ
x
=
∂
f
∂
x
=
[
∂
f
1
∂
x
1
⋯
∂
f
1
∂
x
N
⋮
⋱
⋮
∂
f
M
∂
x
1
⋯
∂
f
M
∂
x
N
]
M
×
N
(A4)
\lim_{\Delta\mathbf{x}\rightarrow\mathbf{0}}\frac{\mathbf{f}(\mathbf{x}+\Delta\mathbf{x})-\mathbf{f}(\mathbf{x})}{\Delta\mathbf{x}}=\frac{\partial{\mathbf{f}}}{\partial\mathbf{x}} =\begin{bmatrix} \frac{\partial{f}_{1}}{\partial{x}_{1}}&\cdots&\frac{\partial{f}_{1}}{\partial{x}_{N}}\\ \vdots&\ddots&\vdots\\ \frac{\partial{f}_{M}}{\partial{x}_{1}}&\cdots&\frac{\partial{f}_{M}}{\partial{x}_{N}} \end{bmatrix}_{M\times{N}}\tag{A4}
Δx→0limΔxf(x+Δx)−f(x)=∂x∂f=
∂x1∂f1⋮∂x1∂fM⋯⋱⋯∂xN∂f1⋮∂xN∂fM
M×N(A4)
在
(
A
7
)
\mathrm{(A7)}
(A7)定义下,
∂
A
x
∂
x
=
A
\frac{\partial\mathbf{Ax}}{\partial\mathbf{x}}=\mathbf{A}
∂x∂Ax=A