前言
最近GS-SLAM回环检测的工作已经逐步发展了,看一下这篇新文章。
文章目录
- 前言
- 1.背景介绍
- 2.关键内容
-
- [2.1 tracking](#2.1 tracking)
- [2.2 local mapping](#2.2 local mapping)
- [2.3 Loop Closing](#2.3 Loop Closing)
- 2.4总体流程
- 3.文章贡献
1.背景介绍
- 现有的基于3dgs的SLAM方法往往存在累积的跟踪误差和地图漂移,特别是在大规模环境中。Photo-SLAM结合了基于ORB-SLAM的闭环,但其对基于特征的跟踪器的依赖限制了闭环的有效性,因为跟踪器无法利用地图的细化。基于nerf的SLAM方法集成了在线闭环来实现准确和鲁棒的跟踪,但需要存储历史帧和昂贵的重新训练整个隐式建图来更新回环矫正。
2.关键内容
2.1 tracking
我们采用基于映射场景的 frame-to-model 跟踪耦合系统设计。我们首先用恒定速度假设初始化当前相机姿态 T i T_i Ti:
其中相机姿态Ti = {Ri, Ti}可以分解为旋转矩阵和平移向量。然后通过最小化跟踪损失 L t r a c k i n g L_{tracking} Ltracking相对于相对相机姿态Ti−1来优化Ti。我们在跟踪损失中应用alpha掩模 M a l p h a M{alpha} Malpha和inlier掩模 M i n l i e r M{inlier} Minlier,以解决由重建不良或先前未观察到的区域引起的严重误差,如下所示:
C和D是输入的颜色和深度图。
2.2 local mapping
我们以渐进的方式增长3D高斯子地图,并将每个子地图锚定到全局关键帧。每次向子地图中添加新高斯时,在固定次数的迭代中,对活动子地图中的所有高斯进行联合优化,进行最小化损失,并且只有选定的关键帧包含在优化中。
1.地图构建:我们随着新传入的关键帧逐渐增加子地图,并在相机运动超过阈值时初始化新的子地图,第一个关键帧作为全局关键帧。在任何时候,只处理活动子地图。这种方法限制了计算成本,并确保在探索更大的场景时保持快速优化。
每个新的关键帧添加3D高斯到活动子地图,捕捉新观察到的场景区域。具体来说,在当前关键帧的姿态估计之后,从RGB-D输入计算密集点云。我们使用致密化蒙版来填充未观察区域的孔洞,避免渲染图像中的局部最小值。从累积alpha值低于阈值 α t h r e α_{thre} αthre的区域均匀采样点,否则会出现较大的渲染颜色和深度误差。使用在当前子图的搜索半径内没有邻居的采样点,将新的3D高斯添加到子图中。新高斯是各向异性的,它们的尺度是基于活动子地图内的最近邻距离来定义的。
2.最小化不确定性关键帧选择:对于一个新的输入帧,如果当前帧与最后插入帧的帧重叠比小于某个阈值,则将该帧插入关键帧集,其中 r o r_o ro定义为:
其中 G i G_i Gi和 G i − 1 G_{i−1} Gi−1分别是当前帧和最后一帧观测到的三维高斯集合。
受到CG-SLAM的影响,我们在每个地图迭代采用一个不确定性高斯选择策略该策略。在高斯不确定性的帮助下,旨在选择观察到更多有价值的3D高斯的关键帧,这些关键帧可能对优化有积极的影响。每个关键帧的信息分数定义为:
其中|G|为关键帧观测到的三维高斯数。
我们首先选择k个关键帧,这些关键帧覆盖了分数总和最高的高斯。在将覆盖的高斯标记为观察到的之后,我们使用相同的选择策略,但在下一个时间步长计算 s i n f o r s_{infor} sinfor时只考虑剩余的未观察到的高斯。如果所有高斯都被标记为观察到的,则通过将高斯分布重置为未观察到的来重复该过程。
3.损失函数设计:对于深度监督,使用损失:
深度损失Ldepth用不确定度图U加权,以保证不确定度高的像素加权较小。
对于颜色监督,我们使用L1和SSIM损失的加权组合:
其中C为原始图像,C为渲染后的图像,λ = 0.2。我们还添加了一个各向同性正则化项 L r e g L_{reg} Lreg:
其中P是子地图, s p s_p sp是三维高斯的比例尺, ¯ s p ¯s_p ¯sp是平均子地图比例尺,|P|是子地图中三维高斯的数量。建图的最终损失函数最终表示为:
2.3 Loop Closing
我们使用分层闭环检测来实现子地图内部和子地图之间的全局一致性。全局回环检测校正子地图间的累积误差,而局部回环检测通过精细的全局关键帧姿态和精确的子地图内部几何形状辅助全局校正。
(1)回环检测:对于位置识别,我们使用预训练的NetVLAD模型为每个关键帧提取特征描述符。提取的特征存储在全局和局部关键帧数据库中。描述符之间的余弦相似性作为回环检测的准则。
创建新的子地图时触发全局环路检测。如果视觉相似性得分高于全局阈值,则从全局关键帧数据库中选择最佳匹配,该阈值动态计算为全局关键帧与活动子地图内关键帧之间的最小分数。本地回环检测在本地建图过程中进行,接受相似度评分超过预定义阈值 s l o c a l s_{local} slocal的最相似关键帧。为了避免错误的循环,特别是在室内场景中有重复的物体,如椅子或桌子,我们进一步应用几何检查。我们评估两个循环候选关键帧之间的帧重叠率,如果0超过阈值,则接受它们。
(2)姿态图优化:构建姿态图模型,节点代表关键帧姿态,边缘对应顺序相对姿态。从回环节点之间的相对姿态计算环路边缘约束,然后添加到姿态图中。
我们在整个姿态图上执行姿态图优化,以使估计的轨迹更接近真值。姿态图优化有效地减小了累积误差,提高了跟踪精度。我们使用levenberg - marquaret算法来解决由Eq.(14)描述的非线性位姿图优化问题,其中v为节点集, E s E_s Es为序列边集, E l E_l El为环状边集, Λ i Λ_i Λi表示对应边的不确定性。
(3)地图调整:为了保持姿态图优化后的地图一致性,我们使用以关键帧为中心的调整策略重新排列3D高斯子地图。每个三维高斯 g i g_i gi与一个关键帧相关联,并根据关联关键帧的优化姿态更新高斯均值来实现子图调整。关联是由哪个关键帧将3D高斯添加到场景中决定的。将平均值 μ i μ_i μi投影到T '中以找到像素对应关系。具体来说,假设相机姿态T = {R, T}的关键帧更新为T ' = {R ', T '},我们更新与关键帧相关的所有3D高斯函数的平均值和旋转。我们将 µ i µ_i µi和 r i r_i ri更新为:
在地图调整之后,我们对更新后的子地图执行一组细化步骤。我们禁用了三维高斯的剪枝和密度化,并使用相同的损失函数Eq13简单地执行一组优化迭代。
2.4总体流程
本文的系统包括三个过程:跟踪,映射和闭环。跟踪过程通过最小化跟踪损失来估计和改进相机姿态{R, t}。场景被管理为高斯子地图,局部建图过程以最小化不确定性的策略选择关键帧来优化活动子地图。如果检测到回环,闭环关闭进程触发在线回环检测,随后进行有效的地图调整以纠正累积误差并减轻地图漂移。
3.文章贡献
- 一种实现大规模环境下三维高斯子图的鲁棒帧到模型跟踪和全局一致建图的高斯溅射SLAM系统。
- 高效回环模块,包括全局到局部回环检测、位姿图优化和直接地图更新,减少累积误差和地图漂移。
- 最小化不确定性关键帧选择策略,在子图优化过程中选择观察到更稳定的三维高斯分布的信息关键帧,以提高映射精度和鲁棒性。