视觉slam的主要功能模块分析

wujianming-110117 wujianming-110117     2023-03-21     693

关键词:

视觉SLAM的主要功能模块分析

 

一.基本概念

SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。 SLAM最早由Smith、Self和Cheeseman于1988年提出。

SLAM过程可以描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。
(1)定位(localization):机器人必须知道自己在环境中位置。
(2)建图(mapping):机器人必须记录环境中特征的位置(如果知道自己的位置)
(3)SLAM:机器人在定位的同时建立环境地图。其基本原理是运用概率统计的方法,通过多特征匹配来达到定位和减少定位误差的。

二.Visual SLAM(视觉SLAM)

摄像机是唯一的外部传感器。它被称为视觉障碍。在过去的10年中,发表的文章反映了一种明显的趋势,即将视觉作为唯一的外部感官感知系统来解决SLAM问题(Paz等人。2008年;Davison等人。2007年;克莱恩和默里2007年;萨雷斯和埃斯科拉诺2006年;皮涅斯和塔尔多斯2008年)。这一趋势的主要原因是基于摄像机的系统能够获取距离信息,并能够检索环境的外观、颜色和纹理,从而使机器人能够集成其他高级任务,如检测和              对人和地方的认可。此外,相机更便宜、更轻、功耗更低。不幸的是,由于以下原因,数据中可能存在错误:相机分辨率不足、光线变化、缺少纹理的表面、快速移动造成的图像模糊等因素。

 三.视觉SLAM的框架

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

2.视觉里程计 (visual odometry,VO) 视觉里程计的任务是估算相邻图像间相机运动,以及局部地图的样子。vo又称为前端。

3.  后端优化(optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的轨迹和地图。由于在VO之后,又称为后端。

4. 回环检测(loop closing)。  回环检测判断机器人是否到达过去先前的位置,如果检测到回环,它会把信息提供给后端进行检测。

5. 建图(mapping)。它根据估计的轨迹,建立与任务要求对应的地图。

 四.Visual odometry视觉里程计

在机器人学和计算机视觉中,视觉里程计是通过分析相关的摄像机图像来确定机器人的位置和方向的过程。它已经被广泛应用于各种机器人领域,比如火星探测漫游者。

视觉里程计关心的是相邻图像之间的相机运动,最简单的当然是两张图像之间的运动关系。计算机是如何通过图像确定相机的运动的。在图像上,我们只能看到一个个的像素,知道他们是某些空间点在相机的成像平面投影的结果。所以必须先了解相机跟空间点的几何关系。vo能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,称它为里程计。称它为里程计是因为它只计算相邻时刻的运动,而和再往前的过去信息没有关联。

相邻时刻运动串联起来,就构成了机器人的运动轨迹,从而解决了定位问题。

另一方面,根据每一时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。

问题:累计漂移(accumulating drift)。

 五.后端优化

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

面对的主要问题:

如何从这些带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定行有多大——这称为最大后验概率估计(maximum-a-posteriori,MAP)。

这个的状态既包括机器人自身的运动,也包括地图。

对运动主体自身和周围环境空间不确定行的估计。

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

 六、Loop Detection 回环检测

回环检测,又称闭环检测(Loop closure detection),是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。
  回环检测目前多采用词袋模型(Bag-of-Word),研究计算机视觉的同学肯定不会陌生。它实质上是一个检测观测数据相似性的问题。在词袋模型中,我们提取每张图像中的特征,把它们的特征向量(descriptor)进行聚类,建立类别数据库。比如说,眼睛、鼻子、耳朵、嘴等等(实际当中没那么高级,基本上是一些边缘和角)。假设有10000个类吧。然后,对于每一个图像,可以分析它含有数据库中哪几个类。以1表示有,以0表示没有。那么,这个图像就可用10000维的一个向量来表达。而不同的图像,只要比较它们的向量即可。
  回环检测也可以建成一个模型识别问题,所以你也可以使用各种机器学习的方法来做,比如什么决策树/SVM,也可以试试Deep Learning。不过实际当中要求实时检测,没有那么多时间让你训练分类器。所以SLAM更侧重在线的学习方法。

七.Mapping 建图
地图的组织构建主要有以下几种:
路标地图:
  地图由一堆路标点组成,EKF中的地图就是这样的。但是,这种地图对展示很不友好。
度量地图:
  通常指2D/3D的网格地图,也就是大家经常见的那种黑白的/点云式地图。点云地图比较酷炫,很有种高科技的感觉。它的优点是精度比较高,比如2D地图可以用0-1表示某个点是否可通过,对导航很有用。缺点是相当吃存储空间,特别是3D,把所有空间点都存起来了,然而大多数角角落落里的点除了好看之外都没什么意义。
拓扑地图:
  拓扑地图是比度量地图更紧凑的一种地图。它将地图抽象为图论中的”点”和”边”,使之更符合人类的思维。比如说我要去五道口,不知道路,去问别人。那人肯定不会说,你先往前走621米,向左拐94.2度,再走1035米……(这是疯子吧)。正常人肯定会说,往前走到第二个十字路口,左拐,走到下一个红绿灯,等等。这就是拓扑地图。
混合地图。
  综合各种地图的优点。

1 基于状态空间描述的一类算法,如扩展卡尔曼滤波(Extended Kalman Filter,EKF )、压缩扩展卡尔曼滤波(Compressed Extended Kalman Filter, CEKF )等。

2 基于样本集描述的一类算法,如Rao-Blackwellized  粒子滤波 SLAM,快速SLAM(FastSLAM)、DP-SLAM等。

3 基于信息空间描述的一类算法,如扩展信息滤波(Extended Information Filter, EIF)、稀疏连接-树滤波(Thin Junction-Tree Filter, TJTF)等。

4 基于差异描述的一类算法,如扫描匹配(Scan Matching)。

 

激光slam与视觉slam的区别

...方式也有所不同,按传感器来分,SLAM主要包括激光SLAM和视觉SLAM两大类。其中,激光SLAM比视觉SLAM起步早,在理论、技术和产品落地上都相对成熟。基于视觉的SLAM方案目前主要有两种实现路径,一种是基于RGBD的深度摄像机,比... 查看详情

初识视觉slam:用相机解决定位和建图问题

引言:视觉SLAM是指用相机解决定位和建图问题。本文以一个小机器人为例形象地介绍了视觉SLAM的功能及特点。本文选自《视觉SLAM十四讲:从理论到实践》。  SLAM是SimultaneousLocalizationandMapping的缩写,中文译作“同时定位与地... 查看详情

初识视觉slam:用相机解决定位和建图问题

引言:视觉SLAM是指用相机解决定位和建图问题。本文以一个小机器人为例形象地介绍了视觉SLAM的功能及特点。本文选自《视觉SLAM十四讲:从理论到实践》。  SLAM是SimultaneousLocalizationandMapping的缩写,中文译作“同时定位与地... 查看详情

cv学习资料《卷积神经网络与视觉计算》+《深度学习实践计算机视觉》+《视觉slam十四讲从理论到实践》电子资料代码分析

视觉和图形学真是一家,基础都一样! 如果学习图像识别,计算机视觉,推荐电子书《视觉SLAM十四讲:从理论到实践》,系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三... 查看详情

经典视觉slam框架

...过前面的推送我们已经对SLAM有了个大体的认识。(初识视觉SLAM)下面来看经典的视觉SLAM框架,了解一下视觉SLAM究竟由哪几个模块组成。本文选自《视觉SLAM十四讲:从理论到实践》。  整体视觉SLAM流程图。        ... 查看详情

视觉slam十四讲笔记--第二讲

...mentedreality增强现实)切入,讲了SLAM的重要性以及视觉SLAM可以带来的好处,然后以此展开总体的概括了SLAM的发展情况,也分析和介绍了各不同SLAM的性能区别,对各个特性进行了对比和分析,最后总体讲了... 查看详情

视觉slam十四讲笔记--第二讲

...mentedreality增强现实)切入,讲了SLAM的重要性以及视觉SLAM可以带来的好处,然后以此展开总体的概括了SLAM的发展情况,也分析和介绍了各不同SLAM的性能区别,对各个特性进行了对比和分析,最后总体讲了... 查看详情

视觉slam十四讲开源库安装教程

...n线性代数库的安装2、Sophus李代数库的安装3、OpenCV计算机视觉库的安装4、PCL点云库的安装 5、Ceres非线性优化库的安装6、G2O图优化库的安装7、Octomap八叉树地图库的安装8、DBoW3词袋模型库 正文回到顶部前言  本篇博客... 查看详情

激光slam技术总结激光slam对比视觉v-slam

目录 1.SLAM2.激光SLAM3.视觉SLAM地图构建4.激光SLAM VSV-SLAM5.小结1.SLAMSLAM(同步定位与地图构建),是指运动物体根据传感器的信息,一边计算自身位置,一边构建环境地图的过程,解决机器人等在未知环境下... 查看详情

视觉slam算法框架解析ptam

...经博主允许不得转载。   本系列文章旨在总结主流视觉SLAM算法的框架,对比各个算法在子模块的差异,最终提炼出融合各个算法优点的架构。   PTAM[1]是视觉SLAM领域里程碑式的项目。在此之前,MonoSLAM[2]为代表的基... 查看详情

机器人视觉导航工作总结

...传感器密切相关。目前实现SLAM的传感器大体分为激光和视觉 查看详情

orb描述子提取

ORBSLAM2中使用ORB描述子的方法   经典的视觉SLAM系统大体分为两种:其一是基于特征点法的,其二是基于直接法的。那么本文主要就讲特征点法的SLAM。  基于特征点法的视觉SLAM系统典型的有PTAM,ORBSLAM等。本文主要围绕OR... 查看详情

经典文献阅读之--multi-modalsemanticslam(多模态语义slam)

...要是面向静态场景。目前相较于点云的分类与分割而言。视觉的识别与分割会更加容易。这就可以根据语义信息提高对环境的理解。文章《​​Multi-modalSemanticSLAMforComplexDynamicEnvironments​​​》提出了一个鲁棒的多模态语义框架... 查看详情

视觉slam学习笔记以及课后习题《第一讲初识slam》

前言这篇博客主要记录了我在深蓝学院视觉slam课程中的课后习题,因为是为了统计知识点来方便自己以后查阅,所以有部分知识可能不太严谨,如果给大家造成了困扰请见谅,大家发现了问题也可以私信或者评论... 查看详情

视觉slam算法框架解析svo

...nbsp;   SVO(Semi-directVisualOdometry)[1]顾名思义是一套视觉里程计(VO)算法。相比于ORB-SLAM,它省去了回环检测和重定位的功能,不追求建立、维护一个全局地图,更看重tracking的效果,追求高计算速度、低CPU占用率,所以SVO... 查看详情

入门实战《深度学习技术图像处理入门》+《视觉slam十四讲从理论到实践》

...,数据类型转换函数,实施CAM可视化,这是我最需要的。视觉和图形学真是一家,基础都一样!正在看《视觉SLAM十四讲》电子书,代码很清晰!ParticleFiltering,KF,EKF,BatchOptimization,LieGroup,ICP。IMU-SLAM和SemanticSLAM是AR的未来。VO关心... 查看详情

基于orb-slam2的图片识别

...ORB-SLAM2中的BoW算法,同样使用DBoW2库和ORB特征以及词汇树视觉词典。其主要流程可以概括为:运行ORB-SLAM2,加载ORB词典,然后读取训练图像进行BoW训练,完成之后就是SLAM的过程了,使用Pangoli 查看详情

视觉slam学习:初识slam,三维空间刚体运动代码实战,eigen库的使用(代码片段)

前言经过摄像头获取的信息进行定位和建图的方法叫做视觉slam,相机分为单目(无法获得距离,要通过运动,但是具有尺寸不确定性),双目(需要的计算资源特别大),深度(受环境影响... 查看详情