文章目錄
- SLAM中的塊矩陣與schur補
- 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} [AC?BD?][x1?x2??]=[vw?]
通常對于SLAM問題,信息矩陣中的{ B = C T B=C^T B=CT}, A , D A,D A,D為可逆(對稱)方陣
可以得到:
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} BD?1,繼而可以得到:
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} BD?1Cx1?+BD?1Dx2?=BD?1w?Bx2?=BD?1w?BD?1Cx1?
帶入 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 (A?BD?1C)x1?=v?BD?1w
從而可以看出,我們通過回代同樣得到了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= ?A1?00?0A2?0?00A3?? ?
其中 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= ?A1?00?0A2?0?00A3?? ?
其逆矩陣也是一個塊對角矩陣,其形式為:
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} B?1= ?A1?1?00?0A2?1?0?00A3?1?? ?
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} ?A1?00?0A2?0?00A3?? ? ?A1?1?00?0A2?1?0?00A3?1?? ?= ?A1?A1?1?00?0A2?A2?1?0?00A3?A3?1?? ?= ?I3?00?0I3?0?00I3?? ?
這里的 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} ?A1?1?00?0A2?1?0?00A3?1?? ?
是 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] [BET?EC?][Δ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]. [B?EC?1ETET?0C?][Δxc?Δxp??]= ?v?EC?1ww? ?.
從而可以將求逆問題簡化為對角塊矩陣求逆的問題,先得到 Δ 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}. [B?C?1ET]Δxc?=v?EC?1w.
而后,再帶入 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的方法參考鏈接,經過因式分解,得到上三角陣,而后使用回代的方法進行求解。