视觉SLAM的主要功能模块分析
视觉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十四讲》
0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...
- YOLOV4各个创新功能模块技术分析(三)
YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards text ...
- YOLOV4各个创新功能模块技术分析(一)
YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...
- 从业务流程角度:分析TMS系统各个功能模块
TMS的主要功能是协调承运商.运营商.货主三种角色人员分工合作共同完成运输任务,并实现对运输任务的跟踪管理.本文将按照业务流程顺序对TMS系统各个功能模块进行分析说明. 一.业务描述 新零售的兴起及& ...
- YOLOV4各个创新功能模块技术分析(二)
YOLOV4各个创新功能模块技术分析(二) 四.数据增强相关-GridMask Data Augmentation 论文名称:GridMask Data Augmentation 论文地址:https ...
- (转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍
首页 视界智尚 算法技术 每日技术 来打我呀 注册 SLAM系统的研究点介绍 本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...
- 视觉SLAM技术应用
视觉SLAM技术应用 SLAM技术背景 SLAM技术全称Simultaneous localization and mapping,中文为"同时定位与地图构建".SLAM可以在未知 ...
随机推荐
- 08- adb常用命令以及模拟器链接adb命令
adb 命令简介 ADB即 Android debug bridge.是Android下面一个通用的调试工具. 熟练使用adb命令会大大增加开发效率,作为测试人员,熟练掌握adb,我们可以管理设备或手 ...
- 脚本加载后执行JS回调函数的方法
动态脚本简单示例 // IE下: var HEAD = document.getElementsByTagName('head')[0] || document.documentElement var ...
- ubuntu 1804 配置阿里源
以防出错,先备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑元列表文件sudo vim /etc/apt/sources.list ...
- 获取中断描述符表IDT的信息
<pre name="code" class="cpp">//GetIDT.h文件 #ifndef _WIN32_WINNT // Allow us ...
- 缓冲区溢出分析第07课:MS06-040漏洞研究——静态分析
前言 我在之前的课程中讨论过W32Dasm这款软件中的漏洞分析与利用的方法,由于使用该软件的人群毕竟是小众群体,因此该漏洞的危害相对来说还是比较小的.但是如果漏洞出现在Windows系统中,那么情况就 ...
- 一个或多个筛选器或者Listeners启动失败
问题描述 运行ssm项目,tomcat启动后报下面的错误. org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启 ...
- 基于queue的python多进程日志管理
在我们的异常检测应用中,需要对每组IoT设备分别训练一个模型,每个模型对一组设备的指标数据进行实时异常检测.方案采用master-worker+消息队列的方式实现模型对外服务,但是每个worker的日 ...
- 并发容器-CopyOnWriteArrayList
并发容器一览 图源:https://time.geekbang.org/column/article/90201?utm_term=pc_interstitial_938 CopyOnWriteArr ...
- Masm32sdk安装指南
上一年学习win32汇编时用的masm32sdk不是最新版本的.因为最近准备继续学习win32汇编,所以准备安装最新的masm32sdk软件包.其中遇到了一些问题,从网上找了2个小时才搞定(宝宝心里苦 ...
- Scrum Meeting 3
Basic Info where:三号教学楼 when:2020/4/27 target: 简要汇报一下已完成任务,下一步计划与遇到的问题 Progress Team Member Position ...