VSLAM之边缘化 Marginalization 和 FEJ (First Estimated Jocobian)

1. 前言

本博客主要介绍了VINS-Mono中边缘化的相关知识,由于VINS-Mono中只是提及了边缘化的策略并没有提及边缘化信息传递的原理,因此本博客主要参考了崔化坤的《VINS论文推导及代码解析》、深蓝学院的VIO课程以及贺博的博客SLAM中的marginalization 和 Schur complement

VINS-Mono的边缘化与在《SLAM14讲》中提及的边缘化 (可看博客SLAM学习——后端(二)) 不同:

  • 《SLAM14讲》中提及的边缘化 (G2O边缘化) 是在计算求解过程中,先消去路标点变量,实现先求解相机位姿,然后再利用求解出来的相机位姿反过来计算路标点的过程,目的是为了加速求解,并非真的将路标点给边缘化点
  • VINS-Mono的边缘化则真正需要边缘化掉滑动窗口中的最老帧或次新帧,目的是希望不再计算这一帧的位姿或者与其相关的路标点,但是希望保留该帧对窗口内其他帧的约束关系

2. 舒尔补 (Schur complement) 实现边缘化 (Marginalization)

2.1 舒尔补操作及矩阵快速求逆

将矩阵 M = [ A B C D ] M=\begin{bmatrix} A & B \\ C & D\end{bmatrix} M=[ACBD]变成上三角或者下三角形过程中,会用到舒尔补操作: [ I 0 − C A − 1 I ] [ A B C D ] = [ A B 0 Δ A ] \begin{bmatrix} I & 0 \\ -CA^{-1} & I \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} = \begin{bmatrix} A & B \\ 0 & \Delta_{A}\end{bmatrix} [ICA10I][ACBD]=[A0BΔA] [ A B C D ] [ I − A − 1 B 0 I ] = [ A 0 C Δ A ] \begin{bmatrix}A & B \\ C & D\end{bmatrix}\begin{bmatrix} I & -A^{-1}B \\ 0 & I\end{bmatrix}=\begin{bmatrix} A & 0 \\ C & \Delta _{A}\end{bmatrix} [ACBD][I0A1BI]=[AC0ΔA] 其中 A A A为可逆矩阵, Δ A = D − C A − 1 B \Delta_{A}=D-CA^{-1}B ΔA=DCA1B,称为A关于M的舒尔补,联合起来,将M变形成对角矩阵: [ I 0 − C A − 1 I ] [ A B C D ] [ I − A − 1 B 0 I ] = [ A 0 0 Δ A ] \begin{bmatrix} I & 0 \\ -CA^{-1} & I \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} \begin{bmatrix} I & -A^{-1}B \\ 0 & I\end{bmatrix}=\begin{bmatrix} A & 0 \\ 0 & \Delta _{A}\end{bmatrix} [ICA10I][ACBD][I0A1BI]=[A00ΔA] 反过来又能从对角矩阵恢复成矩阵 M M M [ I 0 C A − 1 I ] [ A 0 0 Δ A ] [ I A − 1 B 0 I ] = [ A B C D ] \begin{bmatrix} I & 0 \\ CA^{-1} & I \end{bmatrix}\begin{bmatrix} A & 0 \\ 0 & \Delta _{A}\end{bmatrix} \begin{bmatrix} I & A^{-1}B \\ 0 & I\end{bmatrix} = \begin{bmatrix} A & B \\ C & D \end{bmatrix} [ICA10I][A00ΔA][I0A1BI]=[ACBD] 以上变换均建立在矩阵 A A A可逆的前提下,如果矩阵 A A A不可逆而矩阵 D D D可逆,同样可以进行舒尔补操作 M M M矩阵变为上三角或者下三角的形式: [ I − B D − 1 0 I ] [ A B C D ] = [ Δ D 0 C D ] \begin{bmatrix} I & -BD^{-1} \\ 0 & I \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} = \begin{bmatrix} \Delta_{D} & 0 \\ C & D \end{bmatrix} [I0BD1I][ACBD]=[ΔDC0D] 其中 Δ D = A − B D − 1 C \Delta_{D}=A-BD^{-1}C ΔD=ABD1C,称为 D D D关于 M M M的舒尔补。

舒尔补操作在实现将矩阵 M M M分解为上三角下三角形式的同时,也实现了矩阵M的快速求逆 M = [ A B C D ] = [ I 0 C A − 1 I ] [ A 0 0 Δ A ] [ I A − 1 B 0 I ] M=\begin{bmatrix}A & B \\ C & D \end{bmatrix}=\begin{bmatrix}I & 0 \\CA^{-1} & I \end{bmatrix} \begin{bmatrix} A & 0 \\ 0 & \Delta_{A}\end{bmatrix}\begin{bmatrix} I & A^{-1}B \\ 0 & I\end{bmatrix} M=[ACBD]=[ICA10I][A00ΔA][I0A1BI] 求逆可得: M − 1 = [ A B C D ] − 1 = [ I − A − 1 B 0 I ] [ A − 1 0 0 Δ A − 1 ] [ I 0 − C A − 1 I ] M^{-1}=\begin{bmatrix}A & B \\ C & D\end{bmatrix}^{-1}=\begin{bmatrix}I & -A^{-1}B \\ 0 & I\end{bmatrix} \begin{bmatrix} A^{-1}& 0 \\ 0 & \Delta_{A}^{-1}\end{bmatrix} \begin{bmatrix} I & 0 \\ -CA^{-1} & I \end{bmatrix} M1=[ACBD]1=[I0A1BI][A100ΔA1][ICA10I] 其中 [ I − A − 1 B 0 I ] [ I A − 1 B 0 I ] = I \begin{bmatrix}I & -A^{-1}B \\ 0 & I\end{bmatrix}\begin{bmatrix}I & A^{-1}B \\ 0 & I\end{bmatrix}=I [I0A1BI][I0A1BI]=I

2.2 多元高斯分布下的舒尔补分解:边际分布 (marginal distribution) 及条件分布

假设多元变量服从零均值高斯分布 P ( α , β ) P(\alpha, \beta) P(α,β),且由俩部分组成: x = [ α β ] \mathbf{x}=\begin{bmatrix} \alpha \\ \beta \end{bmatrix} x=[αβ],变量之间构成的协方差矩阵为: K = [ A C T C D ] (1) K=\begin{bmatrix} A & C^{T} \\ C & D\end{bmatrix} \tag{1} K=[ACCTD](1) 其中 A = c o v ( α ,

  • 31
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值