一年后再读SLAM~ 行业有了不少工程实践方面的突破

一、链接:https://www.zhihu.com/question/53571648/answer/176732257

目前来说,受到业界肯定的比较成熟的主要是:

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_NOROSRomaTeng贡献了一个具有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 有很多種分類方法。按照傳感器的不同,可以分為

  1. 基於激光雷達的2D/3D SLAM、【Cartographer,掃地機器人】
  2. 基於深度相機的RGBD SLAM、
  3. 基於視覺傳感器的visual SLAM(以下簡稱vSLAM)、
  4. 基於視覺傳感器和慣性單元的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入门+典型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真值,然后对新输入的定位图片进行回归。

以上方案目前来看,只解决了特定场景的定位问题,由于数据是在云端的,所以一定需要在线使用,因此定位的频率不会太高。

链接:orb-slam在众多SLAM方法中处于怎样的地位?

orbslam 是14-15年被一个西班牙博士做的,目前还在做,最近又发了新文章:Probabilistic Semi-Dense Mapping from Highly Accurate Feature-Based Monocular SLAM。
orbslam可以看做是PTAM的一个延伸。ptam想必做visual slam 的都知道,它是第一个将tracking和mapping分成两个线程实现的实时slam系统,07年出来的时候很惊艳。几乎成立后来feature-based slam方法的标准。
orbslam 算是这个思路的延伸,于ptam相比它又加了一个loopclosing的线程。
这个系统基于ptam,个人感觉效果也更好一些(毕竟ptam相对较老),整合了covisible graph,基于bagofwords 做relocalization等技术。
处于什么地位很难讲,虽然创新点不是很多,但是工程上,它是目前最好的。几篇文章都发在机器人或者控制的顶会上了。

链接:SLAM在VR/AR领域重要吗?

代码资源:

FangGet/ORB_SLAM2_Android【out of data】

sunzuolei/orb_slam2_android【不错】

XwK-P/ORB_AR

ORB_SLAM2在Android上的移植过程

[SLAM] 03. ORB-SLAM2的更多相关文章

  1. 关于ORB SLAM2资源整理(持续更新)

    ORB SLAM2源码讲解(吴博) https://www.youtube.com/watch?v=2GVE7FTW7AU 泡泡机器人视频整理: http://space.bilibili.com/3 ...

  2. orb slam2 双目摄像头

    主要参考了http://blog.csdn.net/awww797877/article/details/51171099这篇文章,其中需要添加的是:export ROS_PACKAGE_PATH=$ ...

  3. ORB SLAM2在Ubuntu 16.04上的运行配置

    http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...

  4. ORB SLAM2 学习笔记

    cd ~/Documents/demos/ORB_SLAM2 ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.y ...

  5. Ubuntu14.04 使用本地摄像头跑ORB SLAM2(暂未完成)

    嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2 前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14 ...

  6. orb slam2

  7. SLAM:(编译ORB)fatal error LNK1181: 无法打开输入文件“libboost_mpi-vc110-mt-1_57.lib”

    对于使用MD版本编译的ORB_SLAM,会用到MPI版本的Boost,需要自己编译,比较麻烦. 因此使用MT版本进行生成,暂时无法完成. 工程配置 发现添加库文件使用了:从父级或项目默认继承,默认包含 ...

  8. 使用 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 ...

  9. Ubuntu16.04+Ros+Usb_Cam ORB SLAM2

    转载自:https://www.jianshu.com/p/dbf39b9e4617亲测可用 1.其中编译ORB_SLAM2的   ./build.sh 和 ./build_ros.sh之前需要修改文 ...

随机推荐

  1. failed to load class "org.sl4j.impl.StaticLoggerBinder"

    (1)要确保有properties文件在你的主项目的src下面 (2)https://www.slf4j.org/codes.html(这个是配置相关文件) (3)如果经过1.2步后问题依然存在,那么 ...

  2. v$instance如何生成

    参考:http://www.itpub.net/thread-1284858-1-1.html 1.ORACLE 先创建的x$ 表即RDBMS的内部表 2.然后在X$表的基础上创建了GV$ 视图.  ...

  3. The Secret Mixed-Signal Life of PWM Peripherals

    The Secret Mixed-Signal Life of PWM Peripherals Pulse-width modulation (PWM) peripherals have enjoye ...

  4. [前端] 记录工作中遇到的各种问题(Bug,总结,记录)

    最近一年,在开发实践过程中遇到了不少问题,大多都能得到解决 部分知其原理,部分只能做到解决问题,而半年前遇到的问题,或多或少都忘得差不多了 是该记录一下一些问题,防止再遇到就得再查资料了 1. 浏览器 ...

  5. BTrace使用小结

    简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目. 典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执 ...

  6. ds18b20采集温度并上报服务器

    交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在 ...

  7. 版本控制-GitHub

    前面几篇文章,我们介绍了Git的基本用法及Git服务器的搭建,本篇文章来学习一下如何使用GitHub.GitHub是开源的代码库以及版本控制库,是目前使用网络上使用最为广泛的服务,GitHub可以托管 ...

  8. 【Mac使用系列】【转载】十几个Mac实用工具

    本文摘自:https://www.jianshu.com/p/15c7b3711005 经过验证,这几个不存在: CleanMyMac.OmniGraffle,我将可用的放在云盘里,有需要的话,可以从 ...

  9. 2014年新一代的报表利器 Qlik Sense Desktop 初步体验

    点击进入 QlikView/QlikSense 社区  交流群:432998033 Qlik Sense Desktop 的案例展示 先上几个刚刚边看边学完成的几个报表案例效果 (如果图片显示不正常, ...

  10. 【PMP】项目浮动的三种时间

    自由浮动时间 不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间. 总浮动时间 不影响项目总工期的情况下活动可以拖延的总时间. 项目浮动时间 在已经排好的总工期的基础上,领 ...