本课件是公众号 计算机视觉 life 旗下课程 《全网最详细的 ORB-SLAM2 精讲:原理推导 + 逐行代码分析》 (点击可跳转课程详情)的课程课件。谢谢各位学员的支持!
本课程对应的注释代码: https://github.com/electech6/ORBSLAM2_detailed_comments 由于源码注释和课件在持续更新,所以: 如视频课程中注释与上述GitHub 中有不同, 以 GitHub 上最新源码为准 。
如视频课程中课件与本课件不同, 以本课件为准 。
目录
2.2 检测闭环候选帧 DetectLoopCandidates
本周课程重点:
1. 掌握闭环候选关键帧的选择方法。
2. 掌握闭环连续性检测的原理,理解代码(闭环精髓,重要)。
3. 理解sim3应用背景。
1 理解共视图 (Covisibility Graph)
共视图是无向加权图,每个节点是关键帧,如果两个关键帧之间满足一定的共视关系(至少
15
个共同观测地图点)他们就连成一条边,边的权重就是共视地图点数目
1.1 ORB-SLAM2 流程图
2 闭环检测线程
2.1 闭环示意图
2.2 检测闭环候选帧 DetectLoopCandidates
2.3 闭环连续性检测DetectLoop
3. 计算Sim3 变换
为什么需要计算
Sim3
?
原因:
均摊误差、自然过渡
。 当前关键帧、闭环关键帧之间其实是隔了很多帧的,他们的pose
都是由邻近信息得到的,经过了很 久后,很可能有累计的位姿误差(单目尺度漂移所以有尺度误差,双目或RGBD
认为没有尺度误差), 如果你闭环时直接根据各自的位姿强制把相隔了很久的两个位姿接上,很可能会导致明显的错位。 我们用扫描人脸来做个比喻,可以认为开始扫描的脸和最后闭环的脸之间你是直接强制缝合,那很可能两张脸接不上,五官错位。
用
SIM3
就是把相隔很久的两个要缝合的关键帧(及其周围关键帧)重新建立连接,做一个软过渡, 尽可能的将累计误差分摊到要缝合的关键帧(及其周围关键帧),也就是闭环调整。相当于我们把要缝 合的人脸两侧都做了一定的调整使得缝合不那么生硬,起码看起来更协调。
Sim3
逆
Sim3
搜索匹配
SearchBySim3