Dual
题目
Dual-SLAM: A framework for robust single camera navigation
作者
Huajian Huang, Wen-Yan Lin*, Siying Liu, Dong Zhang, Sai-Kit Yeung
时间
2020
内容
1.问题
- 局部位姿估计经常失败,造成整个SLAM系统异常脆弱,也造成地图的不一致。
- SLAM增量式传递
窄基线
的位姿估计, 而窄基线
位姿估计天生存在病态
,如下图所示,因此特征匹配中小的误差将在位姿估计中造成大的误差,以至于,局部位姿估计的错误是不可避免的。 宽基线
位姿估计相对来说更有利于三角化,但是对于新跟踪的点更难融合到错误的地图,这将导致SLAM break- 本文假设:许多失败,例如跟踪失败,实际上都是由于
累计误差
造成的。
2.方法
保存当前地图,初始化两个新的线程:
- SLAM线程:通过新进来的帧创建新的地图。
- 恢复SLAM线程:跳过失败的部分,连接新的地图和旧的地图。
- 好处:
- 避免了需要高的计算成本。
- 预防了任何可能的位姿估计失败,提高了稳定性。
- 对于失败的,
显著减少了88%
。
3.整体框架
3.1Dual-SLAM的统计分析
假设SLAM位姿估计失败是一个随机事件,p0p_{0}p0为一个SLAM系统在单位序列长度下失败的概率,恢复线程的运行相对与原先的SLAM系统是独立的,其失败的概率为prp_{r}pr,给定n个独立的恢复线程,系统整体失败的概率为:
由于乘法的性质,造成失败的概率显著下降。
注意:恢复线程本质上不能解决困难的情况,例如:弱纹理的情况。在这种情况下p0p_{0}p0和prp_{r}pr都接近于1,造成失败的概率还是很高,Pr(Failsure)≈1P_{r}(Failsure)≈1Pr(Failsure)≈1。
3.2 系统实现
基于ORB_SLAM2实现的
- 缓存区
缓存区用于存放最近的k帧图像的ORB特征,而且该缓存区不断更新,当有新的帧进来时,删除相同数量旧的帧,这个缓存区必须足够大才能保证能够覆盖地图中损坏的部分。当跟踪失败时,该缓存区不再更新,新的帧添加到缓存区中直到新地图重新初始化成功,如果在krk_{r}kr帧后初始化成功,则缓存区的总长度扩展为K=k+krK=k+k_{r}K=k+kr,如果重新初始化时间越久,恢复的时间越长,与K成正比关系。
- 恢复线程
两个不同的恢复线程依次运行,首先是第一个恢复线程,当第一个恢复线程失败,使用第二个恢复线程,如图所示
- 地图融合
旧地图和新地图之间存在一个3D的相似性变换,使用新地图和旧地图重叠部分的3D点进行融合。每个特征点都有一个对应的关键帧ID,意味着新地图中的关键点和旧地图中匹配的候选关键点之间存在相似的关键帧ID,这样可以在地图的很小一部分搜索。
- 增强版
快速的初始化对SLAM的表现很重要,为了实现这,通过使用基于GMS的初始化方法替代了ORB_SLAM中的初始化方法。
4.实验
-
实验设备
Intel Core i7-6700K 笔记本 -
数据集
KITTI和TUM -
对比的方法
ORB_SLAM2、LDSO,其中对于LDSO进行了小的改动,主要是因为其闭环检测对KITTI数据集敏感。 -
KITTI实验结果
-
TUM实验结果
-
失败减少率分析
-
消融实验
-
框架限制
- 局限一:假设地图的错误导致其破损,对于宽基线,假设成立,然而残余地图存在累计漂移的情况,就…
- 局限二:对于弱纹理场景,也就…
-
未来的工作
- LDSO:假设失败是没有足够的特征,通过密集匹配对其进行矫正。
- Dual slam:假设跟踪失败是位姿估计错误造成,通过重新估计实现。
- 未来是将两种思想进行融合。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1707209258a1484188.html
评论列表(0条)