题目: 流形上的迭代测量更新 - Notes for “Kalman Filter on Differentiable Manifolds” - IKFoM (IV)
前言
Dongjiao He, Wei Xu, Fu Zhang 的论文 “Kalman Filter on Differentiable Manifolds”[1] 中构建了 IKFoM (“流形上的迭代 Kalman 滤波”). 该论文的知识含量很丰富, 对机器人姿态估计 Kalman Filter 进行了完整和深刻的论述, 需要认认真真读. 对初学者而言, 可能觉得流形上的公式太抽象太复杂了, 我自己也是这么觉得. 但抽丝剥茧慢慢理清后, 还是很有收获的.
书接上回, 我们本篇博客对其迭代测量更新部分进行详细推导和说明.
往期回顾
涉及到的之前内容可以查看
- 流形上的运动学 - Notes for “Kalman Filter on Differentiable Manifolds“ - IKFoM (I)
- 流形上的复合函数偏导数 - Notes for “Kalman Filter on Differentiable Manifolds“ - IKFoM (II)
- 流形上的状态预测及误差传播 - Notes for “Kalman Filter on Differentiable Manifolds” - IKFoM (III)
后期展望
- 流形上的投影雅可比矩阵 (Jacobian Matrix) - Notes for “Kalman Filter on Differentiable Manifolds” - IKFoM (V)
- 基于 Boost Preprocessor 的 Manifold Toolkit (MTK) 通用流形类构建 —— IKFoM 中实现的源码解读
本篇博客涉及的基础运算的设定、系统方程、误差方程、协方差计算等相关前设内容, 基本上都已在上面第三篇博客中陈述了, 我们不再重复.
由上一篇博客知道, 在预测过程中
- 系统状态根据状态预测方程进行预测;
- 系统状态的误差协方差是通过误差状态的误差协方差来求得的;
- 误差状态的预测值一直为零.
接下来要讨论的迭代测量更新过程, 我们将根据获得的测量值
- 更新误差状态的估计值
- 在不同的局部同胚"切平面"之间投影误差状态的协方差
- 更新系统状态
- 将误差协方差向更新后的系统状态对应的局部同胚"切平面"进行投影
- 迭代更新过程的可视化说明
I. 预备知识
1. 迭代扩展卡尔曼滤波的测量更新
Iterated Extended Kalman Filter Measurement Update[2]
Step 1: (Initialization) Set the iteration i = 0 i = 0 i=0, and set the predictive estimate as the initial state
x ^ k + 1 0 = x ^ k + 1 ∣ k (I-1) \hat{\mathbf{x}}_{k+1}^{0} = \hat{\mathbf{x}}_{k+1 | k} \tag{I-1} x^k+10=x^k+1∣k(I-1)
with the predictive covariance as the initial covariance P k + 1 ∣ k \mathbf{P}_{k+1 | k} Pk+1∣kStep 2: (Measurement Update Iterations) Compute the Jacobi matrix at the last state estmate available, the Kaman gain, and the next iteration of the state estimate as
H k + 1 i = ∂ h k + 1 ( s ) ∂ s ∣ x ^ k + 1 i (I-2) \mathbf{H}_{k+1}^{i} = \left. \frac{\partial{\mathbf{h}_{k+1}(\mathbf{s})}}{\partial \mathbf{s}} \right|_{\hat{\mathbf{x}}_{k+1}^{i}} \tag{I-2} Hk+1i=∂s∂hk+1(s) x^k+1i(I-2)K k + 1 i = P k + 1 ∣ k ( H k + 1 i ) T ( H k + 1 i P k + 1 ∣ k ( H k + 1 i ) T + R k + 1 ) − 1 (I-3) \mathbf{K}_{k+1}^{i} = \mathbf{P}_{k+1 | k} (\mathbf{H}_{k+1}^{i})^{\small \rm T} \left( \mathbf{H}_{k+1}^{i} \mathbf{P}_{k+1 | k} (\mathbf{H}_{k+1}^{i})^{\small \rm T} + \mathcal{R}_{k+1} \right)^{\rm\small{-1}} \tag{I-3} Kk+1i=Pk+1∣k(Hk+1i)T(Hk+1iPk+1∣k(Hk+1i)T+Rk+1)−1(I-3)
x ^ k + 1 i + 1 = x ^ k + 1 ∣ k + K k + 1 i [ z k + 1 − h k + 1 ( x ^ k + 1 i ) − H k + 1 i ( x k + 1 ∣ k − x ^ k + 1 i ) ] (I-4) \hat{\mathbf{x}}_{k+1}^{i+1} = \hat{\mathbf{x}}_{k+1 | k} + \mathbf{K}_{k+1}^{i} \left[\mathbf{z}_{k+1} - \mathbf{h}_{k+1}(\hat{\mathbf{x}}_{k+1}^{i})- \mathbf{H}_{k+1}^{i}(\mathbf{x}_{k+1 | k} - \hat{\mathbf{x}}_{k+1}^{i}) \right] \tag{I-4} x^k+1i+1=x^k+1∣k+Kk+1i[zk+1−hk+1(x^k+1i)−Hk+1i(xk+1∣k−x^k+1i)](I-4)
Repeat Step 2 with i = i + 1 i=i+1 i=i+1 untial a stopping criterion is met, such as, (1) a maximum number of iterations , or (2) a negligible change between two consecutive iterations.
Step 3: (Updating the State and Covariance) Save the last iteration as the new filtering mean and compute the covariance matrix based on the last iteration
x ^ k + 1 ∣ k + 1 = x ^ k + 1 i + 1 (I-5) \hat{\mathbf{x}}_{k+1 | k+1} = \hat{\mathbf{x}}_{k+1}^{i+1} \tag{I-5} x^k+1∣k+1=x^k+1i+1(I-5)P k + 1 ∣ k + 1 = ( I − K k + 1 i H k + 1 i ) P k + 1 ∣ k (I-6) \mathbf{P}_{k+1 | k+1} = (\mathbf{I} - \mathbf{K}_{k+1}^{i} \mathbf{H}_{k+1}^{i})\mathbf{P}_{k+1 | k} \tag{I-6} Pk+1∣k+1=(I−Kk+1iHk+1i)Pk+1∣k(I-6)
流形上迭代卡尔曼滤波 IKFoM 会借助误差状态来实现计算, 因为误差状态处在与流形局部同胚的线性空间, 相比流形本身具有更好的可计算性.
此处之所以先把欧式空间中的迭代扩展卡尔曼滤波进行展示, 更多是为了帮助在流形上对应部分的理解.
2. 贝叶斯定理
贝叶斯定理 Bayes’ Theorem[3]
参数 θ \theta θ 的后验概率函数 (或后验概率分布)
P ( θ ∣ x ) = P ( θ ) ⋅ P ( x ∣ θ ) P ( x ) (I-7) P(\theta | \mathbf{x}) = \frac{P(\theta) \cdot P(\mathbf{x} | \theta)}{P(\mathbf{x})} \tag{I-7} P(θ∣x)=P(x)P(θ)⋅P(x∣θ)(I-7)后验概率 Posterior Probability 是未知参数 θ \theta θ 基于试验和测量后得到的概率. 即已经测得样本数据 x \mathbf{x} x (数据 x \mathbf{x} x 代表的事件发生) 的情况下, 事件发生的原因是由某个因素 (参数 θ \theta θ 刻画) 引起的可能性的大小.
称 P ( θ ) P(\theta) P(θ) 为关于参数 θ \theta θ 的先验概率 Prior Beliefs, 是根据以往经验或者分析得到参数 θ \theta θ 的发生概率.
称 P ( x ∣ θ ) P(\mathbf{x} | \theta) P(x∣θ) 为似然 Likelihood, 描述了取得这指定样本数据的概率值, 而这个概率值由未知参数 θ \theta θ 决定. 直白一点就是假定参数 θ \theta θ 情况下, 某个样本事件 x \mathbf{x} x 发生的概率.
式 (I-7) 分母中 P ( x ) P(\mathbf{x}) P(x) 是样本数据 x \mathbf{x} x 被检测到 (数据 x \mathbf{x} x 代表的事件发生) 的概率总和, 利用全概率公式计算
P ( x ) = { ∫ θ P ( θ ) P ( x ∣ θ ) d θ if θ is continuous ∑ θ P ( θ ) P ( x ∣ θ ) if θ is discrete P(\mathbf{x})= \left\{ \begin{aligned} &\int_{\theta} P(\theta)P(\mathbf{x}| \theta) d\theta &\text{if } \theta \text{ is continuous}\\ &\sum_{\theta} P(\theta) P(\mathbf{x}| \theta) &\text{if } \theta \text{ is discrete} \end{aligned} \right. P(x)=⎩ ⎨ ⎧∫θP(θ)P(x∣θ)dθθ∑P(θ)P(x∣θ)if θ is continuousif θ is discrete
全概率 P ( x ) P(\mathbf{x}) P(x) 并不是参数 θ \theta θ 的函数. 故式 (I-7) 可以重写为
P ( θ ∣ x ) ∝ P ( θ ) ⋅ P ( x ∣ θ ) i.e. posterior ∝ prior × likelihood (I-8) P(\theta | \mathbf{x}) \propto P(\theta) \cdot P(\mathbf{x}| \theta)\\ \text{i.e. posterior } \propto \text{ prior}\, \times\, \text{likelihood} \tag{I-8} P(θ∣x)∝P(θ)⋅P(x∣θ)i.e. posterior ∝ prior×likelihood(I-8)
3. 最大后验估计
最大后验估计 The Maximum a Posteriori Estimator
The Maximum a Posteriori (MAP) Estimator of θ \theta θ is the value of θ \theta θ that maximizes the posterior distribution of θ \theta θ.
θ MAP = arg max θ P ( θ ∣ x ) (I-9) \theta_{\text{MAP}} = \underset{\theta}{\arg \max} P(\theta | \mathbf{x}) \tag{I-9} θMAP=θargmaxP(θ∣x)(I-9)
将贝叶斯定理中式 (I-8) 代入, 并利用 l o g log log 函数的单调性, 得到
θ MAP = arg max θ P ( θ ∣ x ) = arg max log θ ( P ( θ ) ⋅ P ( x ∣ θ ) ) (I-10) \theta_{\text{MAP}} = \underset{\theta}{\arg \max} \,P(\theta | \mathbf{x}) = \underset{\theta}{\arg \max \log} \left( P(\theta) \cdot P(\mathbf{x}| \theta)\right) \tag{I-10} θMAP=θargmaxP(θ∣x)=θargmaxlog(P(θ)⋅P(x∣θ))(I-10)
II. 误差融合估计
在 k + 1 k+1 k+1 时刻获得新的测量值 z k + 1 \mathbf{z}_{k+1} zk+1 后的更新过程, 这是一个状态预测值根据测量值的修正过程, 最终获得一个最大后验估计值. 这也是预测信息和测量信息融合的过程. 如同预测过程一样, 为了实现流形上的计算, 借助误差状态进行迭代更新以及误差协方差计算.
下面的推导过程中, 在几何上可以局部同胚、投影、正交投影 (最小二乘法) 等解释; 在贝叶斯角度下, 可以视作先验概率、似然概率、最大后验估计等.
1. 初始误差
误差状态
δ
x
k
+
1
∣
k
\delta\mathbf{x}_{k+1 | k}
δxk+1∣k 在状态预测值
x
k
+
1
∣
k
\mathbf{x}_{k+1 | k}
xk+1∣k 附近与状态真实值
x
k
+
1
\mathbf{x}_{k+1}
xk+1 局部同胚. 将误差状态
δ
x
k
+
1
∣
k
\delta\mathbf{x}_{k+1 | k}
δxk+1∣k 的均值和协方差描述的分布作为迭代更新的初始分布.
δ
x
k
+
1
∣
k
≜
x
k
+
1
⊟
x
k
+
1
∣
k
∼
N
(
0
,
P
k
+
1
∣
k
)
(II-1-1)
\delta\mathbf{x}_{k+1 | k} \triangleq \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k} \quad \sim \quad \mathcal{N}(\mathbf{0}, \mathbf{P}_{k+1 | k})\tag{II-1-1}
δxk+1∣k≜xk+1⊟xk+1∣k∼N(0,Pk+1∣k)(II-1-1)
记
x
k
+
1
∣
k
+
1
j
\mathbf{x}_{k+1 | k+1}^{j}
xk+1∣k+1j 为第
j
j
j 次迭代修正的系统状态的估计值. 当
j
=
0
j=0
j=0 时,
x
k
+
1
∣
k
+
1
j
=
x
k
+
1
∣
k
\mathbf{x}_{k+1 | k+1}^{j} = \mathbf{x}_{k+1 | k}
xk+1∣k+1j=xk+1∣k.
2. 测量残差与似然概率
如同误差状态的定义一样, 构造测量残差为真实的测量值减去预测的测量值, 即
r
k
+
1
j
≜
z
k
+
1
⊟
h
(
x
k
+
1
∣
k
+
1
j
,
0
)
(II-2-1)
\mathbf{r}_{k+1}^{j} \triangleq \mathbf{z}_{k+1} \boxminus \mathbf{h}(\mathbf{x}_{k+1 | k+1}^{j}, \mathbf{0}) \tag{II-2-1}
rk+1j≜zk+1⊟h(xk+1∣k+1j,0)(II-2-1)
下面的分析中,假设测量向量
z
k
+
1
∈
R
m
\mathbf{z}_{k+1} \in \mathbb{R}^{m}
zk+1∈Rm.
通过新定义迭代误差状态建立真实状态值与迭代修正值之间的关系
δ
x
j
≜
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
j
(II-2-2)
\delta \mathbf{x}_j \triangleq \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}^j \tag{II-2-2}
δxj≜xk+1⊟xk+1∣k+1j(II-2-2)
δ
x
j
∈
R
n
\delta \mathbf{x}_j \in \mathbb{R}^n
δxj∈Rn 与
x
k
+
1
∈
M
s
\mathbf{x}_{k+1}\in \mathcal{M}_{\mathcal{s}}
xk+1∈Ms 在
x
k
+
1
∣
k
+
1
j
\mathbf{x}_{k+1 | k+1}^j
xk+1∣k+1j 附近局部同胚. 以贝叶斯的观点, 将视
δ
x
j
\delta \mathbf{x}_j
δxj 为贝叶斯公式中的随机参数 (
θ
\theta
θ) —— 待估计的值.
将上一篇博客中的测量方程 (Measurement equation) 代入式 (II-2-1) , 并在 “点”
(
δ
x
j
=
0
,
v
k
+
1
=
0
)
(\delta\mathbf{x}_j =\mathbf{0}, \mathbf{v}_{k+1} =\mathbf{0})
(δxj=0,vk+1=0) 附近进行一阶泰勒展开获得线性化结果
r
k
+
1
j
=
h
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
,
v
k
+
1
)
⊟
h
(
x
k
+
1
∣
k
+
1
j
,
0
)
≈
D
k
+
1
j
v
k
+
1
+
H
k
+
1
j
δ
x
j
(II-2-3)
\begin{aligned} \mathbf{r}_{k+1}^{j} & = \mathbf{h}(\mathbf{x}_{k+1|k+1}^j \boxplus \delta\mathbf{x}_j, \mathbf{v}_{k+1}) \boxminus \mathbf{h}(\mathbf{x}_{k+1|k+1}^j , \mathbf{0})\\ & \approx \mathbf{D}_{k+1}^j \mathbf{v}_{k+1} + \mathbf{H}_{k+1}^j \delta \mathbf{x}_j \end{aligned}\tag{II-2-3}
rk+1j=h(xk+1∣k+1j⊞δxj,vk+1)⊟h(xk+1∣k+1j,0)≈Dk+1jvk+1+Hk+1jδxj(II-2-3)
当测量为
R
m
\mathbb{R}^m
Rm 空间上的向量时 (保证偏微分的可行性), 计算
H
k
+
1
j
=
∂
h
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
,
0
)
∂
δ
x
j
∣
δ
x
j
=
0
(II-2-4)
\mathbf{H}_{k+1}^j = \left.\frac{\partial \mathbf{h}(\mathbf{x}_{k+1|k+1}^j \boxplus \delta\mathbf{x}_j, \mathbf{0}) }{\partial \delta \mathbf{x}_j}\right|_{\delta \mathbf{x}_j = \mathbf{0}} \tag{II-2-4}
Hk+1j=∂δxj∂h(xk+1∣k+1j⊞δxj,0)
δxj=0(II-2-4)
及
D
k
+
1
j
=
∂
h
(
x
k
+
1
∣
k
+
1
j
,
v
k
+
1
)
∂
v
k
+
1
∣
v
k
+
1
=
0
(II-2-5)
\mathbf{D}_{k+1}^j = \left.\frac{\partial \mathbf{h}(\mathbf{x}_{k+1|k+1}^j, \mathbf{v}_{k+1}) }{\partial \mathbf{v}_{k+1}}\right|_{\mathbf{v}_{k+1} = \mathbf{0}} \tag{II-2-5}
Dk+1j=∂vk+1∂h(xk+1∣k+1j,vk+1)
vk+1=0(II-2-5)
H
k
+
1
j
δ
x
j
\mathbf{H}_{k+1}^j \delta \mathbf{x}_j
Hk+1jδxj 作为
r
k
+
1
j
\mathbf{r}_{k+1}^{j}
rk+1j 的预测.
由上一篇博客中测量噪声的已知分布,
D
k
+
1
j
v
k
+
1
=
r
k
+
1
j
−
H
k
+
1
j
δ
x
j
∼
N
(
0
,
R
ˉ
k
+
1
j
)
(II-2-6)
\mathbf{D}_{k+1}^j \mathbf{v}_{k+1} = \mathbf{r}_{k+1}^{j} - \mathbf{H}_{k+1}^j \delta \mathbf{x}_j \quad \sim\quad \mathcal{N}(\mathbf{0}, \bar{\mathcal{R}}_{k+1}^{j}) \tag{II-2-6}
Dk+1jvk+1=rk+1j−Hk+1jδxj∼N(0,Rˉk+1j)(II-2-6)
其中
R
ˉ
k
+
1
j
=
D
k
+
1
j
R
k
+
1
(
D
k
+
1
j
)
T
(II-2-7)
\bar{\mathcal{R}}_{k+1}^{\color{red}j} =\mathbf{D}_{k+1}^{j} {\mathcal{R}}_{k+1} (\mathbf{D}_{k+1}^j)^{\small\rm T} \tag{II-2-7}
Rˉk+1j=Dk+1jRk+1(Dk+1j)T(II-2-7)
R
ˉ
k
+
1
j
\bar{\mathcal{R}}_{k+1}^{\color{red}j}
Rˉk+1j 也是基于"点"
x
k
+
1
∣
k
+
1
j
\mathbf{x}_{k+1|k+1}^j
xk+1∣k+1j 有关联, 故有上标
j
j
j.
结合式 (II-2-1) 和式 (II-2-3) 可知
z
k
+
1
=
h
(
x
k
+
1
∣
k
+
1
j
,
0
)
⊞
r
k
+
1
j
⇒
z
k
+
1
‾
测量值
=
h
(
x
k
+
1
∣
k
+
1
j
,
0
)
‾
确定值
⊞
(
D
k
+
1
j
v
k
+
1
‾
测量随机噪声
+
H
k
+
1
j
δ
x
j
‾
随机参数
)
(II-2-8)
\begin{aligned} \mathbf{z}_{k+1} &= \mathbf{h}(\mathbf{x}_{k+1 | k+1}^{j}, \mathbf{0}) \boxplus \mathbf{r}_{k+1}^{j}\\ \Rightarrow \qquad \underset{测量值}{\underline{\mathbf{z}_{k+1}}} &= \underset{确定值}{\underline{\mathbf{h}(\mathbf{x}_{k+1 | k+1}^{j}, \mathbf{0})}} \boxplus (\underset{测量随机噪声}{\underline{\mathbf{D}_{k+1}^j \mathbf{v}_{k+1}}} + \mathbf{H}_{k+1}^j \underset{随机参数}{\underline{\delta \mathbf{x}_j}}) \end{aligned} \tag{II-2-8}
zk+1⇒测量值zk+1=h(xk+1∣k+1j,0)⊞rk+1j=确定值h(xk+1∣k+1j,0)⊞(测量随机噪声Dk+1jvk+1+Hk+1j随机参数δxj)(II-2-8)
实际上, 测量随机噪声
D
k
+
1
j
v
k
+
1
\mathbf{D}_{k+1}^j \mathbf{v}_{k+1}
Dk+1jvk+1 和作为随机参数
δ
x
j
\delta \mathbf{x}_j
δxj 之间是相互独立的. 故由式 (II-2-6) 我们可以知道, 在某个随机参数
δ
x
j
{\delta \mathbf{x}_j}
δxj 下, 测量数据
z
k
+
1
{\mathbf{z}_{k+1}}
zk+1 的条件概率, 受随机测量噪声的影响.
P
(
z
k
+
1
∣
δ
x
j
)
=
P
(
D
k
+
1
j
v
k
+
1
)
=
N
(
D
k
+
1
j
v
k
+
1
)
∣
N
(
0
,
R
ˉ
k
+
1
)
(II-2-9)
P(\mathbf{z}_{k+1} | \delta \mathbf{x}_j) =P(\mathbf{D}_{k+1}^j \mathbf{v}_{k+1}) = \left. \mathcal{N}(\mathbf{D}_{k+1}^j \mathbf{v}_{k+1})\right|_{\mathcal{N}(\mathbf{0}, \bar{\mathcal{R}}_{k+1})}\tag{II-2-9}
P(zk+1∣δxj)=P(Dk+1jvk+1)=N(Dk+1jvk+1)
N(0,Rˉk+1)(II-2-9)
其中
N
(
D
k
+
1
j
v
k
+
1
)
∣
N
(
0
,
R
ˉ
k
+
1
)
\left. \mathcal{N}(\mathbf{D}_{k+1}^j \mathbf{v}_{k+1})\right|_{\mathcal{N}(\mathbf{0}, \bar{\mathcal{R}}_{k+1})}
N(Dk+1jvk+1)
N(0,Rˉk+1) 表示如果随机变量满足正态分布
N
(
0
,
R
ˉ
k
+
1
j
)
{\mathcal{N}(\mathbf{0}, \bar{\mathcal{R}}_{k+1}^j)}
N(0,Rˉk+1j), 当随机变量的值为
D
k
+
1
j
v
k
+
1
\mathbf{D}_{k+1}^j \mathbf{v}_{k+1}
Dk+1jvk+1 时的概率密度值. 在清楚知道对应的正态概率分布情况下, 可简写为
N
(
D
k
+
1
j
v
k
+
1
)
\mathcal{N}(\mathbf{D}_{k+1}^j \mathbf{v}_{k+1})
N(Dk+1jvk+1).
我们将 P ( z k + 1 ∣ δ x j ) P(\mathbf{z}_{k+1} | \delta \mathbf{x}_j) P(zk+1∣δxj) 作为似然概率.
3. 误差投影与先验概率
为了运用贝叶斯公式, 下面我们需要计算先验概率 δ x j \delta \mathbf{x}_j δxj.
几何上, 要实现式 (II-1-1) 中初始误差和式 (II-2-6) 中测量残差之间的融合, 我们需要将误差投影到相同的局部切空间.
由式 (I-1-1) 及式 (II-2-2) 可知
δ
x
k
+
1
∣
k
=
x
k
+
1
⊟
x
k
+
1
∣
k
=
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
(II-3-1)
\delta\mathbf{x}_{k+1 | k} = \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k} = (\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k} \tag{II-3-1}
δxk+1∣k=xk+1⊟xk+1∣k=(xk+1∣k+1j⊞δxj)⊟xk+1∣k(II-3-1)
对
δ
x
k
+
1
∣
k
\delta\mathbf{x}_{k+1 | k}
δxk+1∣k 在
δ
x
j
=
0
\delta \mathbf{x}_j = \mathbf{0}
δxj=0 处进行一阶泰勒展开, 得到
δ
x
k
+
1
∣
k
=
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
+
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
∂
δ
x
j
∣
δ
x
j
=
0
⋅
δ
x
j
(II-3-2)
\delta\mathbf{x}_{k+1 | k} = (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}) + \left.\frac{\partial \left((\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k}\right)}{\partial \delta \mathbf{x}_j}\right|_{\delta \mathbf{x}_j=\mathbf{0}}\cdot \delta \mathbf{x}_j \tag{II-3-2}
δxk+1∣k=(xk+1∣k+1j⊟xk+1∣k)+∂δxj∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k)
δxj=0⋅δxj(II-3-2)
我们这里要求的是由
δ
x
k
+
1
∣
k
\delta\mathbf{x}_{k+1 | k}
δxk+1∣k 推演得到的
δ
x
j
\delta \mathbf{x}_j
δxj 及其误差分布. 故我们式 (II-3-2) 要变为
δ
x
j
=
∂
δ
x
j
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
∣
δ
x
j
=
0
[
δ
x
k
+
1
∣
k
−
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
]
(II-3-3)
\delta \mathbf{x}_j = \left.\frac{\partial \delta \mathbf{x}_j}{\partial \left((\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k}\right) }\right|_{\delta \mathbf{x}_j=\mathbf{0}} \left[ \delta\mathbf{x}_{k+1 | k} - (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}) \right] \tag{II-3-3}
δxj=∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k)∂δxj
δxj=0[δxk+1∣k−(xk+1∣k+1j⊟xk+1∣k)](II-3-3)
式 (II-3-3) 描述了
δ
x
k
+
1
∣
k
\delta\mathbf{x}_{k+1 | k}
δxk+1∣k 向
δ
x
j
\delta \mathbf{x}_j
δxj 的几何投影.
我们先定义投影的 Jacobian, 并按照上一篇博客中
⊞
\boxplus
⊞ /
⊟
\boxminus
⊟ 的定义及运算规则凑成标准形式
J
k
+
1
j
≜
∂
δ
x
j
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
∣
δ
x
j
=
0
[
(
x
⊞
u
)
⊟
x
=
u
]
=
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
+
1
j
)
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
∣
δ
x
j
=
0
[
x
⊞
(
y
⊟
x
)
=
y
]
=
∂
(
[
x
k
+
1
∣
k
⊞
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
]
⊟
x
k
+
1
∣
k
+
1
j
)
∂
(
(
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
)
⊟
x
k
+
1
∣
k
)
∣
δ
x
j
=
0
[
δ
x
j
=
0
]
=
∂
(
[
x
k
+
1
∣
k
⊞
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
]
⊟
x
k
+
1
∣
k
+
1
j
)
∂
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
=
∂
(
(
(
x
⊞
u
)
⊕
v
)
⊟
y
)
∂
u
∣
x
=
x
k
+
1
∣
k
;
u
=
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
;
v
=
0
;
y
=
x
k
+
1
∣
k
+
1
j
(II-3-4)
\begin{aligned} \mathbf{J}_{k+1}^j & \triangleq \left. \frac{\partial \delta \mathbf{x}_j}{\partial \left( (\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k}\right)}\right|_{\delta \mathbf{x}_j = \mathbf{0}} \\ {\small\left[({\color{blue}\mathbf{x}} \boxplus {\color{red}{\mathbf{u}}})\boxminus {\color{blue}\mathbf{x}} = {\color{red}\mathbf{u}}\right]} \qquad &= \left. \frac{\partial \left( ({\color{blue}\mathbf{x}_{k+1 | k+1}^j} \boxplus {\color{red} {\delta \mathbf{x}_j}}) \boxminus {\color{blue}\mathbf{x}_{k+1 | k+1}^{j}}\right)}{\partial \left( (\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k}\right)}\right|_{\delta \mathbf{x}_j = \mathbf{0}} \\ {\small{\left[ {\color{green}\mathbf{x}} \boxplus({\color{red} \mathbf{y}}\boxminus {\color{green} \mathbf{x}}) ={\color{red} \mathbf{y}} \right]} } \qquad &= \left. \frac{\partial \left( \left[ {\color{green}\mathbf{x}_{k+1 | k}} \boxplus \left( {\color{red} (\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j)} \boxminus {\color{green}\mathbf{x}_{k+1 | k}}\right)\right] \boxminus \mathbf{x}_{k+1 | k+1}^{j}\right)}{\partial \left( (\mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j) \boxminus \mathbf{x}_{k+1 | k}\right)}\right|_{\delta \mathbf{x}_j = \mathbf{0}} \\ {\small\left[\delta \mathbf{x}_j = \mathbf{0}\right]} \qquad &= \frac{\partial \left( \left[ \mathbf{x}_{k+1 | k} \boxplus \left( { \mathbf{x}_{k+1 | k+1}^j } \boxminus \mathbf{x}_{k+1 | k}\right)\right] \boxminus \mathbf{x}_{k+1 | k+1}^{j}\right)}{\partial \left( \mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}\right)}\\ &= \left. \frac{\partial \left( \left( \left( \mathbf{x} \boxplus \mathbf{u} \right)\oplus \mathbf{v}\right) \boxminus \mathbf{y}\right)}{\partial \mathbf{u} }\right|_{\mathbf{x}=\mathbf{x}_{k+1 | k};\, \mathbf{u} ={ \mathbf{x}_{k+1 | k+1}^j } \boxminus \mathbf{x}_{k+1 | k};\, \mathbf{v}=\mathbf{0};\, \mathbf{y} = \mathbf{x}_{k+1 | k+1}^{j} }\\ \end{aligned} \tag{II-3-4}
Jk+1j[(x⊞u)⊟x=u][x⊞(y⊟x)=y][δxj=0]≜∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k)∂δxj
δxj=0=∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k)∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k+1j)
δxj=0=∂((xk+1∣k+1j⊞δxj)⊟xk+1∣k)∂([xk+1∣k⊞((xk+1∣k+1j⊞δxj)⊟xk+1∣k)]⊟xk+1∣k+1j)
δxj=0=∂(xk+1∣k+1j⊟xk+1∣k)∂([xk+1∣k⊞(xk+1∣k+1j⊟xk+1∣k)]⊟xk+1∣k+1j)=∂u∂(((x⊞u)⊕v)⊟y)
x=xk+1∣k;u=xk+1∣k+1j⊟xk+1∣k;v=0;y=xk+1∣k+1j(II-3-4)
由式 (II-3-1) 可知, 这个 Jacobian 更简洁的等价形式为
J
k
+
1
j
≜
∂
δ
x
j
∂
δ
x
k
+
1
∣
k
∣
δ
x
j
=
0
(II-3-5)
\mathbf{J}_{k+1}^j \triangleq \left. \frac{\partial \delta \mathbf{x}_j}{\partial \delta\mathbf{x}_{k+1 | k}}\right|_{\delta \mathbf{x}_j = \mathbf{0}} \tag{II-3-5}
Jk+1j≜∂δxk+1∣k∂δxj
δxj=0(II-3-5)
那么式 (II-3-3) 可以写成
δ
x
j
=
J
k
+
1
j
[
δ
x
k
+
1
∣
k
−
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
]
∼
N
(
−
J
k
+
1
j
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
,
J
k
+
1
j
P
k
+
1
∣
k
(
J
k
+
1
j
)
T
)
≜
N
(
μ
1
,
Σ
1
)
(II-3-6)
\begin{aligned} \delta \mathbf{x}_j &= \mathbf{J}_{k+1}^j \left[ \delta\mathbf{x}_{k+1 | k} - (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}) \right] \\ &\sim\: \mathcal{N} \left(-\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}),\, \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 | k} (\mathbf{J}_{k+1}^j)^{\small\rm T} \right) \\ &\triangleq \mathcal{N}(\boldsymbol{\mu}_1, \boldsymbol{\Sigma}_{1}) \end{aligned}\tag{II-3-6}
δxj=Jk+1j[δxk+1∣k−(xk+1∣k+1j⊟xk+1∣k)]∼N(−Jk+1j(xk+1∣k+1j⊟xk+1∣k),Jk+1jPk+1∣k(Jk+1j)T)≜N(μ1,Σ1)(II-3-6)
其中 − J k + 1 j ( x k + 1 ∣ k + 1 j ⊟ x k + 1 ∣ k ) -\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}) −Jk+1j(xk+1∣k+1j⊟xk+1∣k) 是 δ x j \delta \mathbf{x}_j δxj 分布的期望/均值, 其实就是 δ x j \delta \mathbf{x}_j δxj 的预测值.
故先验概率
P
(
δ
x
j
)
=
N
(
δ
x
j
)
∣
N
(
−
J
k
+
1
j
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
)
,
J
k
+
1
j
P
k
+
1
∣
k
(
J
k
+
1
j
)
T
)
(II-3-7)
P(\delta \mathbf{x}_j) = \left.\mathcal{N}(\delta \mathbf{x}_j)\right|_{\mathcal{N} \left(-\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}),\, \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 | k} (\mathbf{J}_{k+1}^j)^{\small\rm T} \right)} \tag{II-3-7}
P(δxj)=N(δxj)∣N(−Jk+1j(xk+1∣k+1j⊟xk+1∣k),Jk+1jPk+1∣k(Jk+1j)T)(II-3-7)
简写为
P
(
δ
x
j
)
=
N
(
δ
x
j
)
(II-3-8)
P(\delta \mathbf{x}_j) = \mathcal{N}(\delta \mathbf{x}_j) \tag{II-3-8}
P(δxj)=N(δxj)(II-3-8)
此处 δ x j \delta \mathbf{x}_j δxj 的分布是通过误差状态 δ x k + 1 ∣ k \delta\mathbf{x}_{k+1 | k} δxk+1∣k 的预测分布得来的, 是先验概率.
4. 最大后验估计与最小二乘法
迭代误差状态 δ x j \delta \mathbf{x}_j δxj 相对于 k + 1 k+1 k+1 时刻测量值 z k + 1 \mathbf{z}_{k+1} zk+1 的后验概率 (Posteriori) 定义为 P ( δ x j ∣ z k + 1 ) P(\delta \mathbf{x}_j | \mathbf{z}_{k+1}) P(δxj∣zk+1).
根据最大后验估计式 (I-10), 并代入已求得的先验概率式 (II-3-8) 和似然概率式 (II-2-9), 得到
δ
x
j
\delta \mathbf{x}_j
δxj 最大后验概率/分布.
arg
max
δ
x
j
P
(
δ
x
j
∣
z
k
+
1
)
=
arg
max
log
δ
x
j
(
P
(
δ
x
j
)
⋅
P
(
z
k
+
1
∣
δ
x
j
)
)
=
arg
max
log
δ
x
j
(
N
(
δ
x
j
)
⋅
N
(
D
k
+
1
j
v
k
+
1
)
)
=
arg
min
δ
x
j
(
∥
δ
x
j
‾
s
t
a
t
e
+
J
k
+
1
j
(
x
k
+
1
∣
k
+
1
j
⊟
x
k
+
1
∣
k
‾
−
prediction of state
)
∥
J
k
+
1
j
P
k
+
1
∣
k
(
J
k
+
1
j
)
T
2
+
∥
r
k
+
1
j
‾
m
e
a
s
u
r
e
m
e
n
t
−
H
k
+
1
j
δ
x
j
‾
pred. of meas.
∥
R
ˉ
k
+
1
j
2
)
(II-4-1)
\begin{aligned} \underset{\delta \mathbf{x}_j}{\arg \max} \,P(\delta \mathbf{x}_j | \mathbf{z}_{k+1}) & = \underset{\delta \mathbf{x}_j}{\arg \max \log} \left( P(\delta \mathbf{x}_j) \cdot P(\mathbf{z}_{k+1} | \delta \mathbf{x}_j) \right)\\ & = \underset{\delta \mathbf{x}_j}{\arg \max \log} \left( \mathcal{N}(\delta \mathbf{x}_j) \cdot \mathcal{N}(\mathbf{D}_{k+1}^j \mathbf{v}_{k+1}) \right)\\ & = \underset{\delta \mathbf{x}_j}{\arg \min } \left( \| \underset{\color{red}{\rm state}}{\underline{\delta \mathbf{x}_j}} + \underset{\color{red}{-\,\text{prediction of state}}}{\underline{\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 | k+1}^j \boxminus \mathbf{x}_{k+1 | k}}}) \|_{\mathbf{J}_{k+1}^j \mathbf{P}_{k+1 | k} (\mathbf{J}_{k+1}^j)^{\small\rm T}}^2 + \| \underset{\color{red}{\rm measurement}}{\underline{\mathbf{r}_{k+1}^{j}}} - \underset{\color{red} \text{pred. of meas.} }{\underline{\mathbf{H}_{k+1}^j \delta \mathbf{x}_j}} \|_{\bar{\mathcal{R}}_{k+1}^j}^2 \right) \end{aligned} \tag{II-4-1}
δxjargmaxP(δxj∣zk+1)=δxjargmaxlog(P(δxj)⋅P(zk+1∣δxj))=δxjargmaxlog(N(δxj)⋅N(Dk+1jvk+1))=δxjargmin
∥stateδxj+−prediction of stateJk+1j(xk+1∣k+1j⊟xk+1∣k)∥Jk+1jPk+1∣k(Jk+1j)T2+∥measurementrk+1j−pred. of meas.Hk+1jδxj∥Rˉk+1j2
(II-4-1)
其中 ∥ x ∥ A 2 = x T A − 1 x \|\mathbf{x}\|_{\mathbf{A}}^2 = \mathbf{x}^{\small\rm T} \mathbf{A}^{\small{-1}} \mathbf{x} ∥x∥A2=xTA−1x.
这样最大后验估计就转换成了一个最小二乘问题. 从最小二乘的代价函数的两部分的意义也可以看出确实是关于预测和测量的融合.
进一步, 论文 “The iterated Kalman filter update as a Gauss-Newton method”[4] 中揭示了迭代卡尔曼滤波的迭代更新过程本质就是最小二乘问题的高斯-牛顿求解过程[4].
下文将要得到的流形上的卡尔曼滤波的迭代测量更新的每一步, 是一个关于迭代误差状态的最大后验估计 (等价于增强观测变量的最大似然估计); 而整个迭代测量更新过程, 等价于高斯-牛顿法的计算收敛过程.
III. 迭代更新计算
1. 状态迭代更新
根据论文 [4] 中的推导, 能够得到 “I.预备知识”-“1. 迭代扩展卡尔曼滤波的测量更新” 中的内容, 具体证明计算我们不展开. 我们从该论文的结论出发, 对比和计算流形上的迭代测量更新.
Table 1. 迭代更新对比计算表
标准迭代卡尔曼滤波的测量更新[4] | 流形上的迭代卡尔曼滤波的测量更新[1] | |
---|---|---|
Augmented Observation | Z = [ z x ^ ] Z = \begin{bmatrix}z \\ \hat{x}\end{bmatrix} Z=[zx^] | Z = [ r k + 1 i − J k + 1 j ( x k + 1 ∣ k + 1 j ⊟ x k + 1 ∣ k ) ] Z = \begin{bmatrix}\mathbf{r}_{k+1}^{i}\\ -{\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 |k+1}^j \boxminus \mathbf{x}_{k+1 | k}}) \end{bmatrix} Z=[rk+1i−Jk+1j(xk+1∣k+1j⊟xk+1∣k)] |
Augmented Measurement | g ( x ) = [ h ( x ) x ] g(x) = \begin{bmatrix}h(x) \\ x \end{bmatrix} g(x)=[h(x)x] | g ( δ x j ) = [ H k + 1 j δ x j δ x j ] \mathbf{g}(\delta\mathbf{x}_j) =\begin{bmatrix} \mathbf{H}_{k+1}^j \delta \mathbf{x}_j \\ \delta \mathbf{x}_j\end{bmatrix} g(δxj)=[Hk+1jδxjδxj] |
Covariance of Z Z Z | Q = [ R 0 0 P ] \mathcal{Q}=\begin{bmatrix} R &0\\ 0 &P \end{bmatrix} Q=[R00P] | Q = [ R ˉ k + 1 j 0 0 J k + 1 j P k + 1 ∣ k ( J k + 1 j ) T ] \mathcal{Q} = \begin{bmatrix} \bar{\mathcal{R}}_{k+1}^j & \mathbf{0} \\ \mathbf{0} & \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 |k} (\mathbf{J}_{k+1}^j)^{\small\rm T} \end{bmatrix} Q=[Rˉk+1j00Jk+1jPk+1∣k(Jk+1j)T] |
Linearization of g ( x ) g(x) g(x) |
G
=
g
′
(
x
^
+
)
=
[
H
I
]
G=g'(\hat{x}^{\small +}) = \begin{bmatrix} H \\ I \end{bmatrix}
G=g′(x^+)=[HI], H = h ′ ( x ^ + ) H=h'(\hat{x}^{\small +}) H=h′(x^+) | G = [ H k + 1 j I ] \mathbf{G} = \begin{bmatrix} \mathbf{H}_{k+1}^j \\ \mathbf{I} \end{bmatrix} G=[Hk+1jI] |
H ∗ R − 1 H + P − 1 H^{*}R^{-1}H+P^{-1} H∗R−1H+P−1 | Q k + 1 j = ( H k + 1 j ) T ( R ˉ k + 1 j ) − 1 H k + 1 j + ( J k + 1 j ) − T P k + 1 ∣ k − 1 ( J k + 1 j ) − 1 \mathbf{Q}_{k+1}^{j} = {(\mathbf{H}_{k+1}^j)}^{\small\rm T} {(\bar{\mathcal{R}}_{k+1}^j)}^{\small\rm -1} {\mathbf{H}_{k+1}^j} + (\mathbf{J}_{k+1}^j)^{\small\rm{-T}} \mathbf{P}_{k+1 |k}^{\small\rm {-1}} (\mathbf{J}_{k+1}^j)^{\small\rm -1} Qk+1j=(Hk+1j)T(Rˉk+1j)−1Hk+1j+(Jk+1j)−TPk+1∣k−1(Jk+1j)−1 | |
H P H ∗ + R HPH^{*}+R HPH∗+R | S k + 1 j = H k + 1 j J k + 1 j P k + 1 ∣ k ( J k + 1 j ) T ( H k + 1 j ) T + R ˉ k + 1 j \mathbf{S}_{k+1}^j = \mathbf{H}_{k+1}^j \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 |k} (\mathbf{J}_{k+1}^j)^{\small\rm T} (\mathbf{H}_{k+1}^j)^{\small\rm T} + \bar{\mathcal{R}}_{k+1}^j Sk+1j=Hk+1jJk+1jPk+1∣k(Jk+1j)T(Hk+1j)T+Rˉk+1j | |
Kalman Gain | K = ( H ∗ R − 1 H + P − 1 ) − 1 H ∗ R − 1 K= (H^{*}R^{-1}H+P^{-1})^{-1} H^{*} R^{-1} K=(H∗R−1H+P−1)−1H∗R−1 | K k + 1 j = ( Q k + 1 j ) − 1 ( H k + 1 j ) T ( R ˉ k + 1 j ) − 1 \mathbf{K}_{k+1}^j = (\mathbf{Q}_{k+1}^{j})^{-1} (\mathbf{H}_{k+1}^j)^{\small\rm T} {(\bar{\mathcal{R}}_{k+1}^j)}^{\small\rm -1} Kk+1j=(Qk+1j)−1(Hk+1j)T(Rˉk+1j)−1 |
Kalman Gain | K = P H ∗ ( H P H ∗ + R ) − 1 K=PH^{*}(HPH^{*}+R)^{\small\rm -1} K=PH∗(HPH∗+R)−1 | K k + 1 j = J k + 1 j P k + 1 ∣ k ( J k + 1 j ) T ( H k + 1 j ) T ( S k + 1 j ) − 1 \mathbf{K}_{k+1}^j = \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 |k} (\mathbf{J}_{k+1}^j)^{\small\rm T} (\mathbf{H}_{k+1}^j)^{\small\rm T} (\mathbf{S}_{k+1}^j)^{-1} Kk+1j=Jk+1jPk+1∣k(Jk+1j)T(Hk+1j)T(Sk+1j)−1 |
Iterated State | x i + 1 = x ^ + K i ( z − h ( x i ) − H i ( x ^ − x i ) ) x_{i+1} = \hat{x} + K_{i} (z -h(x_i) -H_i (\hat{x} - x_i)) xi+1=x^+Ki(z−h(xi)−Hi(x^−xi)) | δ x j o = − J k + 1 j ( x k + 1 ∣ k + 1 j ⊟ x k + 1 ∣ k ) + K k + 1 j ( r k + 1 i + H k + 1 j J k + 1 j ( x k + 1 ∣ k + 1 j ⊟ x k + 1 ∣ k ) ) \begin{aligned}\delta \mathbf{x}_j^{o} &= -{\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 |k+1}^j \boxminus \mathbf{x}_{k+1 |k}}) \\&+ \mathbf{K}_{k+1}^j \left(\mathbf{r}_{k+1}^{i} + \mathbf{H}_{k+1}^j {\mathbf{J}_{k+1}^j (\mathbf{x}_{k+1 |k+1}^j \boxminus \mathbf{x}_{k+1 |k}}) \right)\end{aligned} δxjo=−Jk+1j(xk+1∣k+1j⊟xk+1∣k)+Kk+1j(rk+1i+Hk+1jJk+1j(xk+1∣k+1j⊟xk+1∣k)) |
Difinition of Covariance of Iterated State | P + = E [ ( x − x i + 1 ) ( x − x i + 1 ) T ] P^{\small +} = {\rm E}[(x-x_{i+1})(x-x_{i+1})^{\small \rm T}] P+=E[(x−xi+1)(x−xi+1)T] | P k + 1 j = E [ ( δ x j − δ x j o ) ( δ x j − δ x j o ) T ] \mathbf{P}_{k+1}^j = {\rm E}\left[(\delta \mathbf{x}_j-\delta \mathbf{x}_j^{o}) (\delta \mathbf{x}_j-\delta \mathbf{x}_j^{o})^{\small \rm T}\right] Pk+1j=E[(δxj−δxjo)(δxj−δxjo)T] |
Covariance of Iterated State | P + = ( H ∗ R − 1 H + P − 1 ) − 1 P^{\small +}=(H^{*} R^{\small -1} H + P^{\small -1})^{\small -1} P+=(H∗R−1H+P−1)−1 | P k + 1 j = ( Q k + 1 j ) − 1 \mathbf{P}_{k+1}^j = (\mathbf{Q}_{k+1}^{j})^{-1} Pk+1j=(Qk+1j)−1 |
Covariance of Iterated State | P + = ( I − K H ) P P^{\small +} = (I-K H) P P+=(I−KH)P | P k + 1 j = ( I − K k + 1 j H k + 1 j ) J k + 1 j P k + 1 ∣ k ( J k + 1 j ) T \mathbf{P}_{k+1}^j = \left(\mathbf{I} - \mathbf{K}_{k+1}^j \mathbf{H}_{k+1}^j \right) \mathbf{J}_{k+1}^j \mathbf{P}_{k+1 |k} (\mathbf{J}_{k+1}^j)^{\small\rm T} Pk+1j=(I−Kk+1jHk+1j)Jk+1jPk+1∣k(Jk+1j)T |
根据标准的迭代卡尔曼滤波的测量更新, 每一步迭代都得到关于迭代误差状态 δ x j \delta \mathbf{x}_j δxj 的优化的解 δ x j o \delta \mathbf{x}_j^{o} δxjo, δ x j o \delta \mathbf{x}_j^{o} δxjo 是对 δ x j \delta \mathbf{x}_j δxj 的最优估计. 我们可以发现流形上的迭代卡尔曼滤波的测量更新计算中, 都是基于当前获得的系统状态的迭代估计 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1 | k+1}^j xk+1∣k+1j 展开. 即使是隐含的 J k + 1 j \mathbf{J}_{k+1}^j Jk+1j (式 (II-3-4)) 和 H k + 1 j \mathbf{H}_{k+1}^j Hk+1j (式 (II-2-4)) 都是如此. 也就是说, 每获得一个迭代误差状态的最优估计值 δ x j o \delta \mathbf{x}_j^{o} δxjo, 需要获得一个新的迭代系统状态的估计值 x k + 1 ∣ k + 1 j + 1 \mathbf{x}_{k+1 | k+1}^{j+1} xk+1∣k+1j+1. 然后再基于这个新的迭代系统状态估计值 x k + 1 ∣ k + 1 j + 1 \mathbf{x}_{k+1 | k+1}^{j+1} xk+1∣k+1j+1, 继续计算获得下一个最优的迭代误差状态 δ x j + 1 o \delta \mathbf{x}_{j+1}^{o} δxj+1o, 周而复始知道满足停止条件 (迭代收敛或者最大迭代步数).
根据迭代状态误差的定义式 (II-2-2), 可知
x
k
+
1
=
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
(III-1-1)
\mathbf{x}_{k+1} = \mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j \tag{III-1-1}
xk+1=xk+1∣k+1j⊞δxj(III-1-1)
由 Table 1 已获得了迭代误差状态
δ
x
j
\delta \mathbf{x}_j
δxj 的在
x
k
+
1
∣
k
+
1
j
\mathbf{x}_{k+1 | k+1}^j
xk+1∣k+1j 条件下的最优估计
δ
x
j
o
\delta \mathbf{x}_j^{o}
δxjo, 通过上式获得新的迭代系统状态估计值
x
k
+
1
∣
k
+
1
j
+
1
=
x
k
+
1
∣
k
+
1
j
⊞
δ
x
j
o
(III-1-2)
\mathbf{x}_{k+1 | k+1}^{j+1} = \mathbf{x}_{k+1 | k+1}^j \boxplus \delta \mathbf{x}_j^{o} \tag{III-1-2}
xk+1∣k+1j+1=xk+1∣k+1j⊞δxjo(III-1-2)
那么
δ
x
j
o
\delta \mathbf{x}_j^{o}
δxjo 也可视作连续两个迭代系统状态之间的差,
δ
x
j
o
=
x
k
+
1
∣
k
+
1
j
+
1
⊟
x
k
+
1
∣
k
+
1
j
(III-1-3)
\delta \mathbf{x}_j^{o} = \mathbf{x}_{k+1 | k+1}^{j+1} \boxminus \mathbf{x}_{k+1 | k+1}^j \tag{III-1-3}
δxjo=xk+1∣k+1j+1⊟xk+1∣k+1j(III-1-3)
当
j
=
γ
≥
0
j=\gamma \geq 0
j=γ≥0, 达到停止条件时, 此时得到
δ
x
γ
o
\delta \mathbf{x}_{\gamma}^{o}
δxγo 和相应的协方差
P
k
+
1
γ
\mathbf{P}_{k+1}^{\gamma}
Pk+1γ, 以及系统状态的迭代估计
x
k
+
1
∣
k
+
1
γ
+
1
\mathbf{x}_{k+1 | k+1}^{\gamma+1}
xk+1∣k+1γ+1.
针对 k + 1 k+1 k+1 时刻测量采样而进行的迭代测量更新过程中, 停止迭代更新时的迭代步数为 γ \gamma γ.
后面我们在可视化整个迭代测量更新的过程中, 我们更愿意视 δ x j o \delta \mathbf{x}_j^{o} δxjo 为第 j j j 个迭代状态 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1 | k+1}^j xk+1∣k+1j 向第 j + 1 j+1 j+1 个迭代状态 x k + 1 ∣ k + 1 j + 1 \mathbf{x}_{k+1 | k+1}^{j+1} xk+1∣k+1j+1 移动的"驱动力". 在 δ x j o \delta \mathbf{x}_j^{o} δxjo 驱动下, 迭代状态越来越接近于真实状态值.
2. 协方差重新投影
将迭代过程最终得到的系统状态的迭代估计值
x
k
+
1
∣
k
+
1
γ
+
1
\mathbf{x}_{k+1 | k+1}^{\gamma+1}
xk+1∣k+1γ+1 作为
k
+
1
k+1
k+1 时刻的最终估计值, 即
x
k
+
1
∣
k
+
1
=
x
k
+
1
∣
k
+
1
γ
+
1
(III-2-1)
\mathbf{x}_{k+1 | k+1} = \mathbf{x}_{k+1 | k+1}^{\gamma+1} \tag{III-2-1}
xk+1∣k+1=xk+1∣k+1γ+1(III-2-1)
有了状态估计值以后自然想到要计算对应的误差协方差, 即
P
k
+
1
∣
k
+
1
≜
E
[
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
)
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
)
T
]
(III-2-2)
\mathbf{P}_{k+1 | k+1} \triangleq {\rm E}\left[ (\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}) (\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1})^{\small\rm T} \right] \tag{III-2-2}
Pk+1∣k+1≜E[(xk+1⊟xk+1∣k+1)(xk+1⊟xk+1∣k+1)T](III-2-2)
由上式可知
P
k
+
1
∣
k
+
1
\mathbf{P}_{k+1 | k+1}
Pk+1∣k+1 是
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}
xk+1⊟xk+1∣k+1 的协方差.
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}
xk+1⊟xk+1∣k+1 处于系统状态流形
M
s
\mathcal{M}_{\mathcal{s}}
Ms 上点
x
k
+
1
∣
k
+
1
\mathbf{x}_{k+1 | k+1}
xk+1∣k+1 附近的局部同胚空间 (“切空间”).
作为对比, 迭代过程中得到
P
k
+
1
γ
\mathbf{P}_{k+1}^{\gamma}
Pk+1γ 是
δ
x
γ
−
δ
x
γ
o
\delta \mathbf{x}_{\gamma}-\delta \mathbf{x}_{\gamma}^{o}
δxγ−δxγo 的协方差. 结合式 (II-2-2) 和式 (III-1-3) 可知
δ
x
γ
−
δ
x
γ
o
=
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
)
−
(
x
k
+
1
∣
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
)
(III-2-3)
\delta \mathbf{x}_{\gamma} - \delta \mathbf{x}_{\gamma}^{o} = (\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma}) - ( \mathbf{x}_{k+1 | k+1} \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma} ) \tag{III-2-3}
δxγ−δxγo=(xk+1⊟xk+1∣k+1γ)−(xk+1∣k+1⊟xk+1∣k+1γ)(III-2-3)
由上式 (III-2-3) 可知,
δ
x
γ
−
δ
x
γ
o
\delta \mathbf{x}_{\gamma} -\delta \mathbf{x}_{\gamma}^{o}
δxγ−δxγo 处于系统状态流形
M
s
\mathcal{M}_{\mathcal{s}}
Ms 上点
x
k
+
1
∣
k
+
1
γ
\mathbf{x}_{k+1 | k+1}^{\gamma}
xk+1∣k+1γ 附近的局部同胚空间 (“切空间”).
P
k
+
1
∣
k
+
1
\mathbf{P}_{k+1 | k+1}
Pk+1∣k+1 和
P
k
+
1
γ
\mathbf{P}_{k+1}^{\gamma}
Pk+1γ 处于同一流形上但不同点的"切空间"上.
因为流形并不是 “直的”, 不能像欧几里得空间那样具有平移不变性, 故
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
)
−
(
x
k
+
1
∣
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
)
≠
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
(III-2-4)
(\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma}) - ( \mathbf{x}_{k+1 | k+1} \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma} ) \quad {\color{red}{\neq}}\quad \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1} \tag{III-2-4}
(xk+1⊟xk+1∣k+1γ)−(xk+1∣k+1⊟xk+1∣k+1γ)=xk+1⊟xk+1∣k+1(III-2-4)
所以要作重新投影, 使得两个误差协方差处于同一空间, 进而使得能够将未知的
P
k
+
1
∣
k
+
1
\mathbf{P}_{k+1 | k+1}
Pk+1∣k+1 用已知的
P
k
+
1
γ
\mathbf{P}_{k+1}^{\gamma}
Pk+1γ 来进行表示.
我们从误差状态的定义 (式(I-1-1) 和式 (II-2-2)) 出发
γ
+
1
:
δ
x
k
+
1
∣
k
+
1
=
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
:
δ
x
γ
=
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
γ
(III-2-5)
\begin{aligned} \gamma+1&:\qquad &\delta\mathbf{x}_{k+1 | k+1} &= \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}\\ \gamma&:\qquad &\delta\mathbf{x}_{\gamma} &= \mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma}\\ \end{aligned} \tag{III-2-5}
γ+1γ::δxk+1∣k+1δxγ=xk+1⊟xk+1∣k+1=xk+1⊟xk+1∣k+1γ(III-2-5)
推导得到
δ
x
k
+
1
∣
k
+
1
=
(
x
k
+
1
∣
k
+
1
γ
⊞
δ
x
γ
)
⊟
x
k
+
1
∣
k
+
1
γ
+
1
(III-2-6)
\delta\mathbf{x}_{k+1 | k+1} = (\mathbf{x}_{k+1 | k+1}^{\gamma} \boxplus \delta \mathbf{x}_{\gamma}) \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma + 1} \tag{III-2-6}
δxk+1∣k+1=(xk+1∣k+1γ⊞δxγ)⊟xk+1∣k+1γ+1(III-2-6)
将
δ
x
k
+
1
∣
k
+
1
\delta\mathbf{x}_{k+1 | k+1}
δxk+1∣k+1 看作是以
δ
x
γ
\delta \mathbf{x}_{\gamma}
δxγ 为自变量的函数, 并在
δ
x
γ
o
\delta \mathbf{x}_{\gamma}^{o}
δxγo 处进行一阶泰勒展开, 得到
δ
x
k
+
1
∣
k
+
1
=
(
x
k
+
1
∣
k
+
1
γ
⊞
δ
x
γ
o
)
⊟
x
k
+
1
∣
k
+
1
γ
+
1
‾
=
0
eq. (III-1-1)
+
∂
(
(
x
k
+
1
∣
k
+
1
γ
⊞
δ
x
γ
)
⊟
x
k
+
1
∣
k
+
1
γ
+
1
)
∂
δ
x
γ
∣
δ
x
γ
=
δ
x
γ
o
⋅
(
δ
x
γ
−
δ
x
γ
o
)
=
L
k
+
1
⋅
(
δ
x
γ
−
δ
x
γ
o
)
(III-2-7)
\begin{aligned} \delta\mathbf{x}_{k+1 | k+1} &= {\underset{=0 \quad\text{eq. (III-1-1)}} {\underline{(\mathbf{x}_{k+1 | k+1}^{\gamma} \boxplus \delta \mathbf{x}_{\gamma}^{o}) \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma + 1} } }} + \left. \frac{\partial \left((\mathbf{x}_{k+1 | k+1}^{\gamma} \boxplus \delta \mathbf{x}_{\gamma}) \boxminus \mathbf{x}_{k+1 | k+1}^{\gamma + 1} \right)}{\partial \delta \mathbf{x}_{\gamma}}\right|_{ \delta \mathbf{x}_{\gamma} = \delta \mathbf{x}_{\gamma}^{o}} \cdot (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o})\\ &= \mathbf{L}_{k+1} \cdot (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o}) \end{aligned}\tag{III-2-7}
δxk+1∣k+1==0eq. (III-1-1)(xk+1∣k+1γ⊞δxγo)⊟xk+1∣k+1γ+1+∂δxγ∂((xk+1∣k+1γ⊞δxγ)⊟xk+1∣k+1γ+1)
δxγ=δxγo⋅(δxγ−δxγo)=Lk+1⋅(δxγ−δxγo)(III-2-7)
其中
δ
x
k
+
1
∣
k
+
1
\delta\mathbf{x}_{k+1 | k+1}
δxk+1∣k+1 相对于
δ
x
γ
\delta \mathbf{x}_{\gamma}
δxγ 在"点"
δ
x
γ
o
\delta \mathbf{x}_{\gamma}^{o}
δxγo 上的 Jacobian 记为
L
k
+
1
\mathbf{L}_{k+1}
Lk+1.
L
k
+
1
=
∂
(
(
(
x
⊞
u
)
⊕
v
)
⊟
y
)
∂
u
∣
x
=
x
k
+
1
∣
k
+
1
γ
;
u
=
δ
x
γ
o
;
v
=
0
;
y
=
x
k
+
1
∣
k
+
1
γ
+
1
(III-2-8)
\mathbf{L}_{k+1} = \left. \frac{\partial \left(((\mathbf{x} \boxplus \mathbf{u}) \oplus \mathbf{v})\boxminus \mathbf{y} \right)}{\partial \mathbf{u}}\right|_{\mathbf{x}=\mathbf{x}_{k+1 | k+1}^{\gamma};\, \mathbf{u} = \delta \mathbf{x}_{\gamma}^{o}; \, \mathbf{v}=\mathbf{0};\, \mathbf{y}=\mathbf{x}_{k+1 | k+1}^{\gamma + 1}} \tag{III-2-8}
Lk+1=∂u∂(((x⊞u)⊕v)⊟y)
x=xk+1∣k+1γ;u=δxγo;v=0;y=xk+1∣k+1γ+1(III-2-8)
式 (III-2-7) 就实现了
(
δ
x
γ
−
δ
x
γ
o
)
(\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o})
(δxγ−δxγo) 向
δ
x
k
+
1
∣
k
+
1
\delta\mathbf{x}_{k+1 | k+1}
δxk+1∣k+1 的投影转换. 也就可以从误差协方差
P
k
+
1
∣
k
+
1
\mathbf{P}_{k+1 | k+1}
Pk+1∣k+1 定义式 (III-2-2) 开始推导了
P
k
+
1
∣
k
+
1
=
E
[
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
)
(
x
k
+
1
⊟
x
k
+
1
∣
k
+
1
)
T
]
(III-2-5)
=
E
[
(
δ
x
k
+
1
∣
k
+
1
)
(
δ
x
k
+
1
∣
k
+
1
)
T
]
=
E
[
L
k
+
1
(
δ
x
γ
−
δ
x
γ
o
)
(
δ
x
γ
−
δ
x
γ
o
)
T
L
k
+
1
T
]
=
L
k
+
1
E
[
(
δ
x
γ
−
δ
x
γ
o
)
(
δ
x
γ
−
δ
x
γ
o
)
T
]
L
k
+
1
T
(Table 1)
=
L
k
+
1
P
k
+
1
γ
L
k
+
1
T
(III-2-9)
\begin{aligned} \mathbf{P}_{k+1 | k+1} & = {\rm E}\left[ (\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1}) (\mathbf{x}_{k+1} \boxminus \mathbf{x}_{k+1 | k+1})^{\small\rm T} \right] \\ {\text{\small (III-2-5)}} \qquad & = {\rm E}\left[ (\delta\mathbf{x}_{k+1 | k+1}) (\delta\mathbf{x}_{k+1 | k+1} )^{\small \rm T} \right]\\ & = {\rm E}\left[ \mathbf{L}_{k+1} (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o}) (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o})^{\small\rm T} \mathbf{L}_{k+1}^{\small \rm T} \right]\\ &= \mathbf{L}_{k+1} {\rm E}\left[ (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o}) (\delta \mathbf{x}_{\gamma}- \delta \mathbf{x}_{\gamma}^{o})^{\small\rm T} \right] \mathbf{L}_{k+1}^{\small \rm T}\\ {\text{\small (Table 1)}} \qquad & = \mathbf{L}_{k+1} \mathbf{P}_{k+1}^{\gamma} \mathbf{L}_{k+1}^{\small \rm T} \end{aligned} \tag{III-2-9}
Pk+1∣k+1(III-2-5)(Table 1)=E[(xk+1⊟xk+1∣k+1)(xk+1⊟xk+1∣k+1)T]=E[(δxk+1∣k+1)(δxk+1∣k+1)T]=E[Lk+1(δxγ−δxγo)(δxγ−δxγo)TLk+1T]=Lk+1E[(δxγ−δxγo)(δxγ−δxγo)T]Lk+1T=Lk+1Pk+1γLk+1T(III-2-9)
IV. 融合与更新的几何示意
不管是KF、EKF、IKF 还是这里讨论的 IKFoM, 测量更新部分都是值得去仔细分析和理解的.
前面已经从公式上严格推导了整个迭代更新的过程, 包括状态值、误差值和误差协方差的迭代更新. 我们再从几何直观的角度, 可视化描述一下这个过程.
先补充部分内容:
通过对式 (II-2-6) 进行变换, 得到由测量值推导出的迭代误差状态 δ x j \delta \mathbf{x}_j δxj 的分布
δ x j = ( H k + 1 j ) − 1 r k + 1 j − ( H k + 1 j ) − 1 D k + 1 j v k + 1 ∼ N ( ( H k + 1 j ) − 1 r k + 1 j , ( H k + 1 j ) − 1 R ˉ k + 1 ( H k + 1 j ) − T ) ≜ N ( μ 2 , Σ 2 ) (IV-1) \begin{aligned}\delta \mathbf{x}_j &= (\mathbf{H}_{k+1}^j)^{\small{-1}} \mathbf{r}_{k+1}^{j} - (\mathbf{H}_{k+1}^j)^{\small{-1}} \mathbf{D}_{k+1}^j \mathbf{v}_{k+1}\\ &\sim\: \mathcal{N}\left((\mathbf{H}_{k+1}^j)^{\small{-1}} \mathbf{r}_{k+1}^{j}, (\mathbf{H}_{k+1}^j)^{\small{-1}} \bar{\mathcal{R}}_{k+1} (\mathbf{H}_{k+1}^j)^{\rm \small{-T}} \right) \\ &\triangleq \mathcal{N}(\boldsymbol{\mu}_2, \boldsymbol{\Sigma}_{2}) \end{aligned} \tag{IV-1} δxj=(Hk+1j)−1rk+1j−(Hk+1j)−1Dk+1jvk+1∼N((Hk+1j)−1rk+1j,(Hk+1j)−1Rˉk+1(Hk+1j)−T)≜N(μ2,Σ2)(IV-1)
由式 (II-2-2) 可知, δ x j \delta \mathbf{x}_j δxj 所在"切平面"与流形 M s \mathcal{M}_{\mathcal{s}} Ms 上点 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1 | k+1}^j xk+1∣k+1j 附近区域局部同胚. 式 (II-2-6) 以及上式描述的分布是与点 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1 | k+1}^j xk+1∣k+1j 关联的.需要说明: 上式中 ( H k + 1 j ) − 1 (\mathbf{H}_{k+1}^j)^{\small{-1}} (Hk+1j)−1 并非必然存在, 而由具体的测量函数决定. 上式只是为了方便说明几何关系而构建, 并非严格的计算式, 实际计算中也不会用到 ( H k + 1 j ) − 1 (\mathbf{H}_{k+1}^j)^{\small{-1}} (Hk+1j)−1 的值.

比照 Fig. 1., 流形上的迭代卡尔曼滤波 (IKFoM) 的迭代测量更新过程描述如下.
迭代卡尔曼滤波 (IKFoM) 的迭代测量更新的流程步骤
Step 1:
初始化
初始迭代步 j = 0 j=0 j=0
初始系统状态 x k + 1 ∣ k + 1 0 = x k + 1 ∣ k \mathbf{x}_{k+1|k+1}^{0} = \mathbf{x}_{k+1|k} xk+1∣k+10=xk+1∣k
初始误差状态分布 δ x k + 1 ∣ k ∼ N ( 0 , P k + 1 ∣ k ) \delta \mathbf{x}_{k+1|k} \sim \mathcal{N}(\mathbf{0}, \mathbf{P}_{k+1|k}) δxk+1∣k∼N(0,Pk+1∣k)
预设收敛小量 ε \varepsilon ε 和最大迭代步 j m a x j_{\rm max} jmax
Step 2:
当 j = 0 j=0 j=0 时, 以 x k + 1 ∣ k + 1 0 \mathbf{x}_{k+1|k+1}^{0} xk+1∣k+10 作为 “迭代点”/“评估点”
从式 (II-2-1) 计算测量残差 r k + 1 0 \mathbf{r}_{k+1}^{0} rk+10
从式 (II-2-4) 计算 H k + 1 0 \mathbf{H}_{k+1}^{0} Hk+10
从式 (II-2-5) 计算 D k + 1 0 \mathbf{D}_{k+1}^{0} Dk+10
从式 (II-2-7) 计算 R k + 1 0 \mathcal{R}_{k+1}^{0} Rk+10
从式 (II-3-4) 计算 J k + 1 0 \mathbf{J}_{k+1}^{0} Jk+10
利用 Table 1 中各算式, 计算 Q k + 1 0 \mathbf{Q}_{k+1}^{0} Qk+10、 S k + 1 0 \mathbf{S}_{k+1}^{0} Sk+10、 K k + 1 0 \mathbf{K}_{k+1}^{0} Kk+10
利用 Table 1 中 δ x j o \delta \mathbf{x}_j^{o} δxjo 的计算式, 计算出 δ x 0 o = K k + 1 0 r k + 1 0 \delta \mathbf{x}_{0}^{o} = \mathbf{K}_{k+1}^{0} \mathbf{r}_{k+1}^{0} δx0o=Kk+10rk+10 的具体值
从式 (III-1-2) 计算新的 “迭代点”/“评估点” x k + 1 ∣ k + 1 1 \mathbf{x}_{k+1|k+1}^{1} xk+1∣k+11
评估停止条件 ∥ δ x 0 o ∥ < ε \| \delta \mathbf{x}_{0}^{o} \| < \varepsilon ∥δx0o∥<ε 或者 0 ≥ j m a x 0 \ge j_{\rm max} 0≥jmax
\quad 如上述停止条件不满足, 进入 Step 3
\quad 如上述停止条件满足, 进入 Step 4
Step 3:
迭代步数加一为 j = j + 1 j = j+1 j=j+1 ,
计算 r k + 1 j \mathbf{r}_{k+1}^{j} rk+1j、 H k + 1 j \mathbf{H}_{k+1}^{j} Hk+1j、 D k + 1 j \mathbf{D}_{k+1}^{j} Dk+1j、 R ˉ k + 1 j \bar{\mathcal{R}}_{k+1}^{j} Rˉk+1j、 J k + 1 j \mathbf{J}_{k+1}^{j} Jk+1j、 Q k + 1 j \mathbf{Q}_{k+1}^{j} Qk+1j、 S k + 1 j \mathbf{S}_{k+1}^{j} Sk+1j、 K k + 1 j \mathbf{K}_{k+1}^{j} Kk+1j
利用 Table 1 中 δ x j o \delta \mathbf{x}_{j}^{o} δxjo 的计算式, 计算出 δ x j o \delta \mathbf{x}_{j}^{o} δxjo 的具体值
从式 (III-1-2) 计算下一个 “迭代点”/“评估点” x k + 1 ∣ k + 1 j + 1 \mathbf{x}_{k+1|k+1}^{j+1} xk+1∣k+1j+1
评估停止条件 ∥ δ x j o ∥ < ε \| \delta \mathbf{x}_{j}^{o} \| < \varepsilon ∥δxjo∥<ε 或者 j ≥ j m a x j \ge j_{\rm max} j≥jmax
\quad 如上述停止条件不满足, 重新进入 Step 3
\quad 如上述停止条件满足, 进入 Step 4
Step 4:
停止步数 γ = j \gamma = j γ=j
最优估计的系统状态 x k + 1 ∣ k + 1 = x k + 1 ∣ k + 1 j + 1 \mathbf{x}_{k+1|k+1} = \mathbf{x}_{k+1|k+1}^{j+1} xk+1∣k+1=xk+1∣k+1j+1
基于 Step 3 中已得到 H k + 1 j \mathbf{H}_{k+1}^{j} Hk+1j、 J k + 1 j \mathbf{J}_{k+1}^{j} Jk+1j、 K k + 1 j \mathbf{K}_{k+1}^{j} Kk+1j, 并利用 Table 1 中 P k + 1 j \mathbf{P}_{k+1}^j Pk+1j 的计算式, 计算该值
从式 (III-2-8) 计算 L k + 1 \mathbf{L}_{k+1} Lk+1
从式 (III-2-9) 计算 P k + 1 ∣ k + 1 \mathbf{P}_{k+1 | k+1} Pk+1∣k+1
Step 5:
输出 x k + 1 ∣ k + 1 \mathbf{x}_{k+1|k+1} xk+1∣k+1、 P k + 1 ∣ k + 1 \mathbf{P}_{k+1 | k+1} Pk+1∣k+1
从 Fig. 1 中可以看出
- 每一步迭代更新都得到一个最大后验估计 δ x j o \delta \mathbf{x}_j^{o} δxjo ;
- 最大后验估计值 δ x j o \delta \mathbf{x}_{j}^{o} δxjo 又去驱动系统状态 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1|k+1}^{j} xk+1∣k+1j 的一步更新;
- 迭代状态 x k + 1 ∣ k + 1 j \mathbf{x}_{k+1|k+1}^{j} xk+1∣k+1j ( j = 0 , 1 , 2 , . . . , γ , γ + 1 j = 0, 1, 2, ..., \gamma, \gamma+1 j=0,1,2,...,γ,γ+1) 形成一条状态流形上的迭代更新轨迹;
- 每一个迭代状态都有相关联的同胚"切平面", 误差和协方差的计算都在关联的同胚"切平面"上进行;
- 不同"切平面"上的误差状态及协方差可以通过投影操作 (Projection & Reprojection) 实现相互转换.
总结
以上完成了流形上的迭代卡尔曼滤波算法中迭代测量更新部分的讨论, 重点关注
- 迭代更新的"驱动力"
- 迭代更新的几何描述
- 迭代更新的最优化特性
- 误差状态与系统状态之间的局部同胚
- 不同"切平面"上状态与协方差的投影
- 迭代更新的算法流程
如有问题, 请指出, 谢谢!
参考文献
[1] Dongjiao He, Wei Xu, Fu Zhang, “Kalman Filters on Differentiable Manifolds”, https://arxiv.org/abs/2102.03804, 2021, Version V3
[2] Jindřich Havlík and Ondřej Straka, Performance evaluation of iterated extended Kalman filter with variable step-length, J. Phys.: Conf. Ser. 659, 2015
[3] Fawcett Lee, http://www.mas.ncl.ac.uk/~nlf8/teaching/mas2317/notes/chapter2.pdf, in the course Introduction to Bayesian Statistics, at Newcastle University, 2014-2015
[4] B. M. Bell, F. W. Cathey, The iterated Kalman filter update as a Gauss-Newton method. IEEE Transactions on Automatic Control, 38(2), 294–297, 1993