SLAM中的块矩阵与schur补

SLAM中的块矩阵与schur补

Schur补的另一种解释

Schur从概率角度来解释是比较常见的一种推导,可以参考博客https://blog.csdn.net/weixin_41469272/article/details/121994485,此外也可以通过消元与回代的基本原理得到相同的结论。

首先设我们需要求解以下问题:
[ A B C D ] [ x 1 x 2 ] = [ v w ] \begin{bmatrix}A&B\\C&D\end{bmatrix}\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}=\begin{bmatrix}v\\w\end{bmatrix} [ACBD][x1x2]=[vw]
通常对于SLAM问题,信息矩阵中的{ B = C T B=C^T B=CT}, A , D A,D AD为可逆(对称)方阵

可以得到:
A x 1 + B x 2 = v C x 1 + D x 2 = w Ax_{1}+Bx_{2}=v\\Cx_{1}+Dx_{2}=w Ax1+Bx2=vCx1+Dx2=w
设我们需要marg掉 x 2 x_2 x2,或者先求解 x 1 x_1 x1 H Δ x = b H\Delta x=b HΔx=b问题),

我们对第一行左右两侧均乘以 B D − 1 BD^{-1} BD1,继而可以得到:
B D − 1 C x 1 + B D − 1 D x 2 = B D − 1 w ⇒ B x 2 = B D − 1 w − B D − 1 C x 1 BD^{-1}Cx_{1}+BD^{-1}Dx_{2}=BD^{-1}w \Rightarrow Bx_{2}=BD^{-1}w-BD^{-1}Cx_{1} BD1Cx1+BD1Dx2=BD1wBx2=BD1wBD1Cx1

带入 C x 1 + D x 2 = w Cx_{1}+Dx_{2}=w Cx1+Dx2=w得:
( A − B D − 1 C ) x 1 = v − B D − 1 w (A-BD^{-1}C)x_{1}=v-BD^{-1}w (ABD1C)x1=vBD1w

从而可以看出,我们通过回代同样得到了Schur补的情况。从而,我们可以知道无论是边缘化变量,还是更新参数的 H Δ x = b H\Delta x=b HΔx=b的分块求解问题,归根到底都可以理解为变量的消元问题。

对角块矩阵的逆为各个块的逆的组合

对于给定的 ( 9 × 9 9 \times 9 9×9) 矩阵:

B = [ A 1 0 0 0 A 2 0 0 0 A 3 ] B = \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} B= A1000A2000A3

其中 A 1 A_1 A1, A 2 A_2 A2, 和 A 3 A_3 A3 均为可逆的 3 × 3 3 \times 3 3×3 矩阵,可以通过求解块对角矩阵的逆来找到 B B B的逆。

1. 块对角矩阵的逆

对于一个块对角矩阵:

B = [ A 1 0 0 0 A 2 0 0 0 A 3 ] B = \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} B= A1000A2000A3

其逆矩阵也是一个块对角矩阵,其形式为:

B − 1 = [ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] B^{-1} = \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} B1= A11000A21000A31

2. 证明

X X X B B B 的逆矩阵,即 B X = I BX = I BX=I,其中 I I I 9 × 9 9 \times 9 9×9 的单位矩阵。

考虑以下矩阵乘法:

[ A 1 0 0 0 A 2 0 0 0 A 3 ] [ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] = [ A 1 A 1 − 1 0 0 0 A 2 A 2 − 1 0 0 0 A 3 A 3 − 1 ] = [ I 3 0 0 0 I 3 0 0 0 I 3 ] \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} = \begin{bmatrix} A_{1}A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}A_{3}^{-1} \end{bmatrix} = \begin{bmatrix} I_{3} & 0 & 0 \\ 0 & I_{3} & 0 \\ 0 & 0 & I_{3} \end{bmatrix} A1000A2000A3 A11000A21000A31 = A1A11000A2A21000A3A31 = I3000I3000I3

这里的 I 3 I_{3} I3 3 × 3 3 \times 3 3×3 的单位矩阵。

可以看到,右边的矩阵确实是 9 × 9 9 \times 9 9×9 的单位矩阵 I I I。因此,

[ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} A11000A21000A31

是 B$ 的逆矩阵。

因而型如以下的SLAM求解问题,可以使用schur补+对角块矩阵逆的特性,高效求解
[ B E E T C ] [ Δ x c Δ x p ] = [ 2 20 ] \left[\begin{matrix}B&E\\E^{T}&C\end{matrix}\right]\left[\begin{matrix}\Delta x_{c}\\\Delta x_{p}\end{matrix}\right]=\left[\begin{matrix}2\\20\end{matrix}\right] [BETEC][ΔxcΔxp]=[220]
其中, Δ x c \Delta x_{c} Δxc对应传感器位姿变量的更新量; Δ x c \Delta x_{c} Δxc特征点位置对应的更新量。SLAM问题中的信息矩阵的结构对应如下图所示,其中关于特征点的部分(该矩阵中的C块矩阵)为对角块矩阵。

Schur补得到:
[ B − E C − 1 E T 0 E T C ] [ Δ x c Δ x p ] = [ v − E C − 1 w w ] . \begin{bmatrix}B-EC^{-1}E^T&\mathbf{0}\\E^T&C\end{bmatrix}\left[\begin{array}{c}\Delta\boldsymbol{x}_c\\\Delta\boldsymbol{x}_p\end{array}\right]=\left[\begin{array}{c}\boldsymbol{v}-\boldsymbol{E}C^{-1}\boldsymbol{w}\\\\\boldsymbol{w}\end{array}\right]. [BEC1ETET0C][ΔxcΔxp]= vEC1ww .

从而可以将求逆问题简化为对角块矩阵求逆的问题,先得到 Δ x c \Delta\boldsymbol{x}_c Δxc
[ B − C − 1 E T ] Δ x c = v − E C − 1 w . [B-C^{-1}E^T]\Delta\boldsymbol{x}_c=\boldsymbol{v}-EC^{-1}\boldsymbol{w}. [BC1ET]Δxc=vEC1w.

而后,再带入 B Δ x c + E Δ x p = v B\Delta\boldsymbol{x}_c+E\Delta\boldsymbol{x}_p=\boldsymbol{v} BΔxc+EΔxp=v计算得到 Δ x p \Delta\boldsymbol{x}_p Δxp

此外,也可以利用SAM的方法参考链接,经过因式分解,得到上三角阵,而后使用回代的方法进行求解。

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值