-
Notifications
You must be signed in to change notification settings - Fork 59
/
Loop Closure讨论
39 lines (27 loc) · 5.22 KB
/
Loop Closure讨论
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# VIO回环检测问题汇总
## 问题罗列
1. 目前比较实用的闭环检测方法都有哪些?还有类似DBoW2这样的方便使用的库吗?
2. 闭环检测中关键帧的选取机制是什么?未来的方向是什么?
3. 闭环检测可能带来误匹配的情况,有什么约束可以降低这种概率的发生? 比如,在一个区域的不同位置,采集到的图像画面是非常相似的情况?
4. 在VIO中,IMU信息对闭环检测是否有帮助?
5. 闭环检测和重定位的关系?检测到回环后如何进行重定位和整体优化?pose graph是闭环优化比较经常采用的方法,那么还有哪些别的策略?
6. 基于深度学习的闭环检测的大概原理和流程是什么?目前有什么新的进展吗?
8. 如何提高闭环检测的实时性?深度学习的闭环检测有实际应用么?它相对一般的闭环检测的优缺点?
9. 大规模时空环境下,比如一年四季白天黑夜的城市环境下,地图如何维度闭环检测和更新?
## 泡泡讨论
1. 目前比较实用的闭环检测方法都有哪些?还有类似DBoW2这样的方便使用的库吗?
关于图像的目前了解到的闭环检测方法有**FAB-MAP**和**RTAB-MAP**两种,其中FAB-MAP是第一个能够实时进行大规模场景的回环检测应用,但是实时性依然不佳,后来出现的DBoW2比较适合。RTAB-MAP通过缓存的方式构建STM、WM、LTM三个缓存工作栈,实现一个长时间的大规模室内场景闭环检测。其中STM\WM\LTM是Short Term Memory, Working Memory, Long Term Memory。只有Working Memory用于闭环检测,Short Term Memory的话是存放当前帧附近的图像,这部分图像由于视觉变化不大,所以不用于闭环检测, Long-Term Memory是用于长时间的闭环检测,这部分图像由于访问时间过长,并且访问次数过少,所以也减少匹配次数。**闭环检测也是数据检索**的过程,**DBoW主要的作用就是特征向量的检索,本质上也就是kd-tree**,类似的还有inverted multi-index。除此之外,还有facebook出品的faiss,包括了各种检索方法,还提供gpu加速功能。它的主要面向对象是超大规模检索。除此之前GPS可以判断是否在历史位姿附近,lidar可以通过直方图的方法实现回环检测。
2. 闭环检测中的关键帧选取机制一般是什么?未来还有哪些改进的可能呢?
**关键帧的选取一般都是采用经验公式**,比如VINS通过Delta transformation判断匹配数超过一定阈值后,选取作为关键帧。ORB-SLAM中关键帧依据重叠度不超过90%来进行筛选。
3. 闭环检测可能带来误匹配的情况,有什么约束可以降低这种概率的发生? 比如,在一个区域的不同位置,采集到的图像画面是非常相似的情况?
**回环的目的,就是在历史轨迹中找到当前帧与历史帧中匹配分数比较高的一帧。共视图中的关键帧重叠度比较高,检索的结果也相对较高,所以容易造成误匹配。** 假设有30个关键帧,后10个关键帧构成第30帧的共视图,那么也就是说这些帧都与第30帧有较高的重合度,换句话说就是共视特征点比较多。那么这些帧在bow匹配的时候,分数就会比较高。而历史帧,通常分数可能没有这么高,结果就是在bow返回的几个候选帧中,共视图相关的关键帧排序就会比较高。**所以在实际应用中,回环检测过程往往不采用共视图中的关键帧,而在闭环检测的过程中才将其取出进行整体优化,ORB-SLAM中还要求地图保持一致性。也有方法是通过每个关键帧所带的ID,直接去除共视图中的关键帧,防止回环候选帧与当前观测帧太近**
4. 在VIO中,IMU信息对闭环检测是否有帮助?
IMU本身的自由度就已经决定了不能将其用于回环
5. 闭环检测和重定位的关系?检测到回环后如何进行重定位和整体优化?pose graph是闭环优化比较经常采用的方法,那么还有哪些别的策略?
回环检测的关键帧都是历史帧,不在滑窗里,所以需要要进行全局优化。而闭环检测就是在全局的姿态图优化中,多加了一条边。现在也有通过训练多种特征(点、线)的BOW来进行回环操作。
6. 如何提高闭环检测的实时性?
**闭环检测的实时性本身就是伪命题**,实际中闭环的主要应用场景是建图过程,而整个建图过程都是offline,另开线程来进行操作,所以没必要对实时性进行要求。
7. 基于深度学习的闭环检测的大概原理和流程是什么?目前有什么新的进展吗?
深度学习得到的就是个描述向量,本身可以看成构建一个大词袋。**hfnet分了两个端,一个做全局的图像描述,一个提取局部特征,用全局找出侯选匹配帧,再用局部特征做匹配验证求解位姿**,但回环的目的是提供一条约束边,如果用深度学习来做检测,那么得到的仅仅位置识别的结果。并没有几何验证。深度学习通常直接通过暴力求解相似性来判断场景相似程度
8. 一年四季白天黑夜的城市环境下,地图如何维度闭环检测和更新?
seqSLAM。