您的位置:首页 > 其它

ORB-SLAM简介(一)

2016-02-24 21:03 232 查看
ORB-SLAM是一种基于ORB特征的三维定位与地图构建算法(SLAM)[1]。该算法由Raul Mur-Artal,J. M. M. Montiel和Juan D. Tardos于2015年发表在IEEE Transactions on Robotics。ORB-SLAM基于PTAM架构,增加了地图初始化和闭环检测的功能,优化了关键帧选取和地图构建的方法,在处理速度、追踪效果和地图精度上都取得了不错的效果。要注意ORB-SLAM构建的地图是稀疏的。

ORB-SLAM一开始基于monocular camera,后来扩展到Stereo和RGB-D sensor上。作者好像还会做Semi-dense mapping的扩展。作者的开源代码都在GIT上[2]。

ORB-SLAM算法的一大特点是在所有步骤统一使用图像的ORB特征。ORB特征是一种非常快速的特征提取方法,具有旋转不变性,并可以利用金字塔构建出尺度不变性。使用统一的ORB特征有助于SLAM算法在特征提取与追踪、关键帧选取、三维重建、闭环检测等步骤具有内生的一致性。

ORB-SLAM架构如下:



ORB-SLAM利用三个线程分别进行追踪、地图构建和闭环检测。

一、追踪

ORB特征提取

初始姿态估计(速度估计)

姿态优化(Track local map,利用邻近的地图点寻找更多的特征匹配,优化姿态)

选取关键帧

二、地图构建

加入关键帧(更新各种图)

验证最近加入的地图点(去除Outlier)

生成新的地图点(三角法)

局部Bundle adjustment(该关键帧和邻近关键帧,去除Outlier)

验证关键帧(去除重复帧)

三、闭环检测

选取相似帧(bag of words)

检测闭环(计算相似变换(3D<->3D,尺度不定,因此是相似变换(自己看不懂了,待补充!)),RANSAC计算内点数)

融合三维点,更新各种图

图优化(传导变换矩阵),更新地图所有点

作者提供了ORB-SLAM在New College Data[3]上的时间统计,如下图。

1. 追踪部分,平均每帧约30毫秒,基本达到了30fps。特征提取速度是非常快的,平均11毫秒左右,非常适合于实时SLAM。姿态估计稍微耗时一些,平均需要20毫秒,特别是姿态优化需要耗费16毫秒的时间。

2. 地图构建部分,平均每关键帧约385毫秒。其中生成新的点约70毫秒,Local BA约300毫秒,相对还是比较耗时的。不知道这两部分还有没有优化的空间。



[1] ORB-SLAM: A Versatile and Accurate Monocular SLAM System

[2] https://github.com/raulmur/ORB_SLAM2
[3] http://www.robots.ox.ac.uk/NewCollegeData/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: