[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之前需要修改文 ...
随机推荐
- 使用 SHOW STATUS 查看mysql 服务器状态信息
在LAMP架构的网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL ...
- Linux知识(6)----卸载安装的包
命令步骤: sudo apt-get purge PACKAGE_NAME sudo apt-get autoremove 例如卸载ffmpeg包: sudo apt-get purge ffmpeg ...
- Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值
http://www.cnblogs.com/sunzn/archive/2013/04/03/2998113.html mWebView.setWebViewClient(new MyWebView ...
- 独热编码和dummy编码的作用
参考这篇文章: https://www.cnblogs.com/lianyingteng/p/7792693.html 总结:我们使用one-hot编码时,通常我们的模型不加bias项 或者 加上bi ...
- ds18b20采集温度并上报服务器
交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在 ...
- 一起来给iOS 11找bug: 苹果还是乔布斯时代的细节控吗?
众所周知,前几天苹果在位于苹果公园的Steve Jobs剧院召开了一年一度的新品发布会,正式揭幕了全屏的iPhoneX, 随后又把iOS 11推送给了测试员(Beta Tester)(正式版将于几周后 ...
- 微软BI 之SSRS 系列 - 如何让报表在一页显示,两种常用的技巧
通常情况下,SSRS 报表在页面内容过多的时候会自动分页.但有的时候当页面内容不是很多,大概最多2页的情况下,或者客户要求所有内容必须在一页显示时,应该如何设置. 实际上,要考虑两种情况:第一种情况是 ...
- MySQL5.7多主一从(多源复制)同步配置
MySQL5.7多主一从(多源复制)同步配置(抄袭) 原文地址:https://my.oschina.net/u/2399373/blog/2878650 多主一从,也称为多源复制,数据流向: 主库1 ...
- 使用yocs_cmd_vel_mux进行机器人速度控制切换
cmd_vel_mux包从名字就可以推测出它的用途,即进行速度的选择(In electronics, a multiplexer or mux is a device that selects one ...
- Google 发布的15个 Android 性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...