精华内容
下载资源
问答
  • 视觉slam定位原理
    千次阅读 多人点赞
    2021-02-12 23:27:30

    SLAM总结(一)- SLAM原理概述与简介

    1. SLAM(Simultaneous Localization and Mapping):同时定位和建图,定位是定位机体在世界坐标系下的位姿(pose、transformation)。单传感器机体一般指相机光心、激光雷达scan中心、IMU中心、编码器两轮轴心,多传感器一般使用IMU中心,可以避免离心力的影响。位姿包括3个自由度的位置(translation)和3个自由度的姿态(rotation)。世界坐标系的原点和姿态可以由第一帧关键帧、已有的全局地图或路标点、GPS(全世界一样,真正意义的世界坐标)得到。建图是建立机器人所感知周围环境的地图,地图基本几何元素是点,点没有方向,只有3个自由度的位置。可以是稀疏点、稠密点、栅格地图、八叉树地图和拓扑地图等。地图的主要作用是定位、导航,导航可拆为导和航,导包括全局规划和局部规划,航即规划完后控制机器人运动。稀疏点一般只能用于定位;栅格地图、八叉树地图可用于定位、导航,稠密地图可以用于定位,处理后可转换成栅格地图或八叉树地图用于导航。
      总之,常见的SLAM问题是估计由大量离散的6自由度的机体pose(定位)和3自由度点(建图)构成的n维变量。那么时间和运动范围共同造成n增大,从而造成CPU和内存开销变大。拓展一下,把“同时定位和建图”改成“定位或建图”,那么可以分为下面几种情况:
      1) 机体pose和点完全未知:这种情况便属于SLAM问题
      2)机体pose完全已知和点完全未知:这便是纯建图问题,比如在ORB-SLAM2跑的过程中把关键帧对应图片保存下来,跑完后进行一次全局优化,此时得到完全已知的pose,再利用已知pose和图片建图。
      3)机体pose完全未知和点完全已知:这便是纯定位问题。
      4)机体pose完全未知和点部分已知:这些点一般可以作为路标使用,认为它们是没有累积误差的,可以利用它们使得每次开机都在同一世界坐标系下和减小累积误差。
      5)理论上有3*3=9中情况,其他情况不太常见就不一一例举

    2. SLAM框架如下图所示,整个系统由前端、后端和回环检测组成。
      SLAM框架
      1)前端:频率为传感器的帧率。数据关联(如特征点匹配、光流法等)、初始化、通过几何方法或很小范围优化快速得到当前帧的机体pose的较准确的初值(跟踪,Tracking)、重定位(跟丢时)和全局定位(开机或机器人绑架时)。当前帧一般只参照前一帧或前几帧,故随着关键帧增多累积误差会变大。
      2) 后端:频率为关键帧率,关键帧需要在保证跟踪质量的同时尽量减少帧的数量,帧的时间间隔主要与机器人的运动线速度、角速度(速度越快更容易跟踪丢失)、视野(距离太近更容易跟踪丢失)和环境中的特征特征结构(特征点稀疏和拐角更容易丢失)有关。
      功能是通过三角化得到新的点在世界坐标系下较准确的位置初值、剔除或合并一些旧的点、添加约束和优化较大范围的局部窗口中的关键帧pose和点位置。可以较长一段时间进行一次全局优化。
      3) 回环检测:频率不确定,一般远远低于前两个,与回环数量有关,会设置最高频率使得不在短距离内检测闭环。通过数据关联找到之前到过的地方。发现回环后会先使用相似变换的方法(3D-3D)调整与闭环帧关联的关键帧的位姿,然后优化回环内的所有关键帧和点,最后再进行一次全局优化。相对于普通的全局优化,闭环检测后的全局优化更容易收敛。
      4) 建图:一般地,通过前几步可以得到稀疏点地图。根据不同需求可以建立其他格式地图。为了重复利用地图,需要保存和加载地图

    3. SLAM分类按方法分类如下图,本人的主要研究的是基于关键帧的几何特征法,对多传感器和多几何特征的融合、增量式非线性优化兴趣比较大,以下内容主要讨论基于非线性优化的几何特征法。
      SLAM分类
      下面列举比较具有代表性的几种方法。
      1)单目:PTAM、ORB-SLAM2;
      2)特征直接融合(混合方法):SVO
      3)直接法:LSD-SLAM(半稠密)、DSO(稠密)
      4)滤波方法:MSCKF、OKVIS
      5)VIO:VIORB、VINS-Mono、PL-VIO
      6)激光SLAM:cartographer(较适合2D激光雷达)、LOAM(适合3D激光雷达)、gmapping(RBPF滤波,2D)
      7)视觉-激光SLAM:V-LOAM
      8)语义SLAM:SLAM++、CubeSLAM

    4. 前端:常用的视觉几何特征是点,但最近几年对线、面和物体的研究越来越多。一些人致力于将它们用一个统一的数学表达式表达出来,便于处理;一些人致力于给物体加上语义,结合生活实际赋予它们特性,比如人是经常动的、不能撞的;一些人致力于估计动态物体的pose和运动速度。这些是我们生活中常见的几何特征,加以利用势必提高算法的鲁棒性和精度,给物体赋予语义也会使得机器人变得更加智能。

    5. 后端:对于非线性优化,关键是目标函数(约束、残差项)、目标函数对变量的Jacobi矩阵和增量的求解方法。增量的求解一般使用LM方法。最后转化成了求解线性方程AX=b,求解方法包括CSparse、Cholesky、Preconditioned Conjugate Gradient(PCG)-CG改进、QR,求解之前还可以使用schur、plain、reording等方法对系数矩阵A进行处理,加快计算速度

    6. 评价指标:
      1)实时性:各种传感器频率不一样,如相机一般30HZ左右,雷达一般10HZ-20HZ左右,IMU一般100HZ-200HZ,为了提高机器人的反应速度,理论上频率越高机器人反应越快,一般需要充分利用每帧数据。那么比如相机需要在33.33ms内处理完一帧数据,即一张图像,这个还是难度挺大的。这个就是实时性的要求。
      2)精确度:估计的机体pose和环境的3D位置与真实值的偏差,我们往往无法直接获得真实值,只能通过更加高昂的仪器获得更接近真实值的Ground Truth用来比较。
      3)鲁棒性:要求算法能在各种环境中稳定运行
      4)占用CPU和内存等资源:该项更多是工程上考虑的

    7. 开放性问题:不同传感器在不同环境下存在不同的问题,总而言之就是如何提高上一条的性能指标
      1)对于增量式的定位和建图,长时间大范围会使得累积误差不断增大,另外长时间和大范围也可能使得计算量和内存不断增大
      2)数据关联:视觉和激光SLAM都是通过观测外部环境实现定位和建图的增量式算法,首先需要将帧与帧共同观测到的物体关联起来,对算法而言需要将帧与帧之间的点关联起来
      3)鲁棒性问题:需解决光照、低纹理、闭塞对视觉的影响,无结构、结构相似和走廊环境对激光雷达的影响等
      4)错误检测和恢复:出现错误在所难免,如果能准确的检测出错误,然后使用错误恢复机制纠正错误,如如何判断定位出错或丢失,判断出后又该如何纠正定位
      5)场景识别:重定位、闭环检测和全局定位都需要进行先识别
      6)动态物体:现在很多算法都是假设物体是静止的,那么随着动态物体增多,算法可能会失效,但加入动态物体处理机制一般又会增大计算量,影响实时性
      7)阈值和参数调整:算法中一般包含很多阈值,传感器也有内外参数,一般我们会固定这些值。但是随着环境和时间的变化,固定值并不能取得很好的效果,所以如何自适应的调节这些值也是个问题

    8. 拓展
      1)动态SLAM:SLAM一般假设环境是静止的,那么当空间中存在动态物体时,势必打破这一假设。当动态物体占据传感器数据较少一部分时,数据关联、RANSAC、优化的鲁棒核滤去动态物体,因为相对于静态点来说,动态物体上的点是outlier(外点)。但动态物体占据传感器的大部分时,动态点更像是inlier(内点),以上方法无法将动态物体滤去。从而动态SLAM应运而生,顾名思义,也就是在动态环境中运行的SLAM算法。它除了估计静态点的3D位置外,还能估计动态点的3D位置和速度。其中,SLAM_MOT(Muti-object tracking)比较具有代表性,在自动驾驶汽车上应用较多,它除了完成SLAM任务外,还能跟踪环境中的动态物体。
      2)语义SLAM:语义SLAM一般会与CV中的语义分割、物体识别等任务相结合,可以充分利用视觉特征中的语义信息,赋予环境中的物体语义,使得机器人能够更好地与环境交互,使得机器人更加智能。
      3)Active SLAM:SLAM一般都是在人或者在导航算法地控制下运动建图,这样的话,机器人的运动并不一定有利于定位和建图。Active SLAM就是通过算法控制机器人按有利于定位和建图的轨迹运动。比如机器人主动(active)利用已有地图,探索未知区域、通过闭环等减小累积误差和提高鲁棒性。

    9. 作为技术篇的开篇之作,简单叙述一下自己的学习SLAM的经历以及一些主要的参考文献。转眼研究生生活已过一半,从工作到现在,尝试过开关电源、嵌入式开发、机器学习、图像处理、CV和NLP,最后选择了SLAM。从《视觉SLAM十四讲》入门,然后开啃ORB-SLAM2论文和源码。拿下ORB-SLAM2后,差不多一两个星期可以初步搞定一个开源算法,从多传感器融合的VINS-Mono和PL-VIO到lidar算法Cartographer。感叹一下,carto这源码是我看过最绕的代码,得像剥洋葱一层一层扒开,终于知道《C++ primer》是怎么用的了! 得益于导师的放养,自己能够到公司实习,通过项目加深对上面几个算法的理解。感觉自己遇到了全天下最好的导师,一心为学生着想。经过一些实习面试,发现自己对知识掌握的深度还不太够,于是决定停下来好好总结一下再去探索新的算法。因此,决定重启CSDN,将四个算法放在一个系列一起总结对比一下,另外也会单独更详细结合源码解析各个算法。希望通过这种方式加深自己的理解,也能为SLAM的爱好者提供一些帮助,希望感兴趣的朋友点进来看一看,多多指正!以下是本系列(SLAM总结)一些主要参考文献

    1)ORB-SLAM2
    [1]ORB-SLAM: Tracking and Mapping Recognizable Features(2014)
    [2]ORB-SLAM: A Versatile and Accurate Monocular SLAM System(2015)
    [3]ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras(2017)
    [4]Fast角点:Faster and Better: A Machine Learning Approach to Corner Detection
    [5]Brief描述子:Binary robust independent elementary features
    [6]ORB特征:ORB_an efficient alternative to SIFT or SURF
    [7]词袋:Bags of Binary Words for Fast Place Recognition in Image Sequences
    词袋相似度计算(需采集数据集大量特征,《视觉SLAM十四讲》P309)
    [8]Video google: A text retrieval approach to object matching in videos
    [9]Understanding inverse document frequency: on theoretical arguments for idf
    [10]图优化:g2o:A General Framework for Graph Optimization
    [11]H分解出t、R:Motion and structure from motion in a piecewise planar environment
    [12]E的SVD分解:Multiple View Geometry in Computer Vision
    [13]RANSAC:Random sample consensus:a paradigm for model fitting with applications to image analysis and automated cartography
    [14]闭环检测和重定位方法:Fast Relocalisation and Loop Closing in Keyframe-Based SLAM
    [15]2D-2D三维重建(5点法):An efficient solution to the five-point relative pose problem
    [16]重定位时获得当前帧的初始位姿3D-2D方法(EPnP): An accurate On solution to the PnP problem
    闭环检测中相似变换、pose graph optimization:
    [17]Scale Drift-Aware Large Scale Monocular SLAM
    [18]closed-form solution of absolute orientation using unit quaternions
    [19]3D-3D点(闭环检测用到)求解R、T: Least-Squares Fitting of Two 3-D Point Sets

    2)VINS-Mono(多传感器):与1中一样的论文就不再罗列
    [1]VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
    [2]VIO:Monocular visual-inertial state estimation for mobile augmented reality
    [3]重定位、闭环检测和地图融合:Relocalization, global optimization and map merging for monocular visual-inertial SLAM
    [4]EuRoc相机模型及标定方法:Single View Point Omnidirectional Camera Calibration from Planar Grids
    [5]初始化:Robust initialization of monocular visual-inertial estimation on aerial robots
    [6]时间偏移标定:Online Temporal Calibration for Monocular Visual-Inertial Systems
    [7]Harris角点:Good features to track
    [8]KLT稀疏光流:An iterative image registration technique with an application to stereo vision
    IMU预积分:
    [9]Tightly-coupled monocular visualinertial fusion for autonomous flight of rotorcraft MAVs
    [10]On-manifold preintegration for real-time visual–inertial odometry
    [11]IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation
    [12]边缘化方法(schur):Sliding window filter with application to planetary landing

    3)PL-VIO(多传感器、点线特征融合):与1中一样的论文就不再罗列
    [1] PL-VIO: Tightly-Coupled Monocular Visual–Inertial
    Odometry Using Point and Line Features
    [2] LSD线特征:LSD: A Fast Line Segment Detector with a False Detection Control
    [3] LBD线特征描述子:An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency

    4)Cartographer
    [1] Real-Time Loop Closure in 2D LIDAR SLAM
    [2] ICP:Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration
    [3] 闭环优化:Sparse pose adjustment for 2D mapping

    5)多几何特征
    多特征:
    [1] Unified Representation and Registration of Heterogeneous Sets of Geometric Primitives
    [2] StructVIO: Visual-Inertial Odometry With Structural Regularity of Man-Made Environments
    [3] Systematic Handling of Heterogeneous Geometric Primitives in Graph-SLAM Optimization
    线特征:
    [4] The 3D Line Motion Matrix and Alignment of Line Reconstructions∗
    [5] Building a 3-D Line-Based Map Using Stereo SLAM
    面特征:
    [6] GPO: Global Plane Optimization for Fast and Accurate Monocular SLAM Initialization
    物体:
    [7] QuadricSLAM: Dual Quadrics From Object Detections as Landmarks in Object-Oriented SLAM
    [8] CubeSLAM: Monocular 3-D Object SLAM

    6)增量式优化
    [1]iSAM: Incremental Smoothing and Mapping
    [2]iSAM2: Incremental smoothing and mapping using the Bayes tree
    [3]ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for
    Visual-Inertial SLAM
    [4]g2o: A General Framework for Graph Optimization

    7)相关书籍,主要是数学和图像处理相关
    [1]视觉SLAM十四讲,高翔
    [2]概率机器人
    [3]计算机视觉:多视图几何
    [4]机器人学中的状态估计
    [5]数值分析与实验
    [6]线性代数9讲,张宇
    [7]线性系统理论数学基础
    [8]机器学习,周志华
    [9]图像处理,冈萨雷斯

    更多相关内容
  • 视觉SLAM深度解读

    千次阅读 2021-03-08 14:17:19
    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自| 新机器视觉近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于...

    点击上方“小白学视觉”,选择加"星标"或“置顶

    重磅干货,第一时间送达
    
    

    本文转自 | 新机器视觉

    近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前研究的一大热点,今天我们就来详细聊聊视觉SLAM的那些事儿。

    视觉SLAM是什么?

    视觉SLAM主要是基于相机来完成环境的感知工作,相对而言,相机成本较低,容易放到商品硬件上,且图像信息丰富,因此视觉SLAM也备受关注。

    目前,视觉SLAM可分为单目、双目(多目)、RGBD这三类,另还有鱼眼、全景等特殊相机,但目前在研究和产品中还属于少数,此外,结合惯性测量器件(Inertial Measurement Unit,IMU)的视觉SLAM也是现在研究热点之一。从实现难度上来说,大致将这三类方法排序为:单目视觉>双目视觉>RGBD。


    单目相机SLAM简称MonoSLAM,仅用一支摄像头就能完成SLAM。最大的优点是传感器简单且成本低廉,但同时也有个大问题,就是不能确切的得到深度。

    一方面是由于绝对深度未知,单目SLAM不能得到机器人运动轨迹及地图的真实大小,如果把轨迹和房间同时放大两倍,单目看到的像是一样的,因此,单目SLAM只能估计一个相对深度。另一方面,单目相机无法依靠一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。即是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。同时,相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦。

    而双目相机与单目不同的是,立体视觉既可以在运动时估计深度,亦可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也随双目的基线与分辨率限制。通过双目图像计算像素距离,是一件非常消耗计算量的事情,现在多用FPGA来完成。

    RGBD相机是2010年左右开始兴起的一种相机,它最大的特点是可以通过红外结构光或TOF原理,直接测出图像中各像素离相机的距离。因此,它比传统相机能够提供更丰富的信息,也不必像单目或双目那样费时费力地计算深度。

    视觉SLAM框架解读


    1.传感器数据

    在视觉SLAM中主要为相机图像信息的读取和预处理。如果在机器人中,还可能有码盘,惯性传感器等信息的读取和同步。

    2.视觉里程计

    视觉里程计的主要任务是估算相邻图像间相机运动以及局部地图的样子,最简单的是两张图像之间的运动关系。计算机是如何通过图像确定相机的运动的。在图像上,我们只能看到一个个的像素,知道他们是某些空间点在相机的成像平面投影的结果。所以必须先了解相机跟空间点的几何关系。

    Vo(又称为前端)能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,称它为里程计。被称为里程计是因为它只计算相邻时刻的运动,而和再往前的过去信息没有关联。相邻时刻运动串联起来,就构成了机器人的运动轨迹,从而解决了定位问题。另一方面,根据每一时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。

    3.后端优化

    后端优化主要是处理slam过程中噪声的问题。任何传感器都有噪声,所以除了要处理“如何从图像中估计出相机运动”,还要关心这个估计带有多大的噪声。

    前端给后端提供待优化的数据,以及这些数据的初始值,而后端负责整体的优化过程,它往往面对的只有数据,不必关系这些数据来自哪里。在视觉slam中,前端和计算接视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波和非线性优化算法。

    4.回环检测

    回环检测也可以称为闭环检测,是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。回环检测实质上是一种检测观测数据相似性的算法。对于视觉SLAM,多数系统采用目前较为成熟的词袋模型(Bag-of-Words, BoW)。词袋模型把图像中的视觉特征(SIFT, SURF等)聚类,然后建立词典,进而寻找每个图中含有哪些“单词”(word)。也有研究者使用传统模式识别的方法,把回环检测建构成一个分类问题,训练分类器进行分类。

    5.建图

    建图主要是根据估计的轨迹建立与任务要求对应的地图,在机器人学中,地图的表示主要有栅格地图、直接表征法、拓扑地图以及特征点地图这4种。而特征点地图是用有关的几何特征(如点、直线、面)表示环境,常见于视觉SLAM技术中。这种地图一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,多见于最早的SLAM算法中。

    视觉SLAM工作原理

    大多数视觉SLAM系统的工作方式是通过连续的相机帧,跟踪设置关键点,以三角算法定位其3D位置,同时使用此信息来逼近推测相机自己的姿态。简单来说,这些系统的目标是绘制与自身位置相关的环境地图。这个地图可以用于机器人系统在该环境中导航作用。与其他形式的SLAM技术不同,只需一个3D视觉摄像头,就可以做到这一点。

    通过跟踪摄像头视频帧中足够数量的关键点,可以快速了解传感器的方向和周围物理环境的结构。所有视觉SLAM系统都在不断的工作,以使重新投影误差(Reprojection Error)或投影点与实际点之间的差异最小化,通常是通过一种称为Bundle Adjustment(BA)的算法解决方案。vSLAM系统需要实时操作,这涉及到大量的运算,因此位置数据和映射数据经常分别进行Bundle Adjustment,但同时进行,便于在最终合并之前加快处理速度。

    视觉SLAM与激光SLAM有什么区别?

    在业内,视觉SLAM与激光SLAM谁更胜一筹,谁将成为未来主流趋势这一问题,成为大家关注的热点,不同的人也有不同的看法及见解,以下将从成本、应用场景、地图精度、易用性几个方面来进行详细阐述。

    1.成本

    从成本上来说,激光雷达普遍价格较高,但目前国内也有低成本的激光雷达解决方案,而VSLAM主要是通过摄像头来采集数据信息,跟激光雷达一对比,摄像头的成本显然要低很多。但激光雷达能更高精度的测出障碍点的角度和距离,方便定位导航。

    2.应用场景

    从应用场景来说,VSLAM的应用场景要丰富很多。VSLAM在室内外环境下均能开展工作,但是对光的依赖程度高,在暗处或者一些无纹理区域是无法进行工作的。而激光SLAM目前主要被应用在室内,用来进行地图构建和导航工作。

    3.地图精度

    激光SLAM在构建地图的时候,精度较高,思岚科技的RPLIDAR系列构建的地图精度可达到2cm左右;VSLAM,比如常见的,大家也用的非常多的深度摄像机Kinect,(测距范围在3-12m之间),地图构建精度约3cm;所以激光SLAM构建的地图精度一般来说比VSLAM高,且能直接用于定位导航。


    视觉SLAM的地图建立

    4.易用性

    激光SLAM和基于深度相机的视觉SLAM均是通过直接获取环境中的点云数据,根据生成的点云数据,测算哪里有障碍物以及障碍物的距离。但是基于单目、双目、鱼眼摄像机的视觉SLAM方案,则不能直接获得环境中的点云,而是形成灰色或彩色图像,需要通过不断移动自身的位置,通过提取、匹配特征点,利用三角测距的方法测算出障碍物的距离。

    总体来说,激光SLAM相对更为成熟,也是目前最为可靠的定位导航方案,而视觉SLAM仍是今后研究的一个主流方向,但未来,两者融合是必然趋势。(本文来源:SLAMTEC)

    下载1:OpenCV-Contrib扩展模块中文版教程

    在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

    下载2:Python视觉实战项目52讲

    在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

    下载3:OpenCV实战项目20讲

    在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

    交流群

    欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

    展开全文
  • 来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆本文总结于上交感知与导航研究所科研助理——刘国庆关于【视觉SLAM开源算法ORB-SLAM3 原理与代码解析】的公开课...

       来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆

    本文总结于上交感知与导航研究所科研助理——刘国庆关于【视觉SLAM开源算法ORB-SLAM3 原理与代码解析】的公开课。

    ORB-SLAM最早的版本在2014年的RSS上发布,在2016年作者又发布了ORB-SLAM2,接着在去年(2020年)发布了ORB-SLAM 3。ORB-SLAM1只能针对单目相机数据进行处理;ORB-SLAM 2 增加了对于双目和RGB-D相机的处理,在回环检测模块增加了Full Global BA的处理;ORB-SLAM 3则增加了对于IMU融合的支持,兼容鱼眼相机模型,并且增加了Altas多地图的支持;同时,回环检测为了支持多地图的模式,提供了一种叫Welding BA的优化方式。ORB -SLAM的作者将上述提到的各版本项目都开源了,为学术研究还是工程落地都提供了很好的参考。

    1

    首先来介绍一下ORB SLAM中涉及的一些基础概念。

    帧&关键帧:视觉SLAM都是对一个图像序列进行处理,每一张图像被称为帧,而关键帧则是通过一定筛选机制得到的、具有一定代表性的图像帧。

    地图点/路标点:将图像上被观察到的特征点通过三角化等方式进行深度恢复,我们就可以得到其对应的在三维空间的位置,同时包含帧的观测信息,这种点就被称为地图点或路标点。

    共视:当一个地图点被多帧观察到时,我们就可以称这几帧有基于该地图点的共视关系。

    共视图&本质图:我们可以把共视关系作用边表示,关键帧用节点表示,就可以建立共视图,而本质图在共视图基础上只保留具有较强共视关系的边。

    74427b5849c1dcce6629e6426b59b029.png

    Altas(地图集):ORB-SLAM 3提供了多地图的存储和拼接功能,在跟踪丢失后可以尝试将现有地图和历史地图进行匹配、融合,并更新当前的活跃地图(Active Map)

    数据关联:在语义SLAM中,第k帧检测到物体Obj1、Obj2,第k+1帧检测到物体Obj3、Obj4,确定Obj1和Obj3、Obj4中的哪一个是对真实世界中同一个物体的多次观测,这是数据关联的一个直观例子。在间接法(特征法)SLAM中,表现为不同帧中的特征,哪些是对应于同一个空间路标点/地图点的。在ORB3中考虑到的数据关联包括短期内滑动窗口中关键帧观测到的路标点和图像特征的数据关联;中期的数据关联是指图像特征与局部地图点的关联;长期的数据关联包括利用场景识别技术和词袋模型,在回环检测、重定位等过程中的数据关联;而多地图的数据关联还可以实现地图之间地图点的匹配和融合。

    ORB-SLAM 3的基本流程和此前的ORB版本没有显著的改变,只是也增加了部分新特性。基于词袋模型的关键帧数据和之前差不多,每一个关键帧均会被存入数据库用于回环检测。地图结构上进行了改进,ORB-SLAM3使用Altas地图集的结构,地图中包含一个Active Map和若干个Non-active Map,每个Map均包括地图点,关键帧,共视图,Spanning Tree等信息。跟踪线程添加了IMU的积分,并且和以前一样进行关键帧的判断和构造;在LocalMapping线程中中执行IMU的初始化,以及和之前相同的冗余关键帧和地图点剔除、新地图点的创建等工作;在回环检测部分主要添加了多地图的融合。

    97130f49c21bbf4419727c04da3ebe69.png

    ORB-SLAM 3框架

    总结一下,ORB-SLAM3的贡献包括:

    1、 提供了一个单双目VI-SLAM的系统;

    2、 改善召回率的场景识别技术;

    3、 多地图机制;

    4、 抽象的相机表示。

    2

    抽象相机模型介绍

    为什么ORB-SLAM3需要一个抽象的相机模型呢?

    相比于传统相机,鱼眼相机超过180度的广视角可以获取更多的信息,但是因为它不符合针孔模型数学建模的假设,导致uniform reprojection error的假设失效;如果对于图像直接进行裁剪,将会导致外围图像丢失,反而丧失了鱼眼相机大视角的优势。在ORB-SLAM3中,相机成像模型提供投影、反投影和相关的雅克比计算等函数,并且将此前系统中的EPNP更换为MAP-PNP, 从而实现了相机成像模型与SLAM部分的解耦,还可以扩展,能将相同的SLAM pipeline用于大部分类型的相机。

    此外,针对双目相机模型,ORB-SLAM3也提供了一定的改善。ORB-SLAM2假设我们针对双目相机预先进行了极线矫正,但是很多时候由于无法保证左右目相机光轴的绝对平行,极线纠正的效果也往往不好;而有些时候,我们需要使用两个参数不同的相机进行观测,而ORB-SLAM2无法兼容这类双目相机,如类似RGB-D相机中焦距、分辨率相差巨大的彩色相机+近红外相机,如果将彩色图像和近红外图像组成双目图像,ORB-SLAM2无法综合利用这对图像估计相机位姿。在ORB-SLAM3中将左右两目相机视作为具有固定位姿变换的两台单目相机使用,并且也不再限制两台相机必须具有足够面积的、重叠的共视区域,解决了这个问题。

    3

    VISLAM实现和IMU初始化

    ORB-SLAM3中VI-SLAM在ORB-SLAM-VI上进行了改进,包括:提供快速,准确的IMU初始化;支持单双目VI-SLAM;支持针孔/鱼眼相机模型。在视觉和IMU融合方面,ORB-SLAM3在位姿求解时所建立优化问题的残差项,包括所有关键帧和上一帧IMU估计的残差项,以及所有路标点观测的视觉误差项。其中针对视觉路标点的观测,为了避免错误匹配造成的极端值的影响,嵌套了鲁棒核函数。

    IMU初始化的目的是为了得到Body系速度、重力方向和IMU偏置。ORB-SLAM3中初始化流程的设计建立在作者的几点思考上:

    1、ORB-SLAM纯单目已经可以初始化得到精确的地图,尺度信息可以通过IMU得到;双目图像输入下则尺度客观,可以不考虑尺度信息的问题;

    2、如果将尺度单独作为优化变量进行表示和优化,效果比在BA中的隐式表达收敛更快;

    3、IMU初始化过程中必须考虑传感器的不确定性,否则会产生难以预测的巨大误差。

    接下来的讨论IMU初始化问题时,均指单目输入时的初始化。ORB3中IMU初始化的步骤包含三步,第一步是纯视觉最大后验估计(MAP),第二步是纯惯性MAP,第三步是视觉+惯性MAP。针对纯视觉MAP,我们提取初始化后2s内10帧图像进行纯视觉BA,从而得到没有尺度信息的相机位姿和路标点位置。接下来我们进行只有IMU参与的初始化,最终得到的优化结果是:帧位姿、速度和地图点,并都具有正确的尺度;Body系Z轴将被旋转到和重力方向一致;IMU的偏置被更新。第三步是视觉IMU联合后验估计,ORB-SLAM3只需要2秒就可以完成尺度的初始化,误差在5%左右,此外,ORB-SLAM3还将进行只包含尺度因子和重力方向的优化,10秒一次,用于避免传感器运动缓慢时IMU激励不够的情况。

    ORB-SLAM3中的跟踪和建图和ORB-SLAM-VI类似,在短期跟丢后,在满足一定条件时会尝试利用IMU积分得到的位姿信息进行重定位;当丢失持续一定时间后,将会重新初始化,创建新的Active map。

    4

    改进的回环检测与多地图融合

    这一部分的内容很大程度上和ORB-SLAM2是相同的,我们首先来回顾一下基本概念。

    准确率(PrecisionRate):检测到的回环中正确的比率。

    召回率(RecallRate):检测到的回环占总真实回环数的比率。

    在ORB-SLAM1/2中,仅通过DBoW词袋数据库就可实现50%~80%的准确率和召回率。在回环时,通过增加几何一致性和时间一致性检验,牺牲召回率来增加准确率。ORB-SLAM3改进了回环检测的速度,提高了召回率,并且增加了多地图的部分。

    寻找闭环帧的过程可以分为六步:

    1.针对每一个新关键帧,在数据库中查询到三个最相似的关键帧;

    2.尝试对新关键帧及其共视关键帧,和候选关键帧及其共视关键帧进行数据关联;

    3.利用匹配的特征点和地图点求解位姿转换;

    4.利用位姿变换的初始估计,进行点云重投影寻找新的匹配,并且进行位姿的优化求精

    5.对时间一致性的检验,此前的步骤相对复杂,在ORB-SLAM3中局部地图里面已有关键帧的共视信息进行判断;

    6.利用重力方向对于回环结果进行检查。

    回环检测后是进行回环还是地图合并,取决于当前关键帧检测到的回环关键帧是在当前的active map还是在其他map。当对non-active map和active map进行融合时,共视图和本质图同步更新,active map中的信息被追加到历史地图中,匹配到的non-active map变成新的map。

    5

    总结

    总体来说,ORB-SLAM3的流程和ORB-SLAM1/2非常相似,对于ORB-SLAM系列熟悉的同学应该很容易上手;相机模型的抽象处理,使得SLAM位姿求解过程和相机成像模型解耦,理论上支持绝大多数成像模型的相机;通过对于IMU的支持,ORB-SLAM系列加入了VI-SLAM的大家庭,也表明多传感器融合的SLAM是目前一大发展趋势;多地图的机制有利于跟丢后保留尽可能多的信息用于后续补救,也为后续实现多机器协同的SLAM提供了工作基础。

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

    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.相机模型与标定(单目+双目+鱼眼)

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

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

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

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

    2185a1feaa157d6e538197ef000757f2.png

    ▲长按加微信群或投稿

    ec4e96b22cf1418dd702660958b335ff.png

    ▲长按关注公众号

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

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

    e6b878ba954ed09f443f9a980ea37050.png

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

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

    展开全文
  • 视觉SLAM技术简述,一文了解视觉SLAM

    千次阅读 2020-05-14 18:02:43
    本文就视觉SLAM的定义、研究分类、模块、工作原理及应用方向等方面做一个视觉SLAM的技术简述。 视觉SLAM是什么? SLAM的英文全称是Simultaneous Localization and Mapping,中文称作「即时定位与地图创建」,而...

    如今科技发展日新月异,随着机器人、AR/VR等人工智能领域的不断发展,视觉SLAM也取得了惊人的发展。本文就视觉SLAM的定义、研究分类、模块、工作原理及应用方向等方面做一个视觉SLAM的技术简述。

     

    视觉SLAM是什么?

    SLAM的英文全称是Simultaneous Localization and Mapping,中文称作「即时定位与地图创建」,而视觉SLAM就是用摄像头来完成环境的感知工作。

    当一个自主移动的机器人处在一个未知的环境,它要通过摄像头获取的信息数据对自身以及周围环境进行一个预估,在机器人移动过程中根据位置估计和摄像头对感知的数据进行自身的定位,同时不断地建造和更新地图并且规划自身的路径。

     

    视觉SLAM研究分类

    视觉SLAM研究主要分为三大类:单目、双目、RGBD。

    单目SLAM只用一支摄像头就可以完成SLAM。最大的优点是传感器简单且成本低,但同时也有个大问题,就是不能通过单张图片得到深度信息(距离),存在尺寸不确定的现象,比如丢失深度信息的相片中,我们能见到“手捏太阳”“借位拍照”这样的现象。

    单目相机无法依靠一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,只能利用移动相机之后进行三角化,测量像素的距离。即是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。同时,相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦。

     

     

    双目SLAM利用左右目的视差计算像素的距离,从而实现自身的定位。立体视觉既可以在运动时估计深度,亦可在静止时估计,消除了单目视觉的无法得到深度信息的麻烦。目前市面常见的双目相机包括INDEMIND双目视觉惯性模组等。不过通过双目图像计算像素距离,计算量大,而且在特征少的白墙或暗光环境易丢失目标。

     

    RGBD相机是2010年左右新兴的一种相机,它最大的特点是可以通过红外结构光或Time-of-Flight原理,直接测出图像中各像素离相机的距离。因此,它比传统相机能够提供更丰富的信息,也不必像单目或双目那样费时费力地计算深度。目前常用的RGBD相机包括Kinect/Kinect V2等。不过,现在多数RGBD相机还存在测量范围窄、噪声大、视野小等诸多问题。出于量程的限制,主要用于室内SLAM。

     

    视觉SLAM框架解读

    一般的视觉SLAM系统分为五个模块:传感器数据、视觉里程计、后端、建图、回环检测。

     

    1.传感器数据

    在视觉SLAM中主要为相机图像信息的读取和预处理。如果在机器人中,还可能有码盘,惯性传感器等信息的读取和同步。

    2.视觉里程计

    视觉里程计(VO)也称前端。它根据相邻图像的信息,估计出粗略的相机运动,给后端提供较好的 初始值。VO 的实现方法,按是否需要提取特征,分为特征点法的前端以及不提特征的直 接法前端。基于特征点法的前端,长久以来(直到现在)被认为是视觉里程计的主流方法。 它运行稳定,对光照、动态物体不敏感,是目前比较成熟的解决方案。

    3.后端优化

    后端优化主要是处理slam过程中噪声的问题。任何传感器都有噪声,所以除了要处理“如何从图像中估计出相机运动”,还要关心这个估计带有多大的噪声。

    前端给后端提供待优化的数据,以及这些数据的初始值,而后端负责整体的优化过程,它往往面对的只有数据,不必关系这些数据来自哪里。在视觉slam中,前端和计算接视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波和非线性优化算法。

    4.回环检测

    回环检测也可以称为闭环检测,是指机器人识别曾到达场景的能力。回环检测提供了当前数据与所有历史数据的关联,在跟踪算法丢失之后,我们还可以利用回环检测进行重定位。因此,回环检测对整个SLAM系统精度与鲁棒性的提升,是非常明显的。

    5.建图

    建图主要是根据估计的轨迹建立与任务要求对应的地图,在机器人学中,地图的表示主要有栅格地图、直接表征法、拓扑地图以及特征点地图这4种。而特征点地图是用有关的几何特征(如点、直线、面)表示环境,常见于视觉SLAM技术中。


    视觉SLAM工作原理

    大多数视觉SLAM系统的工作方式是通过连续的相机帧,跟踪设置关键点,以三角算法定位其3D位置,同时使用此信息来逼近推测相机自己的姿态。简单来说,这些系统的目标是绘制与自身位置相关的环境地图。这个地图可以用于机器人系统在该环境中导航作用。与其他形式的SLAM技术不同,只需一个3D视觉摄像头,就可以做到这一点。

     

    通过跟踪摄像头视频帧中足够数量的关键点,可以快速了解传感器的方向和周围物理环境的结构。所有视觉SLAM系统都在不断的工作,以使重新投影误差(Reprojection Error)或投影点与实际点之间的差异最小化,通常是通过一种称为Bundle Adjustment(BA)的算法解决方案。VSLAM系统需要实时操作,这涉及到大量的运算,因此位置数据和映射数据经常分别进行Bundle Adjustment,但同时进行,便于在最终合并之前加快处理速度。

     

    目前,视觉SLAM主要被运用于无人机、无人驾驶、机器人、AR、智能家居等领域,同时涌现出了一大批视觉SLAM优秀的公司和产品。如百度的自动驾驶软件、仙途智能的智能环卫车、科沃斯的扫地机器人、INDEMIND的机器人视觉导航定位解决方案、穿戴计算解决方案等等。

     

    随着城市物联网和智能系统的完善,视觉SLAM的前景是非常广阔的。尤其是视觉SLAM得天独厚的语义地图优势,能很好地满足人与人工智能之间的交互,非常符合人工智能的发展趋势。

    虽然目前视觉SLAM技术方面还存在着一些问题,但这些都会随着消费刺激和产业链的发展逐步解决、趋于完善。

     

    参考文献

    《视觉SLAM十四讲》高翔

    展开全文
  • 视觉SLAM技术解读

    2021-06-04 00:51:05
    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自|新机器视觉近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大...
  • 视觉slam学习|基础篇01

    2022-07-14 10:39:55
    SLAM基础篇02最近在看高翔和张涛写的《视觉SLAM十四讲》,记录一下学习的内容,方便以后复习。这一系列文章更像是这本书的读书笔记,所以结构脉络都与该书相似;更推荐有时间的同学去看原书,写的更加详细易懂。欢迎...
  • 多种视觉SLAM方案对比

    千次阅读 2021-03-12 15:30:44
    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自 | 新机器视觉SLAM研究中,我们通常需要在各数据集上测试各个方案的性能情况。如下主要...
  • 视觉SLAM②--初识SLAM

    千次阅读 2022-04-27 11:29:16
    理解一个视觉SLAM框架由哪几个模块组成,各模块的任务是什么。 Ⅱ.搭建编程环境,为开发和实验做准备。 Ⅲ.理解如何在Linux下编译并运行一个程序,如果程序出了问题,又该如何调试它。 Ⅳ.掌握cmake的基本使用方法。
  • SLAM综述:激光雷达与视觉SLAM

    千次阅读 2021-06-30 20:52:51
    第三节讲述视觉SLAM:相机传感器,开源系统,视觉惯性里程计,深度学习的应用。 第四节讲述激光雷达与视觉的融合。 最后展望SLAM的发展前景。 第一节:概述 **SLAM:**同时定位和建图(Simultaneous Localization ...
  • 双目/RGBD因为可以计算得到深度,在建图方面相对具有优势,更容易建立“稠密”地图 3)SLAM定位实现中,基于单目的方案其计算量也要比基于双目/RGBD要大,且因为引入了三角测量部分,对于环境适应性较差 所以在选型...
  • 激光slam与视觉slam

    千次阅读 多人点赞 2020-05-09 20:46:23
    传感器感知*在视觉SLAM中主要为传感信息的读取和预处理。 前端里程计(Radar/Visual Odometry)。特征点匹配及运动估计。 后端优化(Optimization)。后端接受不同时刻里程计测量位姿,以及回环检测的信息,对估计轨迹及...
  • Visual and Visual-Inertial SLAM: State of the Art, Classification,and Experimental Benchmarkin...
  • slam算法假设的环境中的物体都是处于静态或者低运动状态的,然而,现实世界是复杂多变的,因此这种假设对于应用 环境有着严格的限制,同时影响视觉slam系统在实际场景中的应用性。当环境中存在动态物体时,会给系统...
  • 视觉SLAM--直接法

    千次阅读 2019-05-28 18:21:09
    直接法(摘抄于高翔博士的《视觉SLAM十四讲》) 8.4.1直接法的推导 如图8-3所示, 考虑某个空间点P和两个时刻的相机。P的世界坐标为[X,Y,Z],它在两个相机上成像,记非齐次像素坐标为,。我们的目标是求第一个...
  • 一.例子 如上图的小萝卜机器人,要使其具有自主运动能力至少需要两个条件: ...在视觉SLAM中主要是用相机去解决定位与建图问题。按照相机的工作方式,把相机分为单目(Monocular)、双目(Stereo)..
  • 视觉SLAM十四讲

    千次阅读 2022-01-25 11:11:58
    激光SLAM相对成熟,比如2005年出版的《概率机器人》中就介绍了很多关于激光SLAM的知识,在ROS里也能找到许多关于激光定位、激光建图的现成软件。 2、单目SLAM 在相机移动时,近处的物体移动快,远处的物体移动慢,...
  • 1 单目视觉SLAM分类方法 1.1 基于概率框架的单目视觉SLAM 1.2 基于非概率框架的单目视觉SLAM方法 SLAM最先由Smith Self 和 Cheeseman于1987年提出,被认为是实现移动机器人真正自主的关键。 视觉传感器信息量大...
  • SLAM总结(六)-视觉建图

    千次阅读 2021-04-20 09:13:40
    SLAM总结(六)-建图地图的保存和加载 地图的保存和加载
  • 视觉SLAM十四讲(2):初识SLAM

    千次阅读 2020-07-06 22:29:38
    这一讲主要介绍视觉SLAM的结构,并完成第一个SLAM程序:HelloSLAM。 目录 2.1 小萝卜的例子 单目相机 双目相机 深度相机 2.2 经典视觉SLAM框架 2.3 SLAM问题的数学表述 2.4 编程实践 Hello SLAM 使用...
  • 视觉SLAM入门十四讲

    千次阅读 2021-04-05 21:52:31
    视觉SLAM入门十四讲写在前面的话什么是视觉SLAM视觉SLAM中所使用的摄像头传感器单目摄像头双目摄像头深度摄像头 写在前面的话 考研期间迷上了SLAM,买来了高翔、张涛等著的《视觉SLAM十四讲——从理论到实践》,感悟...
  • SLAM如何定位与建图

    千次阅读 2019-10-29 22:51:52
    SLAM:同时定位和建图(Simultaneous Localization and Mapping)。 机器人从未知环境中的未知地点出发,在运动过程中通过重复观测到的地图特征(比如,墙角,柱子等)定位自身位置和姿态,再根据自身位置增量式的...
  • 近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前研究的一大热点,今天我们就来详细聊聊视觉SLAM的那些事儿。 视觉SLAM是什么? ...
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者丨paopaoslam来源丨泡泡机器人SLAM标题:DROID-SLAM: Deep Visual SLAM for Monocu...
  • 激光SLAM原理

    千次阅读 2019-09-23 15:13:31
    在机器人定位导航中,目前主要涉及到激光SLAM与视觉SLAM,激光SLAM在理论、技术和产品落地上都较为成熟,因而成为现下最为主流的定位导航方式,在家用扫地机器人及商用送餐机器人等服务机器人中普遍采用了...
  • 经典视觉SLAM框架 SLAM至今已历经三十多年的研究,这里给出经典视觉SLAM框架,这个框架本身及其包含的算法已经基本定型,并且已经在许多视觉程序库和机器人程序库中提供。 我们把整个视觉 SLAM 流程分为以下几步: 1...
  • 经典视觉SLAM框架

    千次阅读 2017-05-10 09:17:42
    (初识视觉SLAM)下面来看经典的视觉SLAM框架,了解一下视觉SLAM究竟由哪几个模块组成。 本文选自《视觉SLAM十四讲:从理论到实践》。  整体视觉SLAM流程图。  整个视觉SLAM流程包括以下步骤。 传感器信息读取...
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达标题:Avoiding Degeneracy for Monocular Visual SLAM with Point and Lin...
  • 视觉SLAM方案整理及硬件选型调研/视觉里程计算法综述

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,225
精华内容 1,290
关键字:

视觉slam定位原理