[SLAM] 03. ORB-SLAM2
一年后再读SLAM~ 行业有了不少工程实践方面的突破
目前来说,受到业界肯定的比较成熟的主要是:
1、西班牙Universidad de Zaragoza的ORB_SLAM2:raulmur/ORB_SLAM2
2、港科大的VIO:HKUST-Aerial-Robotics/VINS-Mobile
3、Google的SLAM:googlecartographer/cartographer
其中,
第一个mono、stereo和RGBD都支持,较多应用于AR应用领域,可以说是一套state-of-art的indoor camera SLAM系统,原版本暂不支持IMU,stereo_IMU可以参考:henrywen2011/orb_slam_imu;
第二个支持mono+IMU,出名于无人机地图绘制;
第三个支持2Dlidar(3Dlidar)+IMU,在无人驾驶中的地图构建领域著称。
=======================================分割线======================
ORB_SLAM2 支持IMU的版本虽没有放出来,效果感觉还是不错:https://www.youtube.com/watch?v=rdR5OR8egGI
1、基于ORB_SLAM2,Wang Jing加入了IMU,可参看:OpenSLAM/LearnViORB_NOROS
2、基于LearnViORB_NOROS,RomaTeng贡献了一个具有IMU+monoSLAM:ORB-VINS_RK4
3、另外一个支持IMU+monoSLAM的版本为OKVIS:ethz-asl/okvis
可见ORB_SLAM2的地位。
Camera trajectory is computed using ORB-SLAM2. Virtual cubes are inserted by the user on detected planes based on reconstructed points by the SLAM system. We are using just a monocular camera. Find the code of ORB-SLAM2 and this AR demo here: https://github.com/raulmur/ORB_SLAM2 https://github.com/raulmur/ORB_SLAM2
二、SLAM算法解析:抓住視覺SLAM難點,了解技術發展大趨勢
SLAM 技術涵蓋的範圍非常廣,按照不同的傳感器、應用場景、核心算法,SLAM 有很多種分類方法。按照傳感器的不同,可以分為
- 基於激光雷達的2D/3D SLAM、【Cartographer,掃地機器人】
- 基於深度相機的RGBD SLAM、
- 基於視覺傳感器的visual SLAM(以下簡稱vSLAM)、
- 基於視覺傳感器和慣性單元的visual inertial odometry(以下簡稱VIO )。
視覺傳感器包括單目相機、雙目相機、魚眼相機等。由於視覺傳感器價格便宜,在室內室外均可以使用,因此 vSLAM 是研究的一大熱點。早期的 vSLAM 如 monoSLAM 更多的是延續機器人領域的濾波方法。
現在使用更多的是計算機視覺領域的優化方法,具體來說,是運動恢復結構(structure-from-motion)中的光束法平差(bundle adjustment)。
在 vSLAM 中,按照視覺特徵的提取方式,又可以分為特徵法、直接法。當前 vSLAM 的代表算法有 ORB-SLAM、SVO、DSO 等。
視覺傳感器對於無紋理的區域是沒有辦法工作的。慣性測量單元(IMU)通過內置的陀螺儀和加速度計可以測量角速度和加速度,進而推算相機的姿態,不過推算的姿態存在累計誤差。視覺傳感器和 IMU 存在很大的互補性,因此將二者測量信息進行融合的 VIO 也是一個研究熱點。
按照信息融合方式的不同,VIO 又可以分為基於濾波的方法、基於優化的方法。
VIO 的代表算法有 EKF、MSCKF、preintegration、OKVIS 等。 Google 的 Tango 平板就實現了效果不錯 VIO。
總的來說,相比於基於激光雷達和基於深度相機的 SLAM,基於視覺傳感器的 vSLAM 和 VIO 還不夠成熟,操作比較難,通常需要融合其他傳感器或者在一些受控的環境中使用。
与深度学习
自從深度學習在諸多領域所向披靡,不少研究者試圖用深度學習中 end-to-end 的思想重構 SLAM 的流程。目前有些工作試圖把 SLAM 的某些環節用深度學習代替。
不過這些方法沒有體現出壓倒性優勢,傳統的幾何方法依然是主流。
在深度學習的熱潮之下,SLAM 涉及的各個環節應該會逐漸吸收深度學習的成果,精度和魯棒性也會因此提升。也許將來 SLAM 的某些環節會整體被深度學習取代,形成一個新的框架。
SLAM 原本只關注環境的幾何信息,未來跟語義信息應該有更多的結合。借助於深度學習技術,當前的物體檢測、語義分割的技術發展很快,可以從圖像中可以獲得豐富的語義信息。這些語義信息是可以輔助推斷幾何信息的,例如已知物體的尺寸就是一個重要的幾何線索。
关于SLAM入门,在这里把几个相关的资料list出来:
1. slamcn主页:SlamCN
2. 大神Andrew Davison的主页:Andrew Davison: Research
3. openslam:http://openslam.org/
4. 泡泡机器人,微信公众号
5. 《视觉SLAM十四讲》,高翔,总结比较全面,同时有对应的code可以参考
6. slam基础知识:
室内定位(基于视觉)
基于视觉的室内定位,在AR/VR导航,以及GPS/WIFI基本上无法工作或者满足定位精度要求的场景很有用。
不知道大家有没有使用过微信的街景定位,通过拍摄一张室外的照片儿进行定位。可以简单的理解就是GPS加上图像匹配的方案进行的。在室内场景,这种方案依旧适用,但有一个问题,就是室内场景已经获取到的照片的位置真值的获取。最近看到一个解决方案是这样的:
a1. 采集待定位场景的连续视频数据(连续图片帧);
a2. 使用SFM的方案,进行室内的3d建模;【SLAM 是 SfM(运动恢复结构:Structure from Motion)的一种实时版本】
a3. 根据获得的3d模型,给图片帧赋予真值;
a4. 通过图像search 以及匹配的方法进行定位 / 或者是训练深度学习模型,input是图片,output是图片的6DOF真值,然后对新输入的定位图片进行回归。
以上方案目前来看,只解决了特定场景的定位问题,由于数据是在云端的,所以一定需要在线使用,因此定位的频率不会太高。
orbslam可以看做是PTAM的一个延伸。ptam想必做visual slam 的都知道,它是第一个将tracking和mapping分成两个线程实现的实时slam系统,07年出来的时候很惊艳。几乎成立后来feature-based slam方法的标准。
处于什么地位很难讲,虽然创新点不是很多,但是工程上,它是目前最好的。几篇文章都发在机器人或者控制的顶会上了。

代码资源:
FangGet/ORB_SLAM2_Android【out of data】
sunzuolei/orb_slam2_android【不错】

[SLAM] 03. ORB-SLAM2的更多相关文章
- 关于ORB SLAM2资源整理(持续更新)
ORB SLAM2源码讲解(吴博) https://www.youtube.com/watch?v=2GVE7FTW7AU 泡泡机器人视频整理: http://space.bilibili.com/3 ...
- orb slam2 双目摄像头
主要参考了http://blog.csdn.net/awww797877/article/details/51171099这篇文章,其中需要添加的是:export ROS_PACKAGE_PATH=$ ...
- ORB SLAM2在Ubuntu 16.04上的运行配置
http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...
- ORB SLAM2 学习笔记
cd ~/Documents/demos/ORB_SLAM2 ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.y ...
- Ubuntu14.04 使用本地摄像头跑ORB SLAM2(暂未完成)
嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2 前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14 ...
- orb slam2
- SLAM:(编译ORB)fatal error LNK1181: 无法打开输入文件“libboost_mpi-vc110-mt-1_57.lib”
对于使用MD版本编译的ORB_SLAM,会用到MPI版本的Boost,需要自己编译,比较麻烦. 因此使用MT版本进行生成,暂时无法完成. 工程配置 发现添加库文件使用了:从父级或项目默认继承,默认包含 ...
- 使用 evo 工具评测 VI ORB SLAM2 在 EuRoC 上的结果
http://www.liuxiao.org/2017/11/%E4%BD%BF%E7%94%A8-evo-%E5%B7%A5%E5%85%B7%E8%AF%84%E6%B5%8B-vi-orb-sl ...
- Ubuntu16.04+Ros+Usb_Cam ORB SLAM2
转载自:https://www.jianshu.com/p/dbf39b9e4617亲测可用 1.其中编译ORB_SLAM2的 ./build.sh 和 ./build_ros.sh之前需要修改文 ...
随机推荐
- failed to load class "org.sl4j.impl.StaticLoggerBinder"
(1)要确保有properties文件在你的主项目的src下面 (2)https://www.slf4j.org/codes.html(这个是配置相关文件) (3)如果经过1.2步后问题依然存在,那么 ...
- v$instance如何生成
参考:http://www.itpub.net/thread-1284858-1-1.html 1.ORACLE 先创建的x$ 表即RDBMS的内部表 2.然后在X$表的基础上创建了GV$ 视图. ...
- The Secret Mixed-Signal Life of PWM Peripherals
The Secret Mixed-Signal Life of PWM Peripherals Pulse-width modulation (PWM) peripherals have enjoye ...
- [前端] 记录工作中遇到的各种问题(Bug,总结,记录)
最近一年,在开发实践过程中遇到了不少问题,大多都能得到解决 部分知其原理,部分只能做到解决问题,而半年前遇到的问题,或多或少都忘得差不多了 是该记录一下一些问题,防止再遇到就得再查资料了 1. 浏览器 ...
- BTrace使用小结
简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目. 典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执 ...
- ds18b20采集温度并上报服务器
交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在 ...
- 版本控制-GitHub
前面几篇文章,我们介绍了Git的基本用法及Git服务器的搭建,本篇文章来学习一下如何使用GitHub.GitHub是开源的代码库以及版本控制库,是目前使用网络上使用最为广泛的服务,GitHub可以托管 ...
- 【Mac使用系列】【转载】十几个Mac实用工具
本文摘自:https://www.jianshu.com/p/15c7b3711005 经过验证,这几个不存在: CleanMyMac.OmniGraffle,我将可用的放在云盘里,有需要的话,可以从 ...
- 2014年新一代的报表利器 Qlik Sense Desktop 初步体验
点击进入 QlikView/QlikSense 社区 交流群:432998033 Qlik Sense Desktop 的案例展示 先上几个刚刚边看边学完成的几个报表案例效果 (如果图片显示不正常, ...
- 【PMP】项目浮动的三种时间
自由浮动时间 不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间. 总浮动时间 不影响项目总工期的情况下活动可以拖延的总时间. 项目浮动时间 在已经排好的总工期的基础上,领 ...