0. 简介
对于视觉里程计而言,在面对低纹理场景时,往往会出现退化的问题,究其原因是人造环境往往很难找到足够数量的点特征。而其他的几何视觉线索则是比较容易找到,在城市等场景中,通常表现出结构规律,如平行性或正交性,满足曼哈顿世界的假设。之前我们已经在《经典文献阅读之–PL-SLAM》文中介绍了点线SLAM的形式,相关的具体代码我们可以在Github上找到
1. 文章贡献
在本文章中,我们则进一步介绍MSC-VO,一种基于rgb-d的视觉里程计方法,它结合了点和线特征,如果存在,可以利用这些结构规正和场景的曼哈顿轴。此外我们需要着重注意的是,这些结构约束最初被用来准确地估计提取的线的三维位置。这些约束还与估计的曼哈顿轴和点和线的重投影误差相结合,通过局部地图优化来细化相机姿态。这种组合使我们的方法即使在没有上述约束的情况下也能够运行,从而允许该方法在更广泛的场景中工作。具体的主要贡献如下
-
提出了一种鲁棒的针对低纹理环境的RGB-DVO框架,可以在场景中存在结构规律和MA对齐时提高姿态精度。否则,我们的解决方案仍然可以运行,这将在实验结果部分中显示。
-
一种基于场景中所呈现的结构信息的三维线端点计算方法。
-
一种精确、高效的三维局部地图优化策略,它将重投影误差与结构约束和MA对齐相结合。
-
一种新颖的MA初始化过程,通过在多图非线性最小二乘公式中使用多帧观测来改进传统采用的平均位移算法的估计。
2. 详细内容
MSC-VO建立在ORB-SLAM2[2]的跟踪和局部映射组件之上。因此,它包含两个并行运行的线程,如图2所示。其一开始结构和PL-SLAM类似,我们主要就介绍三维特征位置估计以及曼哈顿轴估计这两个部分。
2.1 三维特征位置估计
一旦检测到点和线并对其进行描述,就可以得到它们在摄像机坐标中的三维位置。将点 p i p_i pi在 I t d I^d_t Itd中的2D位置对应的值作为深度进行反向投影。由此得到的摄像机坐标中的3D位置表示为 P i c P^c_i Pic。由于线条比点更容易受到深度不连续性和遮挡的影响,这个简单的过程可能会导致不准确的3D线条。为了降低这种影响,提出了一种鲁棒的两步法来计算三维直线端点。
首先,对于每个线段
j
j
j,通过反向投影符合图像中直线的点子集,计算其端点的初始3D位置,记为
{
S
j
c
,
E
j
c
}
\{S^c_j, E^c_j\}
{Sjc,Ejc},然后执行[14]中的鲁棒拟合步骤。三维归一化直线
L
j
c
L^c_j
Ljc的计算类似于等式1。然后,利用场景的结构约束来细化每条检测到的直线;我们首先把平行线和垂直线联系起来。为此,对于当前图像中检测到的每一对直线
(
L
m
c
,
L
n
c
)
(L^c_m, L^c_n)
(Lmc,Lnc),我们通过点积计算两个方向向量之间夹角的余弦:
我们只选择那些余弦值接近0或1的线段对,
(
L
m
c
,
L
n
c
)
(L^c_m, L^c_n)
(Lmc,Lnc)分别代表垂直线或平行线。对选定的直线对采用非线性优化方法优化其直线端点。为此,采用g2o[20]实现的Levenberg-Marquardt算法。形式上,我们定义直线
L
m
c
L^c_m
Lmc和
L
n
c
L^c_n
Lnc之间的方向差异
d
d
d为:
我们分别表示
L
⊥
\mathbb{L}_⊥
L⊥和
L
∣
∣
\mathbb{L}_{||}
L∣∣为有效垂直线对和有效平行线对的集合。假设一对
(
L
m
c
,
L
n
c
)
∈
L
⊥
(L^c_m, L^c_n)∈\mathbb{L}_⊥
(Lmc,Lnc)∈L⊥,误差项
L
m
,
n
⊥
\mathbb{L}_{m,n}^⊥
Lm,n⊥为: