vSLAM学习笔记——边缘化

BA求解

B A BA BA求解时对目标函数做线性化处理:
1 2 ∣ ∣ f ( x + Δ x ) ∣ ∣ 2 ≈ 1 2 ∑ i = 1 m ∑ j = 1 n ∣ ∣ e i j + F i j Δ ξ i + E i j Δ p j ∣ ∣ 2 (1) \frac{1}{2}||f(x+\Delta x)||^2\approx\frac{1}{2}\sum^m_{i=1}\sum^n_{j=1}||e_{ij}+F_{ij}\Delta\xi_i+E_{ij}\Delta p_j||^2\tag 1 21f(x+Δx)221i=1mj=1neij+FijΔξi+EijΔpj2(1)
F i j F_{ij} Fij表示在当前状态下对相机姿态的偏导数 E i j E_{ij} Eij表示该函数对路标点位置的偏导
将相机为自变量和空间点变量放在一起可将上式简化为:
1 2 ∣ ∣ f ( x + Δ x ) ∣ ∣ 2 = 1 2 ∣ ∣ e + F Δ x c + E Δ x p ∣ ∣ 2 (2) \frac{1}{2}||f(x+\Delta x)||^2 = \frac{1}{2}||e+F \Delta x_c+E\Delta x_p||^2\tag 2 21f(x+Δx)2=21e+FΔxc+EΔxp2(2)
由于把变量归类成了位姿和空间点两种,所以雅克比矩阵可以分块为
J = [ F E ] (3) J=\begin{bmatrix}F&E\end{bmatrix}\tag 3 J=[FE](3)
以高斯牛顿法为例, H H H矩阵为:
H = J T J = [ F T F F T E E T F E T E ] (4) H=J^TJ=\begin{bmatrix}F^TF&F^TE\\\\E^TF&E^TE\end{bmatrix}\tag 4 H=JTJ=FTFETFFTEETE(4)
因为考虑了所有的优化变量,所以这个线性方程的维度非常大,如果直接对 H H H求逆来计算增量方程将会非常消耗计算资源。

稀疏性

以上得到的 H H H矩阵具有稀疏结构的特点,该结构可以自然、显式地用地图优化来表示。
H H H矩阵的稀疏性是由雅克比矩阵 J ( x ) J(x) J(x)引起的,因为部分误差项与其他路标和轨迹无关,这使得 H H H中存在很多零块。对于具有这种稀疏结构的 H H H,线性方程 H Δ x = g H\Delta x=g HΔx=g的求解可以用若干种加速计算的方法。其中 S c h u r Schur Schur消元是SLAM中最常用的手段,也被成为 M a r g i n a l i z a t i o n Marginalization Marginalization

边缘化

在这里插入图片描述
H H H矩阵可以分成 4 4 4个块。左上角为对角块矩阵,每个对角块元素的维度与相机位姿的维度相同,且是一个对角块矩阵。右下角也是对角块矩阵,每个对角块的维度是路标的维度。这 4 4 4个区域正好对应了 ( 4 ) (4) (4)式中的 4 4 4个矩阵块。将这个四个块记为 B , E , E T , C B,E,E^T,C BEETC
于是对应的线性方程组也可以由 H Δ x = g H\Delta x=g HΔx=g变为如下形式:
[ B E E T C ] [ Δ x c Δ x p ] = [ v w ] \begin{bmatrix}B&E\\\\E^T&C\end{bmatrix}\begin{bmatrix}\Delta x_c\\\\\Delta x_p\end{bmatrix}=\begin{bmatrix}v\\\\w\end{bmatrix} BETECΔxcΔxp=vw
其中 B B B是对角块矩阵,每个对角块的维度和相机参数的维度相同,对角块的个数是相机变量的个数。由于路标数量会远远大于相机变量个数,所以 C C C往往也远大于 B B B。三维空间中每个路标点为三维,于是 C C C矩阵为对角块矩阵,每个块为 3 × 3 3\times3 3×3矩阵。
对角块矩阵求逆的难度远小于对一般矩阵的求逆难度,因为只需要对那些对角线矩阵块分别求逆即可。考虑到这个特性,对线性方程组进行高斯消元,目标是消去右上角的非对角部分 E E E,得
[ I − E C − 1 0 I ] [ B E E T C ] [ Δ x c Δ x p ] = [ I − E C − 1 0 I ] [ v w ] \begin{bmatrix}I&-EC^{-1}\\\\0&I\end{bmatrix}\begin{bmatrix}B&E\\\\E^T&C\end{bmatrix}\begin{bmatrix}\Delta x_c\\\\\Delta x_p\end{bmatrix}=\begin{bmatrix}I&-EC^{-1}\\\\0&I\end{bmatrix}\begin{bmatrix}v\\\\w\end{bmatrix} I0EC1IBETECΔxcΔxp=I0EC1Ivw
整理得
[ 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&0\\\\E^T&C\end{bmatrix}\begin{bmatrix}\Delta x_c\\\\\Delta x_p\end{bmatrix}=\begin{bmatrix}v-EC^{-1}w\\\\w\end{bmatrix} BEC1ETET0CΔxcΔxp=vEC1ww
消元后,方程组第一行变成了和 Δ x p \Delta x_p Δxp无关的项。单独拿出来后可以得到关于位姿部分的增量方程:
[ B − E C − 1 E T ] Δ x c = v − E C − 1 w \begin{bmatrix}B-EC^{-1}E^T\end{bmatrix}\Delta x_c=v-EC^{-1}w [BEC1ET]Δxc=vEC1w
先求解这个方程,然后把解得的 Δ x c \Delta x_c Δxc代入原方程,求解 Δ x p \Delta x_p Δxp。这个过程成为Marginalization,或者Schur消元

优势

相比于直接解线性方程的做法,优势在于:

  1. 在消元过程中,由于 C C C为对角块,所以 C − 1 C^{-1} C1容易解出。
  2. 求解了 Δ x c \Delta x_c Δxc之后,路标部分的增量方程由 Δ x p = C − 1 ( w − E T Δ x c ) \Delta x_p=C^{-1}(w-E^T\Delta x_c) Δxp=C1(wETΔxc)给出。依然用到了 C − 1 C^{-1} C1易于求解的特性。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小岳在线debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值