边缘化是SLAM中常用的消元方法,能够有效减少计算量。在SLAM的BA过程中,对于状态变量的更新,可以给出一般化的更新方程:
Hδx=gH\delta x = g
其中,HH是信息矩阵。
上面的方程可以写成:
[ΛaΛbΛbTΛc][δxaδxb]=[gagb]\begin{bmatrix} \Lambda_a & \Lambda_b\\ \Lambda_b^T& \Lambda_c \end{bmatrix} \begin{bmatrix} \delta x_a \\ \delta x_b \end{bmatrix} = \begin{bmatrix} g_a \\ g_b \end{bmatrix}
其中,δxa\delta x_a是我们不希望更新的变量。
在等式两边右乘[I0ΛbTΛa1I]\begin{bmatrix}I &0 \\ -\Lambda _b^T \Lambda _a^{-1} & I \end{bmatrix}
可得:
[ΛaΛb0ΛcΛbTΛa1Λb][δxaδxb]=[gagbΛbTΛa1ga]\begin{bmatrix} \Lambda_a & \Lambda_b\\ 0& \Lambda_c -\Lambda_b^T \Lambda_a^{-1} \Lambda_b \end{bmatrix} \begin{bmatrix} \delta x_a \\ \delta x_b \end{bmatrix} = \begin{bmatrix} g_a \\ g_b -\Lambda_b^T \Lambda_a^{-1}g_a \end{bmatrix}
其中,ΛcΛbTΛa1Λb\Lambda_c-\Lambda_b^T \Lambda_a^{-1} \Lambda_b被称为Λa\Lambda _a的舒尔补。
所以:
(ΛcΛbTΛa1Λb)δxb=gbΛbTΛa1ga(\Lambda_c-\Lambda_b^T \Lambda_a^{-1} \Lambda_b)\delta x_b = g_b -\Lambda_b^T \Lambda_a^{-1}g_a
上面就是δxb\delta x_b的更新方程。
边缘化在SLAM中的使用图示:
利用舒尔补进行边缘化
利用舒尔补进行边缘化
利用舒尔补进行边缘化
参考:https://github.com/StevenCui/VIO-Doc/blob/master/VINS%E8%AE%BA%E6%96%87%E6%8E%A8%E5%AF%BC%E5%8F%8A%E4%BB%A3%E7%A0%81%E8%A7%A3%E6%9E%90_V13_190317.pdf

相关文章:

  • 2021-12-30
  • 2022-12-23
  • 2021-10-27
  • 2021-09-27
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-25
  • 2021-08-24
  • 2021-05-26
  • 2021-12-16
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
相关资源
相似解决方案