讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证
一、前言该篇博客是为后面的讲解做一个铺垫、主要讲解的共视图、本质图、拓展图相关内容进行讲解,首先我们看一下下图: 其上蓝色矩阵表示关键帧、绿色矩阵表示当前帧,红色小点表示当前帧的可视地图点,黑色点表示当前帧可观测到的地图点,绿色曲线是帧与帧之间的链接关系,也是前面博客提到的边。
(
a
)
:
\color{blue}{(a):}
(a): 该图没有绘画帧与帧之间的连接关系,但是绘画了整个关键帧的轨迹。
(
b
)
:
\color{blue}{(b):}
(b): 该图为共视图,共视图是无向加权图,每个节点是关键帧,如果两个关键帧之间满足一定的共视关系(至少15个共同观测地图点)他们就连成一条边,边的权重就是共视地图点数目。如下图所示:
(
c
)
:
\color{blue}{(c):}
(c): 该为扩展数,可以很明显的看到,绿色的曲线相对于共视图稀疏了很多。甚至可以说只剩下一条。其绿色曲线表示关键帧与其父关键帧(共视程度最高关键帧)的连接关系,具体连接关系如下图,只要子关键帧存在父关键帧,则连接成关系。比如下图的黄色,就是被孤立起来帧,因为其没有父关键帧,所以其没有任何连接的线。
( d ) : \color{blue}{(d):} (d): 该为本质图,共视图比较稠密,本质图比共视图更稀疏,这是因为本质图的作用是用在闭环矫正时,用相似变换来矫正尺度漂移,把闭环误差均摊在本质图中。本质图中节点也是所有关键帧,但是连接边更少,只保留了联系紧密的边来使得结果更精确。本质图中包含其主要包含三个部分:1.扩展树连接关系。2.形成闭环的连接关系,闭环后地图点变动新增加的连接关系。3.共视关系非常好(至少100个共视地图点)的连接关系。
二、共视图作用大家稍微看一下就行,本分已经讲解过,没有讲解过的,在后续过程中会进行详细讲解。 1、跟踪局部地图,扩大搜索范围
Tracking:UpdateLocalKeyFrames()
2、局部建图里关键帧之间新建地图点
LocalMapping::CreateNewMapPoints()
LocalMapping:SearchlnNeighbors()
3、闭环检测、重定位检测
LoopClosing::DetectLoop()、LoopClosing:CorrectLoop()
KeyFrameDatabase::DetectLoopCandidates
KeyFrameDatabase::DetectRelocalizationCandidates
4、优化
Optimizer::OptimizeEssentialGraph
三、本质图作用
共视图比较稠密,本质图比共视图更稀疏,这是因为本质图的作用是用在闭环矫正时,用相似变换来矫 正尺度漂移,把闭环误差均摊在本质图中。本质图中节点也是所有关键帧,但是连接边更少,只保留了 联系紧密的边来使得结果更精确。本质图中包含: ( 1 ) : \color{blue}{(1):} (1): 扩展树连接关系 ( 2 ) : \color{blue}{(2):} (2): 形成闭环的连接关系,闭环后地图点变动后新增加的连接关系 ( 3 ) : \color{blue}{(3):} (3): 共视关系非常好(至少100个共视地图点)的连接关系 本质图作用主要 Optimizer::OptimizeEssentialGraph() 函数中被使用到,后面的博客会进行纤细的讲解。
四、本质图优化和全局BA结果对比
(
1
)
:
\color{blue}{(1):}
(1): 全局BA存在收敛问题。即使迭代100次,相对均方误差RMSE 也比较高
(
2
)
:
\color{blue}{(2):}
(2):essential graph 优化可以快速收敛并且结果更精确。θmin 表示被选为essential graph至少需要的 共视地图点数目,从结果来看,θmin的大小对精度影响不大,但是较大的θmin值可以显著减少运行时 间
(
3
)
:
\color{blue}{(3):}
(3):essential graph 优化 后增加全局 full BA 可以提升精度(但比较有限),但是会耗时较多
本文内容来自计算机视觉life ORB-SLAM2 课程课件