ManhattanSLAM:论文笔记

ManhattanSLAM:论文笔记

原文:《ManhattanSLAM: Robust Planar Tracking and Mapping LeveragingMixture of Manhattan Frames》

摘要

本文提出一种RGB-D SLAM系统

之前的工作使用曼哈顿世界(MW)假设来估计低漂移摄像机的姿态,反过来限制了此类系统的应用。相比之下,本文提出了一种新的方法,在MW和非MW环境中提供稳健的跟踪。我们检查平面之间的正交关系,直接检测曼哈顿帧,将场景建模为曼哈顿帧的混合体

对于MW场景,我们对姿势估计进行了解耦,并提供了一种基于曼哈顿帧观测的新型无漂移旋转估计方法。对于MW场景中的平移估计和非MW场景中的全部相机姿势估计,我们利用点、线和平面特征在具有挑战性的场景中进行稳健的跟踪。此外,通过利用在每一帧中检测到的平面特征,我们还提出了一种高效的基于surfel的稠密建图策略,它将每幅图像划分为平面和非平面区域。平面surfel直接从我们地图中的稀疏平面中初始化,而非平面surfel点则通过提取超级像素建立。

近期开源

方法

我们的系统处理三个主要任务:跟踪、稀疏建图和稠密建图。

在这里插入图片描述

A.追踪框架

对于每个RGB-D帧,点和线是从RGB图像中提取的,而平面则是从深度图中提取的。与[ORB-SLAM2]类似,我们利用恒速运动模型来获得初始姿势估计,并通过特征匹配和结构规律进一步优化。

对于点和线,使用当前帧的引导搜索来匹配特征,而平面则直接在全局图中匹配。

然后,我们检测MF以确定当前场景是MW场景还是非MW场景,使用各自的姿势估计策略,

在这两种情况下,作为一个额外的步骤,我们跟踪当前帧的局部地图中的特征,以进一步完善姿势估计。如果当前帧观察到的点少于前一帧观察到的点的90%,则创建一个新的关键帧

B.特征检测和匹配

(应用场景主要是低纹理场景)

  1. 点:对于点,我们使用ORB特征,它是基于FAST关键点检测器[32]和BRIEF描述器[33]。一个三维点被表示为P = (X,Y,Z),而它的二维观察被表示为pobs = (u,v)。通过将三维点投射到图像上并利用各自描述符之间的汉明距离找到最接近的观测值来确定匹配度。

    (和ORB-SLAM2中的处理方式相同)

  2. 线:为了检测和描述图像中的线段,我们使用鲁棒的LSD检测器[34]和LBD描述符[35]。**为了确定三维线和二维观测之间的匹配,三维线的两个端点被单独投影,并使用LBD描述符进行匹配。观测的归一化2D线函数如下所示:

    在这里插入图片描述

  3. 平面:使用AHC方法[36]从下采样的三维点云中提取平面,该方法为每个平面实例提供平面系数(n,d)和点云中的支持点。**我们使用体素网格过滤对每个平面的点云进一步降样,体素大小为0.2米。此外,我们放弃了潜在的不稳定的平面观测,即平面和其点之间的最大点平面距离大于0.04米。对于姿势优化,我们使用平面的最小表示法:q(π) = (φ = arctan( ny/nx ),ψ = arcsin(nz),d), 其中φ和ψ是平面法线的方位角和仰角。平面匹配是通过比较法线之间的角度和平面的点面距离来确定的。

    (这里应该是类似作者之前的论文《RGB-D SLAM with Structural Regularities》里面的处理方式)

    在这里插入图片描述

C. 曼哈顿帧的检测和建图

(以下所有MF代指曼哈顿帧)

与使用流行的均值偏移聚类算法[10], [11]进行MF检测不同的是,我们利用的是已经从场景中提取的平面法线

一个曼哈顿帧Mk可以由三个相互垂直的平面法线(nk1,nk2,nk3)表示。

为了检测当前帧Fi中的MF Mk,我们检查平面法线之间的角度nz,其中nz∈{n0…nr}是检测到的平面的法线,r是Fi中检测到的平面总数。只要有任何三个平面相互垂直,就能检测到一个MF。我们可以用旋转矩阵来表示在Fi的相机坐标Ci中对Mk的观测

在这里插入图片描述

如果只找到两个垂直法线nk1和nk2,第三个nk3可以通过取nk1和nk2的叉乘来恢复,因此MF也可以从两个平面恢复。

由于传感器噪声会导致不一致,即矩阵Rcimk的列不是正交的,使用SVD来用最接近的旋转矩阵ˆRcimk来近似Rcimk。

在这里插入图片描述

此外,我们还建立了一个曼哈顿地图G来收集场景中遇到的MF,其中G存储了完整的和部分的MF观测值以及它们被观测到的相应帧。

建立这个地图使我们能够在任何连续的框架Fj中遇到曼哈顿帧Mk时估计无漂移旋转。

为了找到相机帧Fi和Fj中同一MF的两个观测值之间的匹配,我们检查其组成平面与地图平面的匹配。每个地图平面在地图中都有一个唯一的ID。如果两个观测点的平面与相同的地图平面相匹配,通过比较ID来确定,那么这些观测点就属于同一个MF。

D.位姿优化

摄像机姿态ξcw由旋转矩阵Rcw∈SO(3)和平移向量tcw∈R3组成,从世界坐标W到摄像机坐标c。如果MW假设不成立(由未检测到任何MF确定),则我们通过跟踪特征来估计完整的6D姿态。在MW场景的情况下,旋转和平移被解耦并分别估计。

non-MW场景:

在非mw场景中,可以跟踪点、线和平面来估计6D相机的姿态。我们将观测特征与地图中相应匹配的3D特征之间的重投影误差ep、el和eπ定义为

在这里插入图片描述

其中,π是使用固有相机矩阵的投影函数,Plx是3D线的端点,x ∈ {start,end}。

我们还发现每个观察平面的平行和垂直平面匹配,它们作为结构约束eπk和eπ⊥被添加到总能量函数中

在这里插入图片描述

其中,nc和nw是观察平面和匹配平面路标的法线,R⊥是90◦旋转矩阵,qn(π) = (φ,ψ)。

假设模型符合高斯噪声,结合所有误差得到最终的误差损失函数,利用Levenberg-Marquardt算法优化该能量函数,得到最佳姿态估计。

MW场景:

在结构MW场景中,我们解耦姿态估计并使用我们的新方法估计无漂移旋转,而特征跟踪用于平移估计。

对于旋转估计,可以使用第iii节中描述的方法检测场景中的所有mf。对于frame Fi中每一个被检测到的MF Mk,用对应的旋转rsimk表示,我们在Manhattan map G中寻找Mk,如果在G中发现了Mk,我们可以从G中得到对应的frame Fj,在这个frame Fj中首先观察到Mk。Fj作为参考坐标系,包含MF观测Rc jmk和姿态估计ξc jw,它们既可以通过MF跟踪估计,也可以通过特征跟踪估计。

我们的目标是获得从世界坐标到当前摄像机帧Fi的旋转Rciw

首先,我们使用Mk在Fi和Fj中的观测值来计算它们之间的相对旋转为

在这里插入图片描述

然后,由Fj的姿态估计ξc jw得到旋转估计Rc jw,并将其与Fi和Fj之间的相对旋转连接得到

在这里插入图片描述

最后,我们转置Rwci以获得我们想要的旋转Rciw

有了旋转Rcw,我们想找到相应的平移tcw,它将给出完整的相机姿态ξcw。为此可以使用求解最小化误差函数来获得平移向量。

固定旋转只在优化过程中更新平移。

E. 稀疏建图

(这里应该就是ORB-SLAM2的原地图,添加了点线面的特征)

我们的SLAM系统维护了一个由地标和关键帧组成的稀疏地图。对于我们的稀疏地图,我们遵循基于关键帧的方法[2],其中新帧仅在观察到大量新地标时添加。使用由RGB-D图像提供的深度图,初始化新的界标,即点、线和平面,并将其从关键帧添加到图中。如果一个新的平面与先前的地图平面匹配,我们只更新地图平面的点云,否则,新的平面被添加到地图中。在[2]之后,我们维护关键帧之间的共同可见性图,以确定当前帧的局部图,并使用各自的剔除策略移除不可靠的界标和冗余的关键帧。

F.稠密surfel建图

为了提高重建效率,我们在[14]的基础上提供了一种新的密集映射策略。[14]不是像ElasticFusion一样为每个像素构建表面,而是**将每个图像划分为超像素,并基于提取的超像素构建表面。**这种方法减少了surfels的数量,允许它在CPU上运行。

通过利用场景中提取的平面来进一步提高[14]的效率。对于平面区域,我们通过重用稀疏地图中的平面来构建曲面,使得我们的方法更加节省内存。方法如下:

  • 我们的平面检测方法为帧中的平面区域提供了一个掩模。我们使用这种掩模来产生非平面区域的超像素,使用[14]的改进的SLIC [37]方法。
  • 使用[14]的方法为非平面区域生成并融合表面像素。
  • 对于平面区域,我们使用稀疏平面上的点作为表面位置。每个曲面都被指定了相应平面的法线。为了确定表面的半径,我们在体素网格过滤期间利用用于对我们的平面进行下采样的体素的大小。我们取体素的横截面对角线的长度,除以2,并将其设置为半径。

结论

该系统的未来增强可包括添加回环检测模块、改进平面检测以进一步丢弃不稳定的观察值,以及使平面表面半径灵活以更紧密地拟合实际平面边界。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值