赞
踩
本文为原创博客,转载请注明出处:https://blog.csdn.net/q_z_r_s/article/details/101036346
机器感知 一个专注于SLAM、三维重建、机器视觉等相关技术文章分享的公众号 |
ORB-SLAM是一个基于特征点法的单目SLAM
BA在给定好的初始值时可以对相机进行高精度定位估计,想要实现计算复杂度不严重的实时SLAM,必须满足如下要求:
a. 场景特征的对应观测分布在所有帧的子集中,即关键帧中
b. 由于复杂度随着关键帧的数量而增加,所以必须避免不必要的冗余
c. 要有足够的视差和充足的闭环匹配
d. 对关键帧位姿和3D点初始估值进行非线性优化
e. 使用局部地图优化实现可扩展性
f. 能够快速的执行实时的全局闭环优化,即位姿图优化
ORB-SLAM主要有以下贡献:
a. 统一使用ORB特征进行跟踪、建图、重定位及闭环检测
b. 通过使用共视图,将跟踪、建图在局部共视区域中完成,独立于全局地图
c. 基于位姿图优化的闭环检测,即所谓的 Essential Graph,来自于 spanning tree,即共视图中强连接的边和闭环
d. 实时相机重定位功能
e. 自动的初始化模型选择
f. 自适应的关键帧选择,自动剔除冗余帧
在大场景中,基于 appearance 的 place recognition 比基于 map-to-map 或者 image-to-image 的效果更好。词袋模型就是属于基于 appearance 的方法,比如概率方法 FAB-MAP,还有使用从BRIEF获得的二进制单词的DBoW2。为了改善 place recognizer,使用共视图进行约束闭环候选帧,而不只是单纯的选取最佳匹配帧。
从两幅图中初始化的方法要么使用单应矩阵(适用于平面场景),要么使用本质矩阵(适用于非平面场景,可以使用5点法恢复,但低视差时并不适合),另外,视差充足时,也可以通过8点法恢复基础矩阵,相机位姿也可以无模糊的恢复。而作者使用的是同时计算基础矩阵和单应矩阵,根据阈值自动选择较好的模型来初始化系统。
连续帧之间含有的有用信息很少,由此看来需要适当的选择frame,PTAM就是一个基于关键帧的SLAM系统,并首次将跟踪、建图分离思想引入到SLAM中。同时,为了矫正系统尺度漂移,使用 sim3 进行7自由度位姿图优化。
作者选择特征的出发点是统一系统建图、跟踪及场景识别所用的特征,这里使用ORB。
系统总共三个并行线程:跟踪、局部建图、闭环检测
Tracking 线程负责估计每帧相机位姿,并决定是否需要插入新的关键帧。
Local Mapping 线程处理新的关键帧,并执行 Local BA 优化,然后对新的关键帧与其共视关键帧间再找一些新的匹配点。
Loop Closing 线程检查每个关键帧是否产生了闭环,如果确定了闭环检测,然后就计算 sim3 变换,然后再进行 sim3 位姿优化来保证全局一致性。
地图点和关键帧的创建很普通,但是会在后续的流程中执行剔除机制,即检测冗余关键帧和误匹配点、无法跟踪的地图点,这遏制了地图的扩张,同时提高了 tracking 的鲁棒性。
该系统从初始的关键帧开始建立增量 spanning tree,由此形成 Covisibility Graph and Essential Graph。
闭环检测
同时计算单应矩阵和基础矩阵,使用DLT八点法,模型选择使用评分比值决定:
选择好模型之后,单应矩阵会分解出8个可能的结果,基础矩阵会分解出4个可能的结果,最终会得到一对 [R | t],由此可对场景点进行重建,重建之后执行全局BA优化初始化这两帧的位姿、3D点。
特征提取–>帧间位姿估计(tracking失败时进行重定位)–>跟踪局部地图–添加新的关键帧,其中关键帧选择标准如下:
插入新的关键帧,更新关键帧共视图、spanning tree,地图点剔除,创建新的地图点,Local BA,关键帧剔除
闭环候选帧检测–>计算闭环帧 sim3 变换–>使用闭环 sim3 矫正当前关键帧位姿,并传播到当前帧的共视帧–>Essential Graph sim3 优化
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。