精华内容
下载资源
问答
  • ORB-SLAM2
    2020-12-22 15:41:32

    ORB-SLAM2

    ROS版本:

    1

    2sudo chmod 777 ORBvoc.txt

    sudo chmod 777 TUM1.yaml

    话题名字为:/camera/rgb/image_color和/camera/depth/image,修改ROS/ORB_SLAM2/src/ros_rgbd.cc文件中的监听话题名,再./build_ros.sh。(编译可能出错)

    (需要用opencv2.4.9来进行编译),即在CMakeList.txt中写成

    find_package(OpenCV 2.4.9 EXACT REQUIRED)

    ROS版本: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

    28RGBD:

    roscore

    cd ~/hujun_file/ORB_SLAM2/Examples/ROS/ORB_SLAM2

    rosrun ORB_SLAM2 RGBD ORBvoc.txt TUM1.yaml

    rosbag play --clock hujun_file/bag/create_map/rgbd_dataset_freiburg1_xyz.bag

    Stereo:

    cd ~/hujun_file/ORB_SLAM2/Examples/ROS/ORB_SLAM2

    rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true

    rosbag play --pause ~/hujun_file/bag/MH_01_easy.bag cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

    Monocular:

    rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /cam0/image_raw #注意这里需要手动传入监听的图像话题

    AR_Demo:

    运行出错

    rosrun ORB_SLAM2 MonoAR Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml

    rosbag play --pause ~/hujun_file/bag/MH_01_easy.bag cam0/image_raw:=/camera/image_raw

    非ROS版本:

    RGB-D:

    ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ../rgbd_dataset_freiburg1_xyz ../rgbd_dataset_freiburg1_xyz/associations.txt

    Stereo:

    ./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml ~/hujun_file/bag/mav0/cam0/data ~/hujun_file/bag/mav0/cam1/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt

    Monocular:

    ./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ~/hujun_file/bag/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt

    ORB-SLAM吴博注释版

    ORBSlam2中的闭环检测和后端优化LoopClosing

    源码阅读记录

    ORB-SLAM2详解(一)简介

    ORB-SLAM2 程序解读

    ORB-SLAM2详解(二)代码逻辑

    RGB-D: 泡泡机器人ORB-SLAM2源码详解

    自动地图初始化

    系统的第一步是初始化,ORB_SLAM使用的是一种自动初始化方法。这里同时计算两个模型:用于平面场景的单应性矩阵H和用于非平面场景的基础矩阵F,然后通过一个评分规则来选择合适的模型,恢复相机的旋转矩阵R和平移向量t。

    找到初始对应点

    Tracking.cc 600行SearchForInitialization

    同时计算两个模型

    调用Initializer.cc中的Initializer::Initialized函数进行初始化工作。同时计算H和F的线程,当场景是一个平面、或近似为一个平面、或者视差较小的时候,可以使用单应性矩阵H,而使用基础矩阵F恢复运动,需要场景是一个非平面、视差大的场景。 ORB_SLAM2关键算法分析1——基础矩阵F和单应矩阵H初始化位姿

    跟踪点在一个范围内做金字塔

    每层金字塔的特征点数是有要求的,保证在特征点稠密的地方特征点不会太多,在特征点稀疏的地方特征点不会太少。

    ORB-SLAM2之地图保存、加载和重定位

    将ORB_SLAM2用于导航

    2D的栅格地图 或者 3D点云生成的octomap 适合用于机器人导航

    首先运行ORB_SLAM2得到机器人的定位和一些识别出的路标。然后利用所选取的关键帧进行拼接得到点云地图,将点云转换成octomap即可用于导航

    ORB_SLAM实时显示octomap

    原始的orb-slam2只能显示稀疏点云,所以加了一个pcl_viewer和点云拼接的线程,来实现实时显示拼接关键帧的点云图像。

    ORB_SLAM实时发布点云–高博的ORBSLAM2_with_pointcloud_map

    编译安装高翔的ORBSLAM2_with_pointcloud_map,获取点云地图

    ORBSLAM2_with_pointcloud_map-master通过RGBD跑TUM数据集

    Octomap 在ROS环境下实时显示

    Kinect2跑ORB_SLAM2

    编译Kinect v2,跑通kinect2

    标定:没标定过的kinect2,深度图和彩色图之间是不保证一一对应的。标定后得到kinect2彩色头、深度头、红外头的内参和外参。

    编译orb-slam2,跑通orb-slam2

    在Kinect2上运行orb-slam2

    写一下kinect参数到yaml

    直接跑orb的ros demo/修改kinect_viewer的代码

    更多相关内容
  • ORB-SLAM2(中文注释版) 评论员: 作者: , , 和 ( ) 2017年1月13日:现在支持OpenCV 3和Eigen 3.3。 2016年12月22日:添加了AR演示(请参见第7节)。 ORB-SLAM2是用于单目,立体声和RGB-D相机的实时SLAM库...
  • Android上基于ORB-SLAM2的AR介绍这是一个基于和OpenGL的Android增强现实APP。 演示视频可以在下面的链接中找到。 演示视频依赖关系,安装和使用要运行此APP,您需要将./SLAM文件夹复制到您的手机中,其中包含词汇表...
  • ORB-SLAM2.xmind

    2020-01-19 15:00:56
    ORB-SLAM2代码阅读思维导图,xmind8编辑,可用xmind8或者xmind zen打开。自己做的,可能有错误,如果有问题可直接私信给我。 ORB-SLAM2 是我上手的第一个比较大的SLAM系统和c++项目,因此方便建立了思维导图更深的...
  • ORB-SLAM2源码解析》学习手册v1.0-对外.pdf
  • GitHub ar上的ORB-SLAM2代码为是开放源代码,并被用作支持其论文ORB-SLAM2的概念证明:ORB-SLAM2:一种用于单目,立体声和RGB的开源SLAM系统-D相机。 ORB-SLAM2不是最终产品。 它会生成地图,但是无法将其保存到...
  • ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras
  • ORB-SLAM2源码详解

    2019-04-25 19:13:20
    ORB-SLAM2源码详解, 高清讲义PDF,详细分析ORB-SLAM2源码
  • 东北大学吴博讲解ORB_SLAM的文档,仅有文档。
  • 1. ORB-SLAM2 简介 2. 安装依赖库 (1)安装Pangolin  (2)安装必要的依赖库 (3)安装OpenCV (4)安装Eigen (5)安装BLAS and LAPACK库 (1) BLAS: Basic Linear Algebra Subprograms (2) LAPACK:Linear ...
  • VI_ORB_SLAM2:基于ORB-SLAM2的单目/立体视觉惯性ORB-SLAM 该存储库包括Visual-Inertial ORB-SLAM的Monocular版本和Stereo版本。 这两个是的和的。 有关详细信息,您可以参考Examples/Monocular/mono_euroc_VI.cc和...
  • 仅使用pcl构建ORB_SLAM2模式 mkdir build cd build cmake .. make -j 跑步: ./run/rgbd_tum Vocabulary/ORBvoc.bin path_to_settings path_to_sequence path_to_association 修改内容: 添加一个具有闭环功能...
  • ORB-SLAM 2跑通自己的数据集一 、拍摄视频并转化为图片:二、准备索引目录文件:三、生成自己的参数配置文件TUM.yaml。复制TUM1.yaml,并修改参数即可。四、ORB-SLAM2所在的目录并运行如下命令即可:五、本次实验...
  • ORB-SLAM2源码

    2018-01-04 14:03:38
    三维重建。跟踪。ORB SLAM2 源码。
  • 本仓库为学习orb-slam2时收集的部分资料,包含参考论文(上面有当时学习时的笔记),注意事项请参考以下note部分,注释版本的ORB-SLAM2代码在ORB_SLAM2仓库可以克隆下来。文件/文件夹含义: 参考论文:包含了orb-...
  • 针对目前视觉SLAM(同时定位与地图构建)系统只能输出相机的运动轨迹图而不能生成用于路径规划和导航地图的缺点,提出了一种基于ORB-SLAM2的网格地图实时构建算法。首先,建立了一个适用于视觉SLAM的逆传感器模型...
  • 单应矩阵恢复R,t,保姆级推导!图文并茂!
  • ORB-SLAM(基于ORB特征识别的同时定位与地图构建系统)的源代码无法在嵌入式开发板运行,其构建的点云图太稀疏无法满足移动机器人路径规划要求。针对这个问题,文章提出将ORBSLAM进行改进与优化,移植到嵌入式开发...
  • ORB_SLAM3:ORB-SLAM3

    2021-03-17 17:49:34
    ORB-SLAM3 V0.3:Beta版,2020年9月4日 作者:卡洛斯·坎波斯(Carlos Campos),理查德·埃维拉(Richard Elvira),胡安·J·戈麦斯·罗德里格斯(Juan J.GómezRodríguez),( ,( 。 描述了每个版本的功能。...
  • 视觉SLAM经典文章,学好SLAM,前途无量,好好学哦。。
  • ORB-SLAM2源码详解.pdf

    2021-04-01 16:59:47
    里面详细推导了ORB_SLAM2的很多公式,比看原论文容易理解
  • ORB-SLAM2 论文翻译.pdf

    2020-08-12 11:31:38
    ORB-SLAM2 论文翻译.pdf
  • ORB-SLAM2详解.pdf

    2020-02-10 17:21:00
    ORB-SLAM2源码详解!看过了绝对受益匪浅~ 对学习项目、对工作实践都有很好的参考价值和借鉴意义!
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者丨小深来源丨深话AI本文总结了特征点法SLAM中目前效果最好的方法:ORB-SLAM2 / ORB-SLAM3 相关改进代码汇总,...

    点击上方“3D视觉工坊”,选择“星标”

    干货第一时间送达

    eb63c2735eee5c31efc39bb4d78a4e65.png

    作者丨小深

    来源丨深话AI

    本文总结了特征点法SLAM中目前效果最好的方法:ORB-SLAM2 / ORB-SLAM3 相关改进代码汇总,包括加速、多传感器融合、稠密建图、线特征、点线融合、导航、动态环境、多平台移植等。具体见下。 

    为方便点击链接,我们整理了pdf版本,在公众号后台回复:ORBSLAM

    ORB-SLAM2 相关改进代码汇总

    论文发表于2017年的IEEE Transactions on Robotics,论文名称《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》

    ORB-SLAM2 特点:

    • 首个(2017年发布时)支持单目,双目和RGB-D相机的完整的开源SLAM方案,具有回环检测和重新定位的功能。

    • 能够在CPU上进行实时工作,可以用于移动终端如 移动机器人、手机、无人机、汽车。

    • 特征点法的巅峰之作,定位精度极高,可达厘米级。

    • 能够实时计算出相机的位姿,并生成场景的稀疏三维重建地图。

    • 代码非常整洁,包含很多实际应用中的技巧,非常实用。

    • 支持仅定位模式,该模式适用于轻量级以及在地图已知情况下长期运行,此时不使用局部建图和回环检测的线程

    [PAPER](https://arxiv.org/abs/1610.06475),

    [CODE](https://github.com/raulmur/ORB_SLAM2),

    [超详细中文注释版]

    (https://github.com/electech6/ORBSLAM2_detailed_comments)

    改进方法

    [ORBSLAM2_with_pointcloud_map](https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map),

    高翔实现的添加稠密点云地图

    [ORB-SLAM2_RGBD_DENSE_MAP]

    (https://github.com/tiantiandabaojian/ORB-SLAM2_RGBD_DENSE_MAP),在高翔基础上添加了稠密闭环地图

    [ORB-YGZ-SLAM]

    (https://github.com/gaoxiang12/ORB-YGZ-SLAM),

    使用SVO中直接法来跟踪代替耗时的特征点提取匹配,在保持同样精度的情况下,是原始ORB-SLAM2速度的3倍

    [YGZ-stereo-inertial SLAM]

    (https://github.com/gaoxiang12/ygz-stereo-inertial),

    双目VIO版本,加入了LK光流和滑动窗口BA优化

    [VI-ORB](https://github.com/jingpang/LearnVIORB),

    京胖实现的VI-ORB-SLAM2

    [Fisheye-ORB-SLAM]

    (https://github.com/lsyads/fisheye-ORB-SLAM),添加了支持鱼眼

    [Save and load orb-slam2 maps]

    (https://github.com/AlejandroSilvestri/osmap),添加保存和导入地图功能

    [ORB_SLAM2 with map load/save function]

    (https://github.com/Jiankai-Sun/ORB_SLAM2_Enhanced),添加保存和导入地图功能

    [Viewer for maps from ORB-SLAM2 Osmap]

    (https://github.com/AlejandroSilvestri/Osmap-viewer),

    添加了地图可视化

    [Add line feature based ORB-SLAM2]

    (https://github.com/atlas-jj/ORB_Line_SLAM),添加了线特征

    73547fc13b288a3937968180df706489.png

    [RGBD-SLAM with Point and Line Features, developed based on ORB_SLAM2]

    (https://github.com/maxee1900/RGBD-PL-SLAM),添加了点线融合

    [Good Feature Selection for Least Squares Pose Optimization in VO/VSLAM]

    (https://github.com/ivalab/gf_orb_slam2),使用了一种更好的特征选择方法

    510823cc5670dce5eb61f528ea7dc9c6.png

    [ORB_SLAM2_SSD_Semantic](https://github.com/Ewenwan/ORB_SLAM2_SSD_Semantic), 

    动态语义SLAM 目标检测+VSLAM+光流/多视角几何动态物体检测+octomap地图+目标数据库

    326e04026f429028bc58e57843fe2a4a.png

    [Tracking Enhanced ORB-SLAM2]

    (https://github.com/Eralien/TE-ORB_SLAM2),

    用YOLO v3的语义信息来增加跟踪性能

    97a43e1872c22f0e51ca9026c82e0fad.png

    [YOLO Dynamic ORB_SLAM](https://github.com/bijustin/YOLO-DynaSLAM),用YOLO来做动态环境的检测

    e2a694d29bbfddc04ef6908f4b74a1d9.png

    多平台移植代码

    [Windows version ORBSLAM2,Easy built by visual studio]

    (https://github.com/phdsky/ORBSLAM24Windows),

    Windows平台版本,可以用 visual studio轻松编译

    [ORB-SLAM-Android, test on Sony Xperia Z]

    (https://github.com/castoryan/ORB-SLAM-Android),

    Android移植,在 Sony Xperia上测试

    [ORBSLAM2 on Mac OSX]

    (https://github.com/meiroo/ORBSLAM2-OSX),Mac OSX版本

    [ROS interface for ORBSLAM2]

    (https://github.com/ethz-asl/orb_slam_2_ros),添加ROS接口

    ORB-SLAM3 相关代码

    ORB-SLAM3

    2020年07月开源, 论文《ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM》

    ORB-SLAM3特点

    • 支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。

    • 基于特征的紧耦合的VIO系统,仅依赖于最大后验估计(包括IMU初始化时)。因此不管是在大场景还是小场景,室内还是室外都能鲁棒实时的运行,精度上相比于上一版提升了2到5倍

    • 根据新的重定位模块来构建的多地图系统,可以让系统在特征不是很好的场景中长期运行。

    • 第一个能够在所有算法阶段重用所有先前信息的系统,可以在BA的时候使用相隔很远的共视关键帧。

    [PAPER](https://arxiv.org/pdf/2007.11898.pdf)

    [CODE](https://github.com/UZ-SLAMLab/ORB_SLAM3)

    0db6ebc1ce9cb7124c061b6c23190e5f.gif

    ORB_SLAM3-RGBD-Inertial

    增加了RGBD-IMU的运行模式和ROS接口,增加了单目IMU和双目IMU的ROS接口,替换了词典为二进制格式,加载速度更快。依据ORB_SLAM3重写了RGBD-IMU的ROS接口,避免出现队列拥塞,提供了Kinect for Azure的参数文件

    [CODE](https://github.com/xiefei2929/ORB_SLAM3-RGBD-Inertial)

    本文仅做学术分享,如有侵权,请联系删文。

    3D视觉精品课程推荐:

    1.面向自动驾驶领域的多传感器数据融合技术

    2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
    3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
    4.国内首个面向工业级实战的点云处理课程
    5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
    6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
    7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
    8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

    9.从零搭建一套结构光3D重建系统[理论+源码+实践]

    10.单目深度估计方法:算法梳理与代码实现

    11.自动驾驶中的深度学习模型部署实战

    12.相机模型与标定(单目+双目+鱼眼)

    13.重磅!四旋翼飞行器:算法与实战

    14.ROS2从入门到精通:理论与实战

    重磅!3DCVer-学术论文写作投稿 交流群已成立

    扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

    同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

    一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

    84e13530df5ad4df2370d8e91387ac43.png

    ▲长按加微信群或投稿

    a231e3913561fe6feead73293940f4f1.png

    ▲长按关注公众号

    3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

    学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

    030dd6ff270b29984531bc2b78a5e247.png

     圈里有高质量教程资料、答疑解惑、助你高效解决问题

    觉得有用,麻烦给个赞和在看~  

    展开全文
  • ORB-SLAM 它是一个完整的 SLAM 系统,包括视觉里程计、跟踪、回环检测,是一种完全基于稀疏特征点的单目 SLAM 系统,同时还有单目、双目、RGBD 相机的接口。资源包含ORB-SLAM2ORB-SLAM3详细的中文注释版本的源码。
  • ORB-SLAM3论文.pdf

    2021-10-22 15:28:11
    ORB-SLAM3原文
  • [LiteratureReview]ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras 出处:2017 IEEE Transactions on Robotics,(截止到2022-3-28)Google论文被引3500+; 说明:ORB-SLAM2是基于...

    出处:2017 IEEE Transactions on Robotics,(截止到2022-3-28)Google论文被引3500+;

    说明:ORB-SLAM2是基于ORB-SLAM[1]的工作,所以论文中对单目方法做了较少的描述,而对新添加的双目和RGB-D方法做了较多描述。

    Introduction

    完整SLAM系统定义:初始化、tracking、优化、map reuse(仅定位模式或者支持在该map上扩展)、loop closing、relocalization ;显然ORB-SLAM2是一个非常完整(指包含Monocular、Stereo 和 RGB-D三种模式)的SLAM系统。

    Monocular SLAM的问题:

    • 第一帧不能三角测量,所以需要两帧才能初始化;
    • 存在尺度漂移(scale drift);
    • 在初始化中,执行纯旋转任务可能会失败;

    图1:由图1(b)可以看出,ORB-SLAM2的开发者在自己测试的时候做了RGB-D模式稠密地图的demo,具体方法正如图上所示“估计的关键帧位姿反投影传感器深度图得到点云,不进行融合(如KinectFusion [4)”,该点云效果好说明关键帧pose非常精确;

    ORB-SLAM2的主要贡献如下:

    • 1.第一个单目、双目、RGB-D开源的SLAM系统,包括:loop closing、 relocalization和map reuse;
    • 2.ORB-SLAM2中使用 Bundle Adjustment的 RGB-D模式比基于ICP或者光度和深度最小化方法最新方法精度高
    • 3.通过使用远近双目点(这里指远近点信息判断利用的trick),ORB-SLAM2的双目模式比最新的直接双目法SLAM更准确
    • 4.一个轻量级的定位模式,当建图被禁用情况下可以重用地图;
    • (个人)ORB-SLAM2能够在各种环境中的标准CPU上运行;

    Related Work

    A. Stereo SLAM

    • [5]:其基于条件独立分而治之的EKF-SLAM方法,在大环境下比当时其他方法好 ;它是第一个同时利用近点和远点( 即由于立体相机中的视差很小而无法可靠估计深度的点)的双目SLAM方法,并且对远点使用逆深度参数化 [6] ;他们凭经验表明,如果点的深度小于双目基线的 40 倍,则可以可靠地对点进行三角测量 ;ORB-SLAM2用了这种方法处理近点和远点;
    • [8]:大多数现代的双目SLAM系统都是基于关键帧的,并在局部区域执行BA优化;该工作在关键帧的内部窗口中执行 BA(point-pose constraints)和外部窗口中的pose-graph图(pose-pose constraints)的联合优化,通过限定窗口大小实现了恒定的时间复杂度,但代价是不保证全局一致性;
    • RSLAM[9]:使用 landmarks和poses的相对表示,并在当前区域中执行相对 BA,该区域可以被约束为恒定时间; RSLAM 能够关闭允许在循环两侧扩展活动区域的循环,但不强制执行全局一致性;
    • S-PTAM[10]:做local BA,但是缺少 large loop closing;
    • Stereo LSD-SLAM[11]:一种半稠密直接法,可最大限度地减少具有高梯度的图像区域中的光度误差;该方法不依赖于特征,希望对运动模糊或纹理不良的环境更加稳健;然而,作为一种直接法,它的性能可能会因未建模的效果(如卷帘快门或非朗伯反射率)而严重降低;

    ORB-SLAM2采用的方法:与上面这些方法类似,ORB-SLAM2在一组本地关键帧中执行 BA,以便复杂性与地图大小无关,并且可以在大型环境中操作; ORB-SLAM2的目标是建立一个全球一致的地图;关闭循环时,ORB-SLAM2首先对齐两侧,类似于 RSLAM,以便跟踪能够继续使用旧地图进行定位,然后执行位姿图优化以最小化循环中累积的漂移,然后是 full BA 。

    B. RGB-D SLAM

    • KinectFusion[4] :最早且最出名的RGB-D SLAM方法,该方法将来自传感器的所有深度数据融合到一个体积稠密模型中,该模型用于使用 ICP 跟踪相机位姿。由于其volumetric表示和缺乏loop closing,该系统仅限于小型工作空间;
    • Kintinuous[12]:该方法通过使用滚动循环缓冲区在大型环境中运行,并包括使用位置识别和pose graph优化的loop closing;
    • RGB-D SLAM[13]:基于特征的系统,其前端通过特征匹配和 ICP 计算帧到帧的运动。后端使用来自启发式搜索的闭环约束执行pose-graph优化
    • DVO-SLAM[14]:与[13]类似,DVO-SLAM的后端做了pose-graph优化,其中关键帧到关键帧的约束是从VO中计算出来的,进而去最小化光度和深度误差;相比位置识别,DVO-SLAM采用了heuristic fashion方式在所有先前帧上搜索回环候选关键帧;
    • ElasticFusion[15]:该方法构建了一个基于面元的环境地图;这是一种以地图为中心的方法,它会忘记poses并执行loop closing ,将非刚性变形应用于地图,而不是标准的pose-graph 优化;该系统的详细重建和定位精度令人印象深刻,但当前的实现仅限于房间大小的地图,因为复杂性与地图中面元的数量成比例。

    ORB-SLAM2采用的方法:参考[8]的方法,ORB-SLAM2 使用深度信息为图像上提取的特征合成立体坐标,这样就不同区分输入是RGB-D还是双目;与上面方法不同的是,ORB-SLAM2的后端基于BA构建全局一致的稀疏重建;所以ORB-SLAM2是轻量级的,并且适用于标准 CPU;ORB-SLAM2的目标是长期和globally一致的localization,而不是构建最详细的稠密重建。但是可以从高度准确的关键帧poses中融合深度图并在局部区域中即时获得准确的重建,或者在full BA 之后对来自所有关键帧的深度图进行后处理,并获得整个场景的准确 3D 模型。

    Methods

    ORB-SLAM2建立在单目ORB-SLAM1的基础上,总体概述如图 2 所示,主要包括三个线程:

    • tracking:tracking线程过查找与本地地图匹配的特征并最小化应用motion-only BA 的重投影误差来在每一帧中定位相机;
    • local mapping:local mapping线程管理local map并通过local BA优化它;
    • loop closing:loop closing线程检测大回环并通过执行pose-graph optimization纠正累积的漂移;该线程在pose-graph optimization之后启动第四个线程来执行full BA,以计算最佳结构和运动解决方案;

    2

    图2:ORB-SLAM2主要由三个并行线程组成:tracking, local mapping and loop closing;在loop closure后创建第四个线程来执行full BA;tracking线程预处理双目或 RGB-D 输入,以便系统的其余部分独立于输入传感器运行;虽然图中没有显示,但 ORB-SLAM2 也适用于 [1] 中的单目输入。

    ORB-SLAM2系统还包括如下部件:

    • 为了解决跟踪失败(例如遮挡)或在已映射场景中重新初始化以及回环检测的情况,嵌入了一个基于 DBoW2 [16] 的位置识别模块用于 relocalization;
    • ORB-SLAM2系统维护了一个 covisibiliy 图 [8],该图链接了观察公共点的任意两个关键帧,以及一个连接所有关键帧的最小生成树;这些图结构允许检索关键帧的本地窗口,以便跟踪和本地映射在本地操作,允许在大型环境中工作,并用作关闭循环时执行的位姿图优化的结构;
    • ORB-SLAM2系统使用ORB features [17]用于tracking, mapping 和 place recognition任务,该特征对旋转和缩放鲁棒,并对相机自动增益和自动曝光以及照明变化呈现良好的不变性;此外,它们可以快速提取和匹配,允许实时操作,并在词袋位置识别中表现出良好的精度/召回性能 [18]。

    A. Monocular , Close Stereo and Far Stereo Keypoints

    ORB-SLAM2是基于特征的方法,对输入进行预处理以提取显著关键点位置的特征,然后丢弃输入图像,所有系统操作都基于这些特征,因此系统独立于双目或 RGB-D 传感器;ORB-SLAM2系统处理单目和双目关键点,进一步分类为近或远:

    • Stereo keypoints:假设输入的图像立体校正,核线水平;如果双目关键点的相关深度小于立体/RGB-D 基线的 40 倍,则将其分类为近,如 [5] 中所建议的,否则将其分类为远;

    • Monocular keypoints:图像二维坐标定义,包含RGB-D中没有深度以及双目立体匹配找不到深度的点,这些点仅从多个视图进行三角剖分,不提供比例信息,但有助于旋转和平移估计;

    B. System Bootstrapping(系统引导)

    双目和RGB-D相机可以通过仅从一帧获得深度信息,不需要像单目情况那样来自运动初始化的特定结构;在系统启动时,ORB-SLAM2使用第一帧创建关键帧,将其pose设置为原点,并从所有双目关键点中创建初始地图。

    C. Bundle Adjustment with Monocular and Stereo Constraints

    ORB-SLAM2的BA使用的是g2o中的Levenberg-Marquardt 方法:

    • Motion-only BA(tracking线程):只优化相机pose;通过最小化世界坐标中匹配的3D点和关键点的重投影误差去优化相机的R和T

    3_1

    • Local BA(local mapping线程):优化关键帧和点的局部窗口;优化一组共视可见关键帧 KL 和在这些关键帧 PL 中看到的所有点。所有其他关键帧 KF ,不在 KL 中,PL 中的观察点对成本函数有贡献,但在优化中保持固定;

    3_2

    • Full BA(loop closing 线程):闭环后优化所有关键帧和点;是local BA 的特定情况,其中地图中的所有关键帧和点都经过优化,除了固定的原点关键帧以消除规范自由度;

    D. Loop Closing and Full BA

    Loop Closing 分为两个步骤执行,首先检测和验证一个回环,然后对闭环进行校正以优化pose-graph;与单目ORB-SLAM不同,RGB-D和双目的ORB-SLAM2,立体/深度信息使尺度可观察,几何验证和位姿图优化不再需要处理尺度漂移,不是相似性而是基于刚体变换;

    Full BA在pose-graph 优化之后用于实现最优解,Full BA优化需要很高的计算量所以放在单独的线程中执行,允许系统继续创建地图和检测回环;如果在Full BA优化运行时检测到新回环,ORB-SLAM2将中止优化并继续回环,这将再次启动full BA 优化;当full BA 完成后,需要将完整 BA 优化的关键帧和点的更新子集与优化运行时插入的未更新关键帧和点合并。

    E. Keyframe Insertion

    ORB-SLAM2采用了monocular ORB-SLAM[1]的关键帧插入策略,即非常频繁地插入关键帧并随后剔除冗余的关键帧;近双目点和远双目点之间的区别成为引入关键帧插入的新条件;如图3所示,在这样的环境中需要有足够数量的闭合点来准确估计平移,因此如果跟踪的闭合点数量低于 τt 并且该帧可以创建至少 τc 个新的闭合立体点,系统将插入一个新的关键帧。作者凭经验发现 τt = 100 和 τc = 70 在所有的实验中效果很好。

    请添加图片描述

    图3:KITTI 数据集01序列的效果,绿色的点为近点其深度小于双目基线的40倍,蓝色点为远点;远点有助于估计方向,但为平移和缩放提供微弱的信息。

    F . Localization Mode

    ORB-SLAM2添加了一种定位模式,在该模式下local mapping 和loop closing 线程被关闭,如果需要,相机可以通过使用重定位的跟踪连续定位;在这种模式下,跟踪利用视觉里程计匹配并匹配到地图点,视觉里程计匹配是当前帧中的 ORB 与根据立体/深度信息在前一帧中创建的 3D 点之间的匹配,这些匹配使定位对未建图区域具有鲁棒性,但可以累积漂移,地图点匹配确保对现有地图的无漂移定位。

    Experiment

    测试硬件平台:Intel Core i7-4790 desktop computer with 16Gb RAM;

    指标:使用原作者发表的结果(这里如何直接使用论文的结果是不是不太公平?)和文献中的标准评估指标;

    测试:为了避免多线程系统的不确定性,每个序列运行 5 次,并取中值结果;

    A. KITTI Dataset [2]

    KITTI dataset 包含从城市和高速公路环境中的汽车记录的立体序列,双目基线约为54cm,工作频率为 10Hz,校正后的分辨率为 1240 × 376 像素,序列 00、02、05、06、07 和 09 包含回环;表 1显示了 11 个训练序列的结果,与最先进的Stereo LSD-SLAM [11] 相比,据我们所知ORB-SLAM2是唯一显示所有序列详细结果的Stereo SLAM。作者使用两个不同的指标,[3] 中提出的绝对平移 RMSE 和 [2] 中提出的平均相对平移 r(rel) 和旋转 r(rel) 误差;ORB-SLAM2在大多数序列中都优于 Stereo LSD-SLAM,并且总体上实现了低于 1% 的相对误差;

    2_1

    表1:KITTI 数据集中的准确性比较;

    图 4 显示了一些估计轨迹的例子:

    请添加图片描述

    图4:KITTI 00、01、05 和 07 ;

    与 [1] 中提出的单目结果相比,所提出的双目版本能够处理单目系统失败的序列 01,在这个高速公路序列中,见图 3,近点仅在几帧中可见,双目版本仅从一个立体关键帧创建点的能力,而不是延迟初始化单目,包括在两个关键帧之间寻找匹配,在这个序列中不丢失跟踪是至关重要的,此外,双目系统使用公制比例估计地图和轨迹,并且不会受到比例漂移的影响,如图 5 所示;

    请添加图片描述

    图5:KITTI 08数据集,左边是monocular ORB-SLAM [1],右边是monocular ORB-SLAM [1];monocular ORBSLAM 在这个序列中遭受严重的尺度漂移,尤其是在转弯处,相比之下,所提出的立体版本能够估计轨迹和地图的真实比例,而不会发生比例漂移;

    B. EuRoC Dataset [21]

    EuRoC Dataset包含从在两个不同房间和大型工业环境中飞行MAV记录的11个双目序列;双目基线约为11cm,并提供20HZ的WVGA图像,根据 MAV 的速度、光照和场景纹理,这些序列分为简单、中等和困难;表2显示了 ORB-SLAM2 对于所有序列的绝对平移 RMSE,与 Stereo LSDSLAM 相比(采用其论文 [11] 中提供的结果)更准确;ORB-SLAM2 实现了厘米级的定位精度,比 Stereo LSD-SLAM 更准确;由于严重的运动模糊,ORB-SLAM2的tracking在 V2 03 的某些部分难以进行;如[22]所示,这个序列可以使用 IMU 信息进行处理;

    2_2

    表2: EuRoC Dataset上平移 RMSE (m) 的比较;

    图 6 显示了计算出轨迹与真值相比的示例:

    6

    图6:数据集为EuRoC中等难度的V1_02,V2_02,MH_03和困难的MH_05;黑色代表估计出的轨迹,红色代表groundtruth;

    C. TUM RGB-D Dataset [3]

    TUM RGB-D dataset包含来自 RGB-D 传感器的室内序列,分为几类,用于评估不同纹理、照明和结构条件下的对象重建和 SLAM/里程计方法;表3中,将ORB-SLAM2和ElasticFusion [15]、Kintinuous [12]、DVO-SLAM [14] 和 RGB-D SLAM [13]做了比较,ORB-SLAM2是唯一一种基于BA的方法,并且在大多数序列中都优于其他方法;

    请添加图片描述

    表3:TUM RGB-D DATASET上平移 RMSE (m) 的比较;

    图 7 显示了从四个序列中计算的关键帧pose对传感器深度图进行反投影所产生的点云,桌子和海报的良好定义和笔直轮廓证明了ORB-SLAM2的高精度定位:

    请添加图片描述

    图7:TUM RGB-D fr3 office, fr1 room, fr2 desk and fr3 nst数据集通过计算的关键帧pose对传感器深度图进行反投影所产生的点云;

    D. Timing Results

    在表3中对三个序列在不同传感器和不同分辨率图像进行了时间分析,显示的是每个线程任务的平均值和两个标准偏差范围。由于这些序列包含一个回环,因此full BA 和回环线程的一些任务只执行一次,并且只报告一个时间测量值。每帧的平均跟踪时间低于每个帧速率的倒数序列,这意味着我们的系统能够实时工作。由于双目图像中的ORB提取是并行的,可以看出在V2 02的立体WVGA图像中提取1000个ORB特征类似于在fr3 office的单个VGA图像通道中提取相同数量的特征;回环中的关键帧数显示为与回环相关的时间的参考,虽然 KITTI 07 中的回环包含更多关键帧,但为室内 fr3 办公室构建的 covisibility graph 更密集,因此回环融合、pose-graph优化和full BA 更昂贵, covisibility graph 的高密度使得本地地图包含更多的关键帧和点,因此本地地图tracking和local BA 也更加昂贵。

    2_4

    表4:以毫秒为单位的每个线程的计时结果(平均值 ± 2 标准偏差);

    Conclusion

    ORB-SLAM2是一个完整的SLAM系统,接受Monocular、Stereo and RGB-D传感器输入,同时能够在标准的CPU上实时执行 relocalization、loop closing、map reuse等功能;在已知环境下,ORB-SLAM2的仅定位模式提供了一种非常稳健、零漂移和轻量级的定位方法;ORB-SLAM2在大多情况下都表现出最高的精度,在KITTI visual odometry benchmark上ORB-SLAM2是最好的双目解决方案,至关重要的是,与其他双目SLAM方法相比,ORB-SLAM2实现在已经建图区域上实现了零漂移定位;ORB-SLAM2的RGB-D方法表明,在定位精度上,BA的方法优于直接法或者ICP,另外还具有计算成本低、不需要GPU就能实时等优点;

    作者开源了ORB-SLAM2的源代码,该源代码还包含一个使用单目相机的AR应用程序

    未来的扩展可能包括:非重叠多摄像头、鱼眼或者全景摄像头支持、大尺度的稠密融合、协同建图或者是增强运动模糊鲁棒性。

    展开全文
  • ORB-SLAM2超详细注释-by计算机视觉生活公众号附属开源学习小组:SLAM研习社附部分内容讲解视频:全网最详细的ORB-SLAM2精讲:原理推导+逐行代码分析,请:,课程大纲如下:第01讲-ORB-SLAM2优点,流程框架介绍,运行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,024
精华内容 8,009
关键字:

ORB-SLAM2

友情链接: debug_locks.rar