1.从高斯分布到信息矩阵
(1)SLAM 问题概率建模
具体参见:https://blog.csdn.net/ASUNAchan/article/details/124654207?spm=1001.2014.3001.5501
(2)高斯分布和协方差矩阵
1)多元高斯分布
零均值高斯分布:
p(x)=1Ze−12xTΣ−1x
p(x) = \frac{1}{Z}e^{-\frac{1}{2}x^T\Sigma^{-1} x}
p(x)=Z1e−21xTΣ−1x
其中:Σ\SigmaΣ 为协方差矩阵,协方差矩阵的逆记作 Λ=Σ−1\Lambda = \Sigma^{-1}Λ=Σ−1 ,Σij=E(xixj)\Sigma_{ij} = E(x_ix_j)Σij=E(xixj) 为对应元素求期望。
2)例1
x2=v2x1=w1x2+v1x3=w3x2+v3
x_2 = v_2 \\
x_1 = w_1 x_2 + v_1 \\
x_3 = w_3 x_2 + v_3
x2=v2x1=w1x2+v1x3=w3x2+v3
推导过程略
结论:
1 协方差逆矩阵中如果坐标为 (i,j)(i, j)(i,j) 的元素为 0,表示元素 iii 和 jjj 关于其他变量条件独立
2 协方差中非对角元素 Σij>0\Sigma_{ij} > 0Σij>0 表示两变量是正相关
3 信息矩阵中非对角元素为负数,甚至为 0。Λ12<0\Lambda_{12} < 0Λ12<0 表示在变量x3x_3x3 发生的条件下,元素 x1x_1x1 和 x2x_2x2 正相关。
3)例2
x2=w1x1+w3x3+v2
x_2 = w_1 x_1 + w_3 x_3 + v_2
x2=w1x1+w3x3+v2
2.舒尔补应用:边际概率, 条件概率
(1)舒尔补的概念
给定任意的矩阵块 M:
M=[ABCD]
M = \left[
\begin{matrix}
A & B \\
C & D
\end{matrix}
\right]
M=[ACBD]
如果,矩阵块 D 是可逆的,则 A−BD−1CA−BD^{−1} CA−BD−1C 称之为 D 关于 M 的舒尔补。
[I−BD−10I][ABCD][I0−D−1CI]=[A−BD−1C00D]
\left[
\begin{matrix}
I & -BD^{-1} \\
0 & I
\end{matrix}
\right]
\left[
\begin{matrix}
A & B \\
C & D
\end{matrix}
\right]
\left[
\begin{matrix}
I & 0 \\
-D^{-1}C & I
\end{matrix}
\right]
=\left[
\begin{matrix}
A-BD^{-1}C & 0 \\
0 & D
\end{matrix}
\right]
[I0−BD−1I][ACBD][I−D−1C0I]=[A−BD−1C00D]
如果,矩阵块 A 是可逆的,则 D−CA−1BD − CA^{−1} BD−CA−1B 称之为 A 关于 M 的舒尔补。
[I0−CA−1I][ABCD][I−A−1B0I]=[A00D−CA−1B]
\left[
\begin{matrix}
I & 0 \\
-CA^{-1} & I
\end{matrix}
\right]
\left[
\begin{matrix}
A & B \\
C & D
\end{matrix}
\right]
\left[
\begin{matrix}
I & -A^{-1}B \\
0 & I
\end{matrix}
\right]
=\left[
\begin{matrix}
A & 0 \\
0 & D-CA^{-1}B
\end{matrix}
\right]
[I−CA−10I][ACBD][I0−A−1BI]=[A00D−CA−1B]
然后,从对角形恢复M矩阵
[IBD−10I][A−BD−1C00D][I0D−1CI]=[ABCD]
\left[
\begin{matrix}
I & BD^{-1} \\
0 & I
\end{matrix}
\right]
\left[
\begin{matrix}
A-BD^{-1}C & 0 \\
0 & D
\end{matrix}
\right]
\left[
\begin{matrix}
I & 0 \\
D^{-1}C & I
\end{matrix}
\right]
=\left[
\begin{matrix}
A & B \\
C & D
\end{matrix}
\right]
[I0BD−1I][A−BD−1C00D][ID−1C0I]=[ACBD]
[I0CA−1I][A00D−CA−1B][IA−1B0I]=[ABCD] \left[ \begin{matrix} I & 0 \\ CA^{-1} & I \end{matrix} \right] \left[ \begin{matrix} A & 0 \\ 0 & D-CA^{-1}B \end{matrix} \right] \left[ \begin{matrix} I & A^{-1}B \\ 0 & I \end{matrix} \right] =\left[ \begin{matrix} A & B \\ C & D \end{matrix} \right] [ICA−10I][A00D−CA−1B][I0A−1BI]=[ACBD]
所以M矩阵的逆矩阵 M−1M^{-1}M−1 为:
[ABCD]−1=[I0−D−1CI][(A−BD−1C)−100D−1][I−BD−10I]
\left[
\begin{matrix}
A & B \\
C & D
\end{matrix}
\right]^{-1}
=\left[
\begin{matrix}
I & 0 \\
-D^{-1}C & I
\end{matrix}
\right]
\left[
\begin{matrix}
(A-BD^{-1}C)^{-1} & 0 \\
0 & D^{-1}
\end{matrix}
\right]
\left[
\begin{matrix}
I & -BD^{-1} \\
0 & I
\end{matrix}
\right]
[ACBD]−1=[I−D−1C0I][(A−BD−1C)−100D−1][I0−BD−1I]
[ABCD]−1=[I−A−1B0I][A−100(D−CA−1B)−1][I0−CA−1I] \left[ \begin{matrix} A & B \\ C & D \end{matrix} \right]^{-1} = \left[ \begin{matrix} I & -A^{-1}B \\ 0 & I \end{matrix} \right] \left[ \begin{matrix} A^{-1} & 0 \\ 0 & (D-CA^{-1}B)^{-1} \end{matrix} \right] \left[ \begin{matrix} I & 0 \\ -CA^{-1} & I \end{matrix} \right] [ACBD]−1=[I0−A−1BI][A−100(D−CA−1B)−1][I−CA−10I]
(2)舒尔补应用于多元高斯分布
假设多元变量x服从高斯分布,且由两部分组成:
x=[a,b]T
x = [a, b]^T
x=[a,b]T
变量之间的协方差矩阵:
K=[ACTCD]
K =
\left[
\begin{matrix}
A & C^T \\
C & D
\end{matrix}
\right]
K=[ACCTD]
其中:A=cov(a,a)A=cov(a,a)A=cov(a,a),D=cov(b,b)D=cov(b, b)D=cov(b,b), C=cov(a,b)C=cov(a, b)C=cov(a,b)
所以:
p(a,b)=p(a)p(b∣a)∝exp(−12[ab][ACTCD]−1[ab])
p(a,b)=p(a)p(b|a) \propto exp(
-\frac{1}{2}
\left[
\begin{matrix}
a & b
\end{matrix}
\right]
\left[
\begin{matrix}
A & C^T \\
C & D
\end{matrix}
\right]^{-1}
\left[
\begin{matrix}
a \\
b
\end{matrix}
\right]
)
p(a,b)=p(a)p(b∣a)∝exp(−21[ab][ACCTD]−1[ab])
使用舒尔补的公式对高斯分布分解:
p(a,b)∝exp(12[(aTA−1a)+(b−CA−1a)TΔA−1(b−CA−1a)])∝exp(12aTA−1a) exp[12(b−CA−1a)TΔA−1(b−CA−1a)]
p(a,b)\\
\propto
exp(
\frac{1}{2}[(a^TA^{-1}a) + (b-CA^{-1}a)^T\Delta_A^{-1}(b-CA^{-1}a)]
)\\
\propto
exp(
\frac{1}{2}a^TA^{-1}a)\;
exp
[\frac{1}{2}(b-CA^{-1}a)^T\Delta_A^{-1}(b-CA^{-1}a)
]
p(a,b)∝exp(21[(aTA−1a)+(b−CA−1a)TΔA−1(b−CA−1a)])∝exp(21aTA−1a)exp[21(b−CA−1a)TΔA−1(b−CA−1a)]
其中:
p(b∣a)∼N(CA−1a,D−CA−1B)p(a)∼N(0,A)
p(b|a)\sim N(CA^{-1}a, D−CA^{−1} B)\\
p(a) \sim N(0,A)
p(b∣a)∼N(CA−1a,D−CA−1B)p(a)∼N(0,A)
p(a),p(b∣a)p(a),p(b|a)p(a),p(b∣a) 的信息矩阵:

由条件概率 p(b∣a)p(b|a)p(b∣a) 的协方差为 ΔA\Delta_AΔA 及上述公式,得信息矩阵 ΔA−1=Λbb\Delta_A^{-1} = \Lambda_{bb}ΔA−1=Λbb
由边际概率 p(a)p(a)p(a) 的协方差为 AAA 及上述公式,得信息矩阵 A−1=Λaa−ΛabΛbb−1ΛbaA^{-1} = \Lambda_{aa} - \Lambda_{ab}\Lambda_{bb}^{-1}\Lambda_{ba}A−1=Λaa−ΛabΛbb−1Λba
(3)总结
边际概率对于协方差矩阵的操作是很容易的,但不好操作信息矩阵。条件概率恰好相反,对于信息矩阵容易操作,不好操作协方差矩阵。

3.滑动窗口算法
(1)例子
有如下最小二乘系统,对应的图模型如有图所示

ξ=arg minξ 12∑i∣∣ri∣∣Σi2
\xi = arg\;min_{\xi}\;\frac{1}{2}\sum_i ||r_i||^2_{\Sigma_i}
ξ=argminξ21i∑∣∣ri∣∣Σi2
其中:ξ=[ξ1,ξ2,⋯ ,ξ6]\xi = [\xi_1, \xi_2, \cdots, \xi_6]ξ=[ξ1,ξ2,⋯,ξ6]^T,r=[r12,r13,r14,r15,r56]Tr=[r_{12},r_{13},r_{14},r_{15},r_{56}]^Tr=[r12,r13,r14,r15,r56]T
针对上述最小二乘问题,对应高斯牛顿求解:
JTΣ−1JΔξ=−JTΣ−1r
J^T\Sigma^{-1}J\Delta \xi = -J^T\Sigma^{-1}r
JTΣ−1JΔξ=−JTΣ−1r

所以可以将公式写成:
∑i=15JiTΣi−1JiΔξ=−∑i=15JiTΣi−1r
\sum_{i=1}^{5}J_i^T\Sigma_i^{-1}J_i\Delta \xi = -\sum_{i=1}^{5}J_i^T\Sigma_i^{-1}r
i=1∑5JiTΣi−1JiΔξ=−i=1∑5JiTΣi−1r
(2)信息矩阵的稀疏性
由于每个残差只和某几个状态量有关,因此,雅克比矩阵求导时,无关项的雅克比为 0。比如:
J2=∂r13∂ξ=[∂r13∂ξ1,0,∂r13∂ξ3,0,0,0]
J_2 = \frac{\partial r_{13}}{\partial \xi} = [\frac{\partial r_{13}}{\partial \xi_1}, 0, \frac{\partial r_{13}}{\partial \xi_3}, 0, 0, 0 ]
J2=∂ξ∂r13=[∂ξ1∂r13,0,∂ξ3∂r13,0,0,0]
Λ2=J2TΣ2−1J2 \Lambda_2 = J_2^T\Sigma_2^{-1}J_2 Λ2=J2TΣ2−1J2
同理,可以计算 $\Lambda_1 , \Lambda_3 , \Lambda_4 ,\Lambda_5 $,并且也是稀疏的。
可以结合十四讲第9章以及第8章直接法部分来更好理解。
(3)基于边际概率的滑动窗口算法
1 为什么 SLAM 需要滑动窗口算法?
随着 VSLAM 系统不断往新环境探索,就会有新的相机姿态以及看到新的环境特征,最小二乘残差就会越来越多,信息矩阵越来越大,计算量将不断增加。
为了保持优化变量的个数在一定范围内,需要使用滑动窗口算法动态增加或移除优化变量。
2 滑动窗口算法大致流程
增加新的变量进入最小二乘系统优化;如果变量数目达到了一定的维度,则移除老的变量。SLAM 系统不断循环前面两步。
3 利用边际概率移除老的变量
直接丢弃变量和对应的测量值,会损失信息。正确的做法是使用边际概率,将丢弃变量所携带的信息传递给剩余变量。

如果是直接丢弃,信息矩阵如何变化?用边际概率来操作又会带来什么问题?
(4)例子
如下图优化系统中,随着 xt+1x_{t+1}xt+1 的进入,变量 xtx_txt 被移除。
marginalization 会使得信息矩阵变稠密!原先条件独立的变量,可能变得相关。

4.滑动窗口中的 FEJ 算法
(1)回顾例子
1 如图所示,在 t∈[0,k]st\in[0, k]st∈[0,k]s 时刻, 系统中状态 量为 ξi,i∈[1,6]\xi_i , i \in [1, 6]ξi,i∈[1,6]。第 k′k^′k′ 时刻,加入新的观 测和状态量 ξ7\xi_7ξ7

2 在第 k 时刻,最小二乘优化完以后,marg 掉变量 ξ1\xi_1ξ1。被 marg 的状态量记为 xmx_mxm, 剩余 的变量 ξi,i∈[2,5]\xi_i , i ∈ [2, 5]ξi,i∈[2,5] 记为 xrx_rxr。
3 marg 发生以后,xmx_mxm 所有的变量以及对应的 测量将被丢弃。同时,这部分信息通过 marg 操作传递给了保留变量 xrx_rxr ,marg 变量的信息跟 ξ6\xi_6ξ6 不相关。
4 第 k′k^′k′ 时刻,加入新的状态量 ξ7\xi_7ξ7(记作 xnx_nxn) 以及对应的观测,开始新一轮最小二乘优化。
(2)marg 前后
已知的是:
∑i=15JiTΣi−1JiΔξ=−∑i=15JiTΣi−1r
\sum_{i=1}^{5}J_i^T\Sigma_i^{-1}J_i\Delta \xi = -\sum_{i=1}^{5}J_i^T\Sigma_i^{-1}r
i=1∑5JiTΣi−1JiΔξ=−i=1∑5JiTΣi−1r
marg 前,变量 xmx_mxm 以及对应测量 SmS_mSm 构建的最小二乘信息矩阵为:

marg 后,变量 xmx_mxm 的测量信息传递给了变量 xrx_rxr
bp(k)=bmr(k)−Λrm(k)Λmm(k)−1bmm(k)
b_p(k) = b_{mr}(k) -\Lambda_{rm}(k)\Lambda_{mm}(k)^{-1}b_{mm}(k)
bp(k)=bmr(k)−Λrm(k)Λmm(k)−1bmm(k)
Λp(k)=Λrr(k)−Λrm(k)Λmm−1(k)Λmr(k) \Lambda_p(k) = \Lambda_{rr}(k) -\Lambda_{rm}(k)\Lambda_{mm}^{-1}(k)\Lambda_{mr}(k) Λp(k)=Λrr(k)−Λrm(k)Λmm−1(k)Λmr(k)
下标 p 表示 prior. 即这些信息将构建一个关于 xrx_rxr 的先验信息。
我们可以从 bp(k)b_p(k)bp(k), Λp(k)\Lambda_p(k)Λp(k) 中反解出一个残差 rp(k)r_p(k)rp(k) 和对应的雅克比矩 阵 Jp(k)J_p(k)Jp(k). 需要注意的是,随着变量 xr(k)x_r(k)xr(k) 的后续不断优化变化,残差 rp(k)r_p(k)rp(k) 或者 bp(k)b_p(k)bp(k) 也将跟着变化,但雅克比 Jp(k)J_p(k)Jp(k) 则固定不变了。???
(3)新测量信息和旧测量信息构建新的系统
在 k′k^′k′ 时刻,新残差 r27r_{27}r27 和先验信息 bp(k)b_p(k)bp(k), Λp(k)\Lambda_p(k)Λp(k) 以及残差 r56r_{56}r56 构建新的最小二乘问题:
b(k′)=ΠTbp(k)−∑(i,j)∈Sa(k′)Jij(k′)TΣij−1rij(k′)
b(k^\prime) = \Pi^T b_{p}(k) -\sum_{(i,j)\in S_a(k^\prime)} J_{ij}(k^\prime)^T\Sigma_{ij}^{-1}r_{ij}(k^\prime)
b(k′)=ΠTbp(k)−(i,j)∈Sa(k′)∑Jij(k′)TΣij−1rij(k′)
Λ(k′)=ΠTΛp(k)Π−∑(i,j)∈Sa(k′)Jij(k′)TΣij−1Jij(k′) \Lambda(k^\prime) = \Pi^T\Lambda_p(k)\Pi -\sum_{(i,j)\in S_a(k^\prime)} J_{ij}(k^\prime)^T\Sigma_{ij}^{-1}J_{ij}(k^\prime) Λ(k′)=ΠTΛp(k)Π−(i,j)∈Sa(k′)∑Jij(k′)TΣij−1Jij(k′)
其中:Π=[Idim xr 0]\Pi=[I_{dim\;x_r}\;\;0]Π=[Idimxr0] 将矩阵维度进行扩容,SaS_aSa 用来表示除被 marg 掉的测量以外的其他测量,如 r56,r27r_{56}, r_{27}r56,r27。
出现的问题:
由于被 marg 的变量以及对应的测量已被丢弃,先验信息 Λp(k)\Lambda_p(k)Λp(k) 中关于 xrx_rxr 的雅克比在后续求解中没法更新。
但 xrx_rxr 中的部分变量还跟其他残差有联系, 如 ξ2,ξ5\xi_2, \xi_5ξ2,ξ5。这些残差如 r27r_{27}r27 对 ξ2\xi_2ξ2 的雅克比会随着 ξ2\xi_2ξ2 的迭代更新而不断在最新的线性化点处计算。
(4)滑动窗口算法导致的问题
滑动窗口算法优化的时候,信息矩阵如上述公式变成了两部分,且这两部分计算雅克比时的线性化点(个人理解:时间变了,变量发生变化)不同。这可能会导致信息矩阵的零空间发生变化,从而在求解时引入错误信息。
滑动窗口算法中,对于同一个变量,不同残差对其计算雅克比矩阵时线性化点可能不一致,导致信息矩阵可以分成两部分,相当于在信息矩阵中多加了一些信息,使得其零空间出现了变化。
解决办法:First Estimated Jacobian
FEJ 算法:不同残差对同一个状态求雅克比时,线性化点必须一致。 这样就能避免零空间退化而使得不可观变量变得可观。
本文探讨了SLAM中的信息矩阵概念及其稀疏性,介绍了基于边际概率的滑动窗口算法,并讨论了FEJ算法如何解决滑动窗口带来的问题。

454

被折叠的 条评论
为什么被折叠?



