SLAM入门

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

一、传感器

1.激光雷达:

激光传感器可以直接获得相对于环境的直接距离信息,从而实现直接相对定位,对于激光传感器的绝对定位及轨迹优化可以在相对定位的基础上进行。

  1. 精度很高,也比较稳定。
  2. 速度快,计算量也不大,容易做成实时SLAM。
  3. 理论研究成熟。激光雷达用于SLAM的技术方案(EKF-SLAM)因为研究较早,现在已经非常成熟。当然人们也对EKF-SLAM的缺点也有较清楚的认识,例如不易表示回环、线性化误差严重、必须维护路标点的协方差矩阵等。
  4. 笨重。
  5. 价格昂贵。激光雷达成本很高,因此激光的研究主要集中于如何降低传感器的成本上,现在激光雷达也有平价的产品了,现在高级的扫地机器人中就已经在使用激光雷达了,但性能配置会低一些。

2.视觉传感器

视觉传感器很难直接获得相对于环境的直接距离信息,而必须通过两帧或多帧图像来估计自身的位姿变化,再通过累积位姿变化计算当前位置。

  1. 价格便宜。
  2. 体积小,重量轻。
  3. 可以获取丰富且直观的信息。有研究表明,视觉信息占了人类获取信息的80%以上,所以通过摄像头可以获取的信息要远远超过通过激光雷达获得的信息。
  4. 计算量大。往往信息量和计算量是成正比的,视觉SLAM中的特征点检测、匹配等过程非常耗时。不过随着CPU、GPU处理器速度的飞速发展,很多以前被认为无法实时化的视觉算法,得以近乎实时化地运行。
  5. 需要一定的假设条件。比如视觉算法无法在无纹理区域进行。

视觉SLAM传感器主要分为三大类:单目、双目(或多目)、RGBD。此外还有鱼眼、全景等特殊相机,由于在研究和产品中都属于少数在此不做介绍。
单目相机:MonoSLAM,即只用一个摄像头实现SLAM。

  1. 单目SLAM只能估计一个相对深度。由于绝对深度未知,单目SLAM没法得到机器人运动轨迹以及地图的真实大小。直观地说,如果把轨迹和房间同时放大两倍,单目看到的像是一样的。
  2. 单目相机必须通过运动才能获取深度。它无法仅根据一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。也就是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。
  3. 相机必须进行旋转和平移。相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦,好在日常使用SLAM时,相机都会发生旋转和平移。
  4. 既可以用于室内,又可以用于室外

双目相机:双目立体视觉既可以在运动时估计深度,也可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也受双目的基线与分辨率限制。此外,通过双目图像计算深度计算量也非常大。
RGBD相机:可以获得彩色图并测量深度

  1. 一般通过结构光或Time-of-Flight原理,直接测出物体离摄像头的距离。相对于双目立体视觉,它的速度非常快,可以用于实时应用。
  2. 它比单目或双目相机能够提供更丰富的信息。
  3. 现在多数RGBD相机还存在视场角小、分辨率低等诸多问题。主要用于室内SLAM

二、技术架构

主要包括传感器数据预处理前端后端回环检测建图
在这里插入图片描述
模块:

  1. 传感器数据预处理
    传感器包括摄像头、惯性测量单元(Inertial measurement unit,简称IMU)等,涉及传感器选型、标定、多传感器数据同步等技术。
    在这里插入图片描述

  2. 前端 又称视觉里程计(visual odometry)
    主要是研究如何根据相邻帧图像定量估算帧间相机的运动。
    典型做法一般是:首先提取extract每帧图像特征点key-points和描述子descriptors(描述该点周围信息,区别每个特征点),对相邻帧进行特征点粗匹配,然后利用RANSAC(随机抽样一致)算法去除不合理的匹配对,然后得到位置和姿态信息。整个过程涉及到特征提取特征匹配、对极几何、PnP、刚体运动、李代数等多视图几何知识。
    前面说视觉里程计只计算相邻帧的运动,进行局部估计,这会不可避免的出现累积漂移,这是因为每次估计两个图像间的运动时都有一定的误差,经过相邻帧多次传递,前面的误差会逐渐累积,轨迹漂移(drift)的越来越厉害。解决轨迹漂移的方法有两个:后端优化、回环检测。
    问题:
    提取和匹配特征点不一定保证成功
    运动太快轨迹会丢失
    自身运动的解可能不存在或并不是局部最优

  3. 后端Backend优化optimization:
    主要是对前端的结果进行优化,得到最优的位姿估计。主要有两种方法:
    一种是基于滤波理论的优化,主要有 EKF, PF, RBPF, UKF等方法,其中EKF(扩展卡尔曼滤波)在早期是主流的方法。它的思路是将状态估计模型线性化,并用高斯分布近似其噪声,然后按照卡尔曼滤波进行预测来更新。但是实际上,这种对噪声的高斯分布大部分情况下是不成立的,此外,线性化过程中丢失了高阶项。
    另一种就是非线性优化(图优化)。它的基本思想是将优化的变量作为图的节点,误差项作为图的边,在给定初值后,就可以迭代优化更新。由于图优化的稀疏性,可以在保证精度的同时,降低计算量。

  4. 回环检测loop closure detection
    主要目的是让机器人能够认识自己曾经去过的地方,从而解决位置随时间漂移的问题。视觉回环检测一般通过判断图像之间的相似性完成,这和我们人类用眼睛来判断两个相同的地点是一样的道理。因为图像信息丰富,因此VSLAM在回环检测中具有很大的优势。
    当回环检测成功后,就会建立现在的图像和过去曾经见过图像的对应关系,后端优化算法可以根据这些信息来重新调整轨迹和地图,从而最大限度地消除累积误差。

  5. 建图Mapping

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值