zoukankan      html  css  js  c++  java
  • 视觉SLAM十四讲(第二版)第十二讲笔记

    第十二章 建图

    建图(Mapping)是slam的两大目标之一。上述讨论的都是定位,讨论了特征值点的定位,直接法的定位,以及后端优化。在经典的slam模型中,所谓的地图,即所有路标点的集合。一旦确定了路标点的位置,可以说明完成了建图。只是如此,那么视觉里程计,Bundle Adjustment算完成了任务,还额外的进行了优化。

    但建图的需求不同,SLAM作为一种底层技术,往往是用来为上层应用提供信息。例如扫地机器人需要完成扫地工作,希望计算一条能够覆盖整张地图的路径。或者,如果上层是一个增强现实设备,那么开发者可能将虚拟物体叠加在现实物体之中。在视觉slam看来,“建图”是服务与“定位”的; 但在应用层看来,“建图”明显还带来许多其他需求:

    定位:定位是基本功能不用多说。视觉里程计讨论如何利用局部地图来实现定位。在回环检测部分,只要有全局的描述子信息,就能通过回环检测确定机器人的位置。

    导航:在地图中进行路径规划,在任意两个地图间寻找路径,然后控制自己运动到目标点的过程。该过程中至少知道地图中哪些地方不可通过,而哪些地方是可以通过。这属于稀疏特征点地图的能力范围,至少得是一种稠密的地图。

    避障:避障也是机器人经常碰到的一个问题,不过它更注重局部的,动态的导航物的处理。同样,仅有特征点,无法判断某个特征点是否为障碍物,所以需要稠密地图。

    重建:稠密地图,利用slam获得周围环境的重建效果,并把它展示给其他人看。例如:三维的视频通话或者网上购物等。也可以构建带纹理的平面,就像电子游戏中的三维场景那样。

    交互:主要指人与地图之间的互动。例如:科幻电影里面是真的,在增强现实中,我们会在房间里放置虚拟的物体,并与这些虚拟物体之间有一些互动——比如点击虚拟网页浏览器来观看视频,或者向墙面投掷物体。

     

    1. 单目稠密重建

    a. 稠密重建解决方案:

    .使用单目相机,通过移动相机之后进行三角化测量像素的距离。

    .使用双目相机,利用左右目的视差计算像素的距离(多目原理相同)。

    .使用RGB-D相机直接获得像素距离。

    但单目和双目对深度的获取往往是“费力不讨好”——花大量的计算,最后得到一些不怎么可靠的深度估计。当然,RGB-D也有一些量程,应用范围和光照的限制。

    b. 深度滤波器技术:深度估计能随测量的增加从一个非常不确定的量,逐渐收敛到一个稳定值。

     

    2. 极线搜索与块匹配

     

    第十二章 建图

    建图(Mapping)是slam的两大目标之一。上述讨论的都是定位,讨论了特征值点的定位,直接法的定位,以及后端优化。在经典的slam模型中,所谓的地图,即所有路标点的集合。一旦确定了路标点的位置,可以说明完成了建图。只是如此,那么视觉里程计,Bundle Adjustment算完成了任务,还额外的进行了优化。

    但建图的需求不同,SLAM作为一种底层技术,往往是用来为上层应用提供信息。例如扫地机器人需要完成扫地工作,希望计算一条能够覆盖整张地图的路径。或者,如果上层是一个增强现实设备,那么开发者可能将虚拟物体叠加在现实物体之中。在视觉slam看来,“建图”是服务与“定位”的; 但在应用层看来,“建图”明显还带来许多其他需求:

    定位:定位是基本功能不用多说。视觉里程计讨论如何利用局部地图来实现定位。在回环检测部分,只要有全局的描述子信息,就能通过回环检测确定机器人的位置。

    导航:在地图中进行路径规划,在任意两个地图间寻找路径,然后控制自己运动到目标点的过程。该过程中至少知道地图中哪些地方不可通过,而哪些地方是可以通过。这属于稀疏特征点地图的能力范围,至少得是一种稠密的地图。

    避障:避障也是机器人经常碰到的一个问题,不过它更注重局部的,动态的导航物的处理。同样,仅有特征点,无法判断某个特征点是否为障碍物,所以需要稠密地图。

    重建:稠密地图,利用slam获得周围环境的重建效果,并把它展示给其他人看。例如:三维的视频通话或者网上购物等。也可以构建带纹理的平面,就像电子游戏中的三维场景那样。

    交互:主要指人与地图之间的互动。例如:科幻电影里面是真的,在增强现实中,我们会在房间里放置虚拟的物体,并与这些虚拟物体之间有一些互动——比如点击虚拟网页浏览器来观看视频,或者向墙面投掷物体。

     

    1. 单目稠密重建

    a. 稠密重建解决方案:

    .使用单目相机,通过移动相机之后进行三角化测量像素的距离。

    .使用双目相机,利用左右目的视差计算像素的距离(多目原理相同)。

    .使用RGB-D相机直接获得像素距离。

    但单目和双目对深度的获取往往是“费力不讨好”——花大量的计算,最后得到一些不怎么可靠的深度估计。当然,RGB-D也有一些量程,应用范围和光照的限制。

    b. 深度滤波器技术:深度估计能随测量的增加从一个非常不确定的量,逐渐收敛到一个稳定值。

     

    2. 极线搜索与块匹配

     

    上方的图主要是描述极线搜索。沿着第一幅图像中的极线的某头走到另一头,逐个比较每个像素与p1的相似程度。类似直接法中的回环检测,然而单个像素的亮度没有区分性,那就比较像素块,在p1周围取一个大小为w*w的小块,然后极线上也取很多同样大小的小块进行比较,就可以一定程度上提高区分性。取名块匹配。

    a. 目前计算小块与小块间的差异有

    SAD(Sum of Absolute Difference)。取2个小块的差的绝对值之和.

    SSD(Sum of Squared Distance)。取2小块的差的平方和。

    NCC(Normalized Cross Correlation)。归一化相关,计算的是两个小块的相关性。

     

    3. 并行化:效率的问题

    在进行极线搜索时,上一个像素计算与下一个像素没必然联系。那么就可以用多个线程,分别计算每个像素,然后将结果统一起来。

     

    4. RGB-D稠密建图

    RGB-D相机完全通过传感器中硬件测量得到,无须消耗大量的计算资源来估计。而且,RGB-D的结构光或飞时原理,保证了深度数据对纹理的无关性。故RGB-D进行稠密建图是相对

    a. 建图方式

    稠密建图主流方式。其中最直观,最简单的方法。根据估算的相机位姿,将RGB-D数据转化为点云(Point CLoud),然后进行拼接,最后得到一个由离散的点组成的点云地图(Point Cloud Map)。

    b.八叉树地图

    点云有几个明显的缺陷。一是通常规模很大,但许多时候,它的“大”并非必须,许多不必要的细节都加进来了。二是点云地图无法处理运动的物体,点云中只有“添加点”而没有“当点消失时把它移除”的做法。实际环境中将变得不够实用。

    c. *TSDF地图和Fusion系列

    与slam相似但又有稍许不同的研究方向:实时三维重建。前面地图模型中,以定位为主体,地图的拼接是作为后续加工步骤放在slam框架中的。

    三维重建把重建准确地图作为主要目标,所以基本都需要利用GPU加速,通常需要较重的计算设备。与之相反,SLAM向轻量级,小型化方向发展,有些甚至放弃了建图和回环检测部分,只保留视觉里程计。

    TSDF(截断符号距离函数),一种网格式地图,这个存储在显存而不是内存中,利用GPU的并行特性,可以并行地对每个体素进行计算和更新。

    上方的图主要是描述极线搜索。沿着第一幅图像中的极线的某头走到另一头,逐个比较每个像素与p1的相似程度。类似直接法中的回环检测,然而单个像素的亮度没有区分性,那就比较像素块,在p1周围取一个大小为w*w的小块,然后极线上也取很多同样大小的小块进行比较,就可以一定程度上提高区分性。取名块匹配。

    a. 目前计算小块与小块间的差异有

    SAD(Sum of Absolute Difference)。取2个小块的差的绝对值之和.

    SSD(Sum of Squared Distance)。取2小块的差的平方和。

    NCC(Normalized Cross Correlation)。归一化相关,计算的是两个小块的相关性。

     

    3. 并行化:效率的问题

    在进行极线搜索时,上一个像素计算与下一个像素没必然联系。那么就可以用多个线程,分别计算每个像素,然后将结果统一起来。

     

    4. RGB-D稠密建图

    RGB-D相机完全通过传感器中硬件测量得到,无须消耗大量的计算资源来估计。而且,RGB-D的结构光或飞时原理,保证了深度数据对纹理的无关性。故RGB-D进行稠密建图是相对

    a. 建图方式

    稠密建图主流方式。其中最直观,最简单的方法。根据估算的相机位姿,将RGB-D数据转化为点云(Point CLoud),然后进行拼接,最后得到一个由离散的点组成的点云地图(Point Cloud Map)。

    b.八叉树地图

    点云有几个明显的缺陷。一是通常规模很大,但许多时候,它的“大”并非必须,许多不必要的细节都加进来了。二是点云地图无法处理运动的物体,点云中只有“添加点”而没有“当点消失时把它移除”的做法。实际环境中将变得不够实用。

    c. *TSDF地图和Fusion系列

    与slam相似但又有稍许不同的研究方向:实时三维重建。前面地图模型中,以定位为主体,地图的拼接是作为后续加工步骤放在slam框架中的。

    三维重建把重建准确地图作为主要目标,所以基本都需要利用GPU加速,通常需要较重的计算设备。与之相反,SLAM向轻量级,小型化方向发展,有些甚至放弃了建图和回环检测部分,只保留视觉里程计。

    TSDF(截断符号距离函数),一种网格式地图,这个存储在显存而不是内存中,利用GPU的并行特性,可以并行地对每个体素进行计算和更新。

    人家都说我们路很长,但是一段路一晃一晃很快就过去了 ——易建联
  • 相关阅读:
    CentOS/Ubuntu安装最新的gcc-9
    CentOS 7 源码安装 CMake 3.16.2 最新稳定版。解决 cmake: command not found 问题
    堆排序
    linux可重入、异步信号安全和线程安全
    目录
    教程文档
    推荐文章
    学习文档
    开发工具-索引
    同步/异步/阻塞/非阻塞
  • 原文地址:https://www.cnblogs.com/Lei-HongweiNO11/p/11615867.html
Copyright © 2011-2022 走看看