SLAM 介绍

2023-05-16

http://www.slamcn.org/index.php/%E9%A6%96%E9%A1%B5

比较好的开源SLAM/Odometry代码:
https://github.com/ethz-asl/rovio
https://github.com/ethz-asl/okvis
https://github.com/raulmur/ORB_SLAM2
https://github.com/googlecartographer/cartographer
https://github.com/tum-vision/lsd_slam
https://github.com/uzh-rpg/rpg_svo
  • 机器人爱好者: http://www.roboticfan.com/
  • 中国机器人网: http://www.robotschina.com/
  • 机器人天空: http://www.robotsky.com/
  • 机器人博览: http://www.kepu.net.cn/gb/technology/robot/

    作者:白峰
    链接:https://www.zhihu.com/question/19703505/answer/13882743
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

  • 0.ORB_SLAM的官方网站:http://webdiis.unizar.es/~raulmur/orbslam/

    1. 参考知乎上对 orb-slam 的评价:orb-slam在众多SLAM方法中处于怎样的地位

    2. 评价说是 PTAM 的改进版:PTAM主页

    3. Orb_SLAM的 GitHub 页面:此页面有详细的使用方法

    4. 使用Orb_SLAM的一些实用参考工程:视觉SLAM实战(一):RGB-D SLAM V2、Orb_SLAM

         "RGBDSLAMv2 is based on the ROS project, OpenCV, PCL, OctoMap, SiftGPU and more – thanks!" 你还在等什么?装装装!好在这些东西在Ubuntu下安装,就是几句话搞定的事。

         ROS hydro安装指南: http://wiki.ros.org/cn/hydro/Installation/Ubuntu (加ppa源后直接安装)

         Linux OpenCV安装指南:http://blog.sciencenet.cn/blog-571755-694742.html (从源代码编译)

         PCL:http://www.pointclouds.org/downloads/linux.html (加ppa后安装)


    5. Orb_SLAM的使用方法中文介绍ORB-SLAM(1) --- 让程序飞起来

           本文给出了一些注意事项和排错方法,值得没有时间读详细文档的使用者参考一下。



首页

目录

 [隐藏] 
  • 1 SLAM 介绍
    • 1.1 什么是SLAM
    • 1.2 SLAM与视觉里程计(Visual Odometry)
    • 1.3 SLAM和SfM
  • 2 主流开源SLAM方案
    • 2.1 视觉传感器
    • 2.2 激光传感器
    • 2.3 视觉(Visual)与IMU融合(VI)
    • 2.4 后端优化工具
  • 3 入门资料推荐
  • 4 泡泡机器人
  • 5 相关博客推荐
  • 6 机器人常用传感器
  • 7 机器人领域优秀实验室及牛人汇总
  • 8 Deep Learning for SLAM
  • 9 Augmented Reality for SLAM
  • 10 问题与答复
  • 11 MediaWiki 相关

SLAM 介绍

什么是SLAM

SLAM是Simultaneous Localization and Mapping的缩写,意为“同时定位与建图”。它是指运动物体根据传感器的信息,一边计算自身位置,一边构建环境地图的过程。目前,SLAM的应用领域主要有机器人、虚拟现实和增强现实。其用途包括传感器自身的定位,以及后续的路径规划、场景理解。

随着传感器种类和安装方式的不同,SLAM的实现方式和难度会有很大差异。按传感器来分,SLAM主要分为激光、视觉两大类。其中,激光SLAM研究较早,理论和工程均比较成熟。视觉方案目前(2016)尚处于实验室研究阶段,极少看到实际产品应用。

SLAM研究自1988年提出以来,已经过了近三十年。早期SLAM研究侧重于使用滤波器理论,最小化运动体位姿和地图的路标点的噪声。21世纪之后,学者们开始借鉴SfM(Structure from Motion)中的方式,以优化理论为基础求解SLAM问题。这种方式取得了一定的成就,并且在视觉SLAM领域中取得了主导地位。

  • 激光传感器:激光传感器可以直接获得相对于环境的直接距离信息,从而实现直接相对定位,对于激光传感器的绝对定位及轨迹优化可以在相对定位的基础上进行。
  • 视觉传感器:视觉传感器很难直接获得相对于环境的直接距离信息,而必须通过两帧或多帧图像来估计自身的位姿变化,再通过累积位姿变化计算当前位置。这种方法更类似于直接用里程计进行定位,即视觉里程计(Visual Odometry)。里程计的测量积分后才相当于激光传感器直接获得的定位信息,这就是图优化SLAM框架中的前端。而后端对定位和位姿轨迹的优化本质上与激光传感器的优化相同,都基于最优估计的理论框架进行。

SLAM与视觉里程计(Visual Odometry)

人们有时候会混淆SLAM和视觉里程计的概念。应该说,视觉里程计是SLAM的一个模块,其目的在于增量式地估计相机运动。然而,完整的SLAM还包括添加回环检测和全局优化,以获得精确的、全局一致的地图。

视觉里程计通常作为SLAM系统的前端。它增量式的计算方法能估计邻近帧间的相机运动,但这也意味着邻近帧间的误差会影响之后的轨迹估计,意味着它会随着时间推移,产生漂移。同时,视觉里程计也不含有建图模块。一个完整的SLAM系统会关心相机轨迹和地图的全局一致性,但这也意味着需要更多的计算资源来计算全局的优化。在资源有限、不关心全局路径的场合(如无人机的着陆、短时间控制中),可以考虑只使用视觉里程计,而不必使用完整的SLAM。

SLAM和SfM

视觉SLAM中大量使用了SfM中的方法,如特征点跟踪、捆集优化(Bundle Adjustment)等,以至于许多研究者把它们视为同一个研究领域。然而,尽管方法上很相似,SLAM和SfM的侧重点是不同的。SLAM的应用场合主要在机器人和VR/AR,计算资源有限,需要很强的实时性,故侧重点在于,如何在有限的资源里快速地对相机进行定位。而SfM方法通常是离线的,可以调用大量计算资源进行长时间的计算,侧重于重建出更精确、美观的场景。

主流开源SLAM方案

视觉传感器

  • 稀疏法(特征点):
    • ORB-SLAM(单目,双目,RGBD)[1](ORB-SLAM: a Versatile and Accurate Monocular SLAM System中文翻译)[2]
    • PTAM(单目)[3]
    • MonoSLAM(单目)[4]
  • 半稠密法:
    • LSD-SLAM(单目,双目,RGBD)[5]
    • SVO(单目, 仅VO)[6]详细安装使用说明
  • 稠密法:
    • DTAM(RGBD): Paper: [7] Open source code:[8]
    • Elastic Fusion(RGBD): Open source code:[9]
    • Kintinous(RGBD):Open source code: [10]
    • DVO: Open source code: [11]
    • RGBD-SLAM-V2: Open source code: [12]
    • RTAB-MAP: Code: [13]
  • 其他
    • ScaViSLAM: Open source code [14]

激光传感器

  • Hector SLAM[15]
  • Gmapping [16]
  • tinySLAM(基于蒙特卡洛定位算法的简单SLAM实现) [svn co https://svn.openslam.org/data/svn/tinyslam]

参考论文 Steux B, Hamzaoui O E, Steux B. CoreSLAM: a SLAM Algorithm in less than 200 lines of C code[J].
  
  • flirtlib 提取二维激光数据的感兴趣区域,对二维laser数据做特征检测和描述,代码内置若干特征检测算子和特征描述算子,提供样例代码和数据,包含RANSAC Loop Closure 以及完整的mapping过程 [17]

参考论文 Tipaldi G D, Arras K O. FLIRT - Interest regions for 2D range data.[C]// ieee International Conference on Robotics & Automation. 2010:3616-3622.
  

视觉(Visual)与IMU融合(VI)

  • Release of OKVIS: Open Keyframe-based Visual Inertial SLAM[18]

后端优化工具

  • g2o:[19]
  • ceres: [20]
  • GTSAM: [21]

常用数据集

    • RGB-D SLAM Dataset and Benchmark:来自TUM,采用Kinect采集的数据集
    • KITTI Vision Benchmark Suite:装备4个相机、高精度GPS和激光雷达,在城市道路采集的数据
    • The EuRoC MAV Dataset:来自ETH,采用装备了VI-Sensor的四旋翼采集数据

入门资料推荐

  • 关于Computer Vision
    • CMU computer vision 入门课件推荐(第16-19章关于visual odometry方面的基础知识推导非常清晰)。
    • Multiple View Geometry
    • Daniel Cremers的MVG课程视频。百度云分享链接
    • An Invitation to 3D Computer Vision
    • 宾夕法尼亚大学SLAM公开课,百度云链接(内含Videos、PPT、Subtitles)
  • 关于SLAM(状态最优估计)
    • State Estimation for Robotics, SLAM入门教材吐血推荐,对深入理解SLAM实质非常有帮助,下载链接:[22]
    • Course on SLAM,作者Joan Sola关于Graph-SLAM的教程,包含位姿变换、传感器模型、图优化以及SLAM中的稀疏性求解。其EKF-SLAM教程见[23]
    • Probabilistic Robotics
    • 贝叶斯滤波与卡尔曼滤波:弗莱堡大学课件,推导详细,并包含基础知识,适合入门。
    • 贝叶斯滤波到卡尔曼滤波的推导:从极大似然角度出发。
    • 卡尔曼滤波中文讲解


  • 西班牙萨拉戈萨大学机器人课程:José Neira Parra主页
    • 1.Introduction
    • 2.Sensor and feature modelling
    • 3.The data association problem:关于数据关联的问题与讲解很详细,有实例.
    • 4.The scaling problem:针对SLAM计算量过大的问题进行讲解.
    • 5.Current trends in SLAM:关于DTAM,PTAM,SLAM++等系统的对比,并推荐了superpixel的方法,值得一看.


  • 关于路径规划
    • CMU Robot Motion Planning 关于机器人路径规划的入门课件
    • 关于寻路算法的一些思考系列(翻译Amit Patel的博客[24])
      • 关于寻路算法的一些思考(1):A*算法介绍 [25]
      • 关于寻路算法的一些思考(2):Heuristics 函数 [26]
      • 关于寻路算法的一些思考(3):A*算法的实现[27]
      • 关于寻路算法的一些思考(4):A* 算法的变体 [28]
      • 关于寻路算法的一些思考(5):处理移动中的障碍物[29]
      • 关于寻路算法的一些思考(6):预先计算好的路径的所用空间 [30]
      • 关于寻路算法的一些思考(7):地图表示 [31]
      • 关于寻路算法的一些思考(8):长期和短期目标 [32]
      • 关于寻路算法的一些思考(9):寻路者的移动成本 [33]
      • 关于寻路算法的一些思考(10):最短路径的用户体验 [34]
      • 关于寻路算法的一些思考(11):寻路算法的其他应用 [35]
      • 关于寻路算法的一些思考(12):AI 技术 [36]

泡泡机器人

  • 泡泡机器人公开课程-已发布
  • 泡泡机器人SLAM微信公众号

微信搜索“泡泡机器人SLAM”微信公众号,或者扫描下面二维码:

  • 公开课程b站主页:[37]

泡泡机器人微信公众号logo1.jpg

相关博客推荐

  • 半闲居士[38]
    • 一起做RGB-D SLAM 第一季[39]
    • 数学基础 [40][41][42]
    • 关于g2o [43][44][45]
  • 白巧克力[46]
    • 卡尔曼滤波器 [47][48]
    • ROS [49][50][51][]
    • Graph SLAM tutorial:从推导到应用[52][53][54][55]
    • Mono SLAM理论基础 [56][57]
    • SVO 论文解析 [58]
  • 冯兵的个人博客[59]
    • 视觉里程计简介:[60]
    • 一个简单的视觉里程计实现:[61][62]
    • 一步步完善视觉里程计:[63][64][65][66][67][68][69]
    • 一步步实现SLAM:[70][71][72][73]
  • hitcm[74]
    • LSD-SLAM深入学习 [75][76][77][78]
    • KinectV2+ROS在线环境重建 [79][80]
  • Tombone's Computer Vision Blog, MIT博士后, CMU博士, vision.ai创始人: [81]
  • Alexander Grau's blog, 德国的一个技术发烧友, 博客里有很多关于机器人, SLAM, 传感器等技术方面的个人记录: [82]
  • 李建的个人博客: [83]
  • 刘富强的个人博客: [84] [85]

机器人常用传感器

  • 摄像头
  • 激光雷达
  • IMU
  • GPS
  • 声纳
  • 红外雷达
  • Bundle

机器人领域优秀实验室及牛人汇总

  • 优秀机器人实验室推荐
  • 机器人领域牛人列表

Deep Learning for SLAM

近年来Deep Learning的大潮比较火,有很多同学希望了解关于SLAM与Deep Learning结合的工作方向。在这里给出一些比较有参考性的资源,希望对大家有所帮助。

PS友情提示: SLAM可以算作一个系统问题,中间有很多子问题,分别需要不同的算法解决。 Deep Learning是一个用于解决问题的其中一种算法,如果我们不是希望从事机器学习算法研究的话,没有必要较真于是否使用Deep Learning, 而更应该关注怎样做能更好地解决我们面对的问题。

  • DL入门资源:
    • UFLDL(有中文/英文版)
    • Deep Learning Tutorial
    • Andrew NG机器学习课程,coursera
    • 斯坦福CS231N,针对视觉识别的卷积神经网络,Li FeiFei
    • PRML读书会笔记,机器学习狂热分子整理


  • Xiao Jianxiong's personal page:普林斯顿大学AP,正在从事cv dl与slam相结合的多项研究.
  • Deep driving:Xiao Jianxiong组的工作,用游戏数据进行图像标注,训练CNN,在游戏中和KITTI数据集上验证了该方法实现自动驾驶的可能性。
  • Posenet:最近比较火的posenet,使用SFM进行标注数据采集,训练CNN进行重relocalization。
  • On the Visual Perception of Forest Trails:苏黎世大学计算机视觉组的工作,使用CNN实现无人机在森林里的自动路径规划,实现穿越。
  • Tombone 关于ICLR2016的总结BLOG
  • Deep Image Homography Estimation 使用CNN进行图像间homography矩阵的估计. 生成训练数据的方法十分有趣, 可以利用任何已有的dataset自动生成, 无需人工标注.
  • gvnn: Neural Network Library for Geometric Computer Vision 在神经网络中定义几何变换层,为后续结合geometric computer vision和machine learning打下基础,值得关注。
  • CV, 深度学习资源大集合包括CV中各种topic采用DL模型处理的资源整理。

Augmented Reality for SLAM

增强现实是SLAM的一个重要应用,需要高精度的相机姿态和所感知的环境地图。 虚拟现实可以通过SLAM辅助IMU高效获取头盔姿态并刷新。 混合现实与增强现实原理相同。

  • 有标识(with artificial Marker or natural image Marker)增强现实:
    • 老牌标识类AR工具包:Artoolkit
    • Artoolkit新官网
    • 老牌全能SDK vuforia
    • AR SDK横向评比
    • Augmented Reality SDK Comparison
  • 无标识(Markerless)增强现实:
  • PTAMM算法
  • ORB-SLAM1 AR ios实现
  • 基于opencv的无标识AR
  • 基于opencv的无标识AR mobile版
  • 有用的组件:
    • openscenegraph GL工具包
    • opengl document
  • 行业应用:
    • 微软 Hololens 眼镜
    • magicleap 眼镜
    • SEER and HoloSEER 眼镜
    • impression PI 眼镜

问题与答复

  • 问题与答复页面

MediaWiki 相关

请查阅用户指南以获取使用本wiki软件的信息!

  • MediaWiki配置设置列表
  • MediaWiki常见问题
  • MediaWiki发布邮件列表
  • 本地化MediaWiki到您的语言
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SLAM 介绍 的相关文章

  • Ubuntu20.04编译安装opencv3.2和opencv_contrib-3.2

    图像特征提取中需要用到SIFT等算法 因此不得不安装从源码编译安装opencv contrib 网上有很多教程 但是在不同的环境下多少会出现一些错误 针对Ubuntu20 04 gcc 7环境下对opencv opencv contrib编
  • LIO-SAM:在高斯牛顿法求解过程中用SO3代替欧拉角

    LIO SAM发表于IROS2020 是一个效果非常好的惯性 激光紧耦合里程计 我打算给我们的机器人搞一个激光里程计 于是打算把LIO SAM改一改搞过来 修改过程中发现一个问题 在里程计求解 mapOptimization的LMOptim
  • 《视觉SLAM十四讲》第一版源码slambook编译调试

    slambook master ch2 编译正常 log如下 slambook master ch2 mkdir build cd build cmake make j8 The C compiler identification is G
  • 各向异性(anisotropic)浅提

    文章目录 各向异性 anisotropic 定义 哪种物体具有各向异性反射 什么导致各向异性反射 总结 各向异性 anisotropic 定义 它指一种存在方向依赖性 这意味着在不同的方向不同的特性 相对于该属性各向同性 当沿不同轴测量时
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 【大一立项】如何亲手搭建ROS小车:硬件和软件介绍

    本次博客将详细介绍上篇博客中提到的ROS小车的硬件和软件部分 由于十一实验室不开门 所以部分代码还没有上传到Github 下位机 下位机使用Arduino 因为大一上刚学完用Arduino做循迹小车 其实Arduino作为ROS小车的下位机
  • 速腾聚创雷达最新驱动安装(包含ring和timestamp)运行lio-sam

    记录一下搞slam的过程 ring和timestamp 最近想跑lio sam 需要用到ring和timestamp两个参数 lio sam作者用的velodyne雷达是带这两个参数的 但是rs雷达的老版驱动录制的点云包没有这两个参数 在g
  • 视觉SLAM实践入门——(20)视觉里程计之直接法

    多层直接法的过程 1 读图 随机取点并计算深度 2 创建图像金字塔 相机内参也需要缩放 并计算对应点的像素坐标 3 应用单层直接法 使用G N L M等方法 或者使用g2o ceres库 进行优化 源码中有一些地方会引起段错误 修改方法见下
  • 对最小二乘法的一点理解 - slam学习笔记

    我对最小二乘法的理解 在给定参数个数和函数模型之后 根据测试数据 找出与所有测试数据的偏差的平方和最小的参数 这里面应该有两个问题 1 为什么选取与真实数据平方和最小的拟合函数 2 如何求参数 为什么选取与真实数据平方和最小的拟合函数 极大
  • 单目视觉里程记代码

    在Github上发现了一个简单的单目vo 有接近500星 链接如下 https github com avisingh599 mono vo 这个单目里程计主要依靠opencv实现 提取fast角点并进行光流跟踪 然后求取本质矩阵并恢复两帧
  • 【SLAM】libQGLViewer:VS 2019 + Qt 5.14.2 + Win 10 配置

    libQGLViewer 2 7 2 VS 2019 Qt 5 14 2 Win 10 配置 注意 这次配置没有完全成功 编译25个成功 一个失败 失败的是 qglviewerplugin qglviewerplugin 是一个可选控件 不
  • Sophus安装踩坑

    装SLAM十四讲第二版提供的Sophus Eigen版本3 4 0 报错 home ch 下载 Sophus 13fb3288311485dc94e3226b69c9b59cd06ff94e test core test so2 cpp 9
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    目录 ORB SLAM2 基于可识别特征的自主导航与地图构建 简介 地图 A 地图特征点或3D ORB B 关键帧 C 可视化图像 位置识别 A 图像识别数据库 B 高效优化的ORB匹配 C 视觉一致性 自主导航追踪 A ORB特征获取 B
  • Ceres Solver从零开始手把手教学使用

    目录 一 简介 二 安装 三 介绍 四 Hello Word 五 导数 1 数值导数 2解析求导 六 实践 Powell函数 一 简介 笔者已经半年没有更新新的内容了 最近学习视觉SLAM的过程中发现自己之前学习的库基础不够扎实 Ceres
  • LeGO-LOAM中的数学公式推导

    LeGO LOAM是一种在LOAM之上进行改进的激光雷达建图方法 建图效果比LOAM要好 但是建图较为稀疏 计算量也更小了 本文原地址 wykxwyc的博客 github注释后LeGO LOAM源码 LeGO LOAM NOTED 关于代码
  • 【Pytorch论文相关代码】使用SOLD2预训练好的模型检测与匹配线段(自己的数据集)

    文章目录 前言 使用流程 检测与匹配结果 前言 论文链接 SOLD2 Self supervised Occlusion aware Line Description and Detection 论文源码 https github com
  • Ubuntu18.04安装pcl(过程/坑记录式教程)

    Ubuntu18 04安装pcl 1 下载pcl 2 安装依赖项 3 编译 4 安装 5 网上教程说要安装QT5和VTK 但按照本文的 本文记录了安装时出现的问题 出错的安装命令也记录了 建议浏览一遍再参考 不要错用了错误的指令 1 下载p
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    ORB SLAM2 基于可识别特征的自主导航与地图构建 ORB SLAM Tracking and Mapping Recognizable Features 转自 http blog csdn net cicibabe article d
  • 什么是深度学习的无监督学习与有监督学习

    无监督学习 深度学习中的无监督学习方法是一种训练算法 它在没有标注输出的情况下从输入数据中学习模式和特征 这种方法的核心是探索和理解数据的内在结构和分布 而不是通过已知的输出来指导学习过程 无监督学习在深度学习领域有许多不同的形式和应用 以
  • 高翔博士Faster-LIO论文和算法解析

    说明 题目 Faster LIO 快速激光IMU里程计 参考链接 Faster LIO 快速激光IMU里程计 iVox Faster Lio 智行者高博团队开源的增量式稀疏体素结构 Faster Lio是高翔博士在Fast系列的新作 对标基

随机推荐