IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> RGBD-SLAM总结 -> 正文阅读

[人工智能]RGBD-SLAM总结

一、SLAM技术回顾

SLAM,即时定位与制图,包含3个关键词:实时、定位、制图,就是实时完成定位和制图的任务,这就是SLAM要解决的基本任务。

按照使用的传感器分为激光SLAM(LOAM、V-LOAM、cartographer)与视觉SLAM,视觉SLAM,视觉SLAM的主要分支如下图所示:

二、不同种类的RGB-D相机的原理及性能对比

2.1 RGB-D相机的分类

1)RGB双目

? ? RGB双目指的是目前大家都在热点研究的,仅依靠双相机的视差获取深度信息的方式。RGB双目相机因为非常依赖纯图像特征匹配,所以在光照较暗或者过度曝光的情况下效果都非常差,另外如果被测场景本身缺乏纹理,也很难进行特征提取和匹配。

基本原理:通过左右两个摄像头获取图像信息,计算视差

关于视差,类似人的双眼,你单独睁开左、右眼,与同时睁开双眼观看物体的位置、远近不同

双目相机不主动对外发射光源,因此称为被动深度相机,目前多应用在科研领域

?双目立体视觉原理:

双目立体视觉的数学原理_沈子恒的博客-CSDN博客_立体视觉原理

2)结构光

? ? ?基本原理:主要硬件有投射仪、相机,通过投射仪主动发射(因此称为主动测量)肉眼不可见IR红外光到被测物体表面,然后通过一个或多个相机拍摄被测物体采集结构光图像,将数据发送到计算单元,通过三角测量原理计算获取位置和深度信息。

结构光顾名思义就是将光结构化,有多种投影图案方式,如正弦条纹的相移法、二进制编码的格雷码、相移法+格雷码等? ?

? ? ????

3)TOF

? ? TOF是Time of flight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器是逐点扫描,而TOF相机则是同时得到整幅图像的深度信息。

2.2 不同技术深度相机的性能对比

目前的主流摄像头在检测范围、检测精度和检测角度等都相差不大,主要区别在于:
1、结构光方案优势在于技术成熟,深度图像分辨率可以做得比较高,但容易受光照影响,室外环境基本不能使用;
2、TOF方案抗干扰性能好,视角更宽,不足是深度图像分辨率较低,做一些简单避障和视觉导航可以用,不适合高精度场合。受环境影响小,传感器芯片并不成熟,成本很高,实现量产困难。
3、双目方案,成本相对前面两种方案最低,但是深度信息依赖纯软件算法得出,此算法复杂度高,难度很大,处理芯片需要很高的计算性能,同时它也继承了普通RGB摄像头的缺点:在昏暗环境下以及特征不明显的情况下并不适用。

三、 SLAM模块技术拆解

3.1 前端

??

前端就是根据几何和光度一致性约束估计像机的运动

1)常用的特征提取方法

ICP:对于RGBD-SLAM来说,我们可以直接使用ICP算法估计相机运动,但是几何特征缺失时,ICP法会失败;

特征点法:优点是一般场景都能提供丰富的特征点,场景适应性较好,能够利用特征点进行重定位。缺点是特征点计算法耗时;特征点利用到的信息太少,丢失了图像中的大部分信息;对于弱纹理区域,特征点法将失去效用;特征点匹配容易产生误匹配,对结果产生很大影响。

光流法:优点是不需要计算特征描述子,耗时短,不会产生误匹配的情况,比较稳健。缺点是它所基于的灰度不变假设是强假设,在实际环境中不成立,得到的结果不一定可靠;要求像机运动速度不能太快,不能自动曝光。

直接法:优点是不需要计算特征点和描述子,可以得到稠密或半稠密的地图;在特征缺失时也可正常使用。缺点是与光流法一样,灰度不变假设在实际环境中不成立,得到的结果不一定可靠;要求像机运动速度不能太快,不能自动曝光。

?特征线面:优点是特征层次比点要高,不容易产生误匹配的情况。缺点是线面这样高层次的特征在场景中的数量较少。

2)计算相机的运动

? ? ?提取相机的特征点同时特征描述进行匹配后,得到了两张图像上的匹配结果,接下来要做的事情就是如何根据匹配点,计算相机的运动。

? ? 我们的目标是求解相机的运动计算,也就是求解相机的R 和t,这是SLAM的最基本问题之一,常用的有三种方法如下,分别是对极几何、ICP、PnP,对应的是2d2d、2d3d和3d3d三种求解方法。如下图所示:

? ? ??前端需要考虑的问题:匹配策略(两两帧匹配、多帧联合匹配、当前帧与局部特征地图匹配)、缺少深度信息的特征点如何处理(2D-2D/2D-3D/3D-2D/3D-3D混合使用)、如何加速特征匹配(FLANN等)、如何让特征分布均匀、如何剔除误匹配、考虑RGBD像机的噪声特性(依据噪声进行加权)、关键帧的选择等等
?

?3.2 后端

? ? ? ?为什么使用后端优化,因为视觉里程计会造成累积误差【因为当前位姿和前一时刻的位姿强相关】,会使得图变的错误或者不闭合,如下面两个图

? ? ? ?后端就是为了消除前端的误差,将前端的结果进行优化分为基于滤波和图优化(非线性优化)两种方法现在绝大部分SLAM系统都采用图优化。

? ? ? 常用的后端优化库有g2o、ceres、gtsam。相对于前端来说,后端的方法较为成熟稳定,没有什么变化的地方。

图优化:

? ? ?图优化里,Bundle Adjustment(后面简称BA)起到了核心作用,对该算法的详细解释可以参考下面的博文

SLAM入门之后端优化_金贰胖的博客-CSDN博客10 后端10.1 概述10.2 BA 与图优化Bundle Adjustment 光束法平差BA是指从视觉重建中提炼出最优的 3D 模型和相机参数(内参数和外参数)。从每一个特征点反射出来的几束光线(bundles of light rays),在我们把相机姿态和特征点空间位置做出最优的调整 (adjustment) 之后,最后收束到相机光心的这个过程 。早期SLAM 的研究者认为...https://blog.csdn.net/zzujrb/article/details/104163102?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1.pc_relevant_antiscanv2&spm=1001.2101.3001.4242.2&utm_relevant_index=4

概念:

??????? 比如一个机器人在房屋里移动,它在某个时刻 t 的位姿(pose)就是一个顶点,这个也是待优化的变量。而位姿之间的关系就构成了一个边,比如时刻 t 和时刻 t+1 之间的相对位姿变换矩阵就是边,边通常表示误差项

在SLAM里,图优化一般分解为两个任务:

1、构建图。机器人位姿作为顶点,位姿间关系作为边。

2、优化图。调整机器人的位姿(顶点)来尽量满足边的约束,使得误差最小。

例子:
? ? ? ?下面就是一个直观的例子。我们根据机器人位姿来作为图的顶点,这个位姿可以来自机器人的编码器,也可以是ICP匹配得到的,图的边就是位姿之间的关系。由于误差的存在,实际上机器人建立的地图是不准的,如下图左。我们通过设置边的约束,使得图优化向着满足边约束的方向优化,最后得到了一个优化后的地图(如下图中所示),它和真正的地图(下图右)非常接近。

3.3 回环检测?

? ? ?为什么要进行闭环检测呢?原因是前端得到像机轨迹会随着时间不断漂移(drift),而且累积的误差会越来越大,这样,过不了多久,我们得到的像机运动轨迹就完全不可靠。当像机走到之前来过的位置时,我们可以得到一个强有力的约束,将像机轨迹拉回到正确的地方,这就是为什么我们要大费周章的寻找闭环。

3.4 建图

? ? ?根据应用(定位/导航/避障/重建/交互)的不同,地图的表达类型也不同,常见的地图类型包括稀疏地图、稠密地图、语义地图、拓扑地图。

地图类型:

四、优秀RGBD SLAM介绍

参考博文:

RGB-D Slam 总结_J-A的博客-CSDN博客 一.引言       首先,我们需要知道什么是SLAM(simultaneous localization and mapping, 详见SlamCN),SLAM,即时定位与制图,包含3个关键词:实时、定位、制图,就是实时完成定位和制图的任务,这就是SLAM要...https://blog.csdn.net/lxy_2011/article/details/84142364?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4.pc_relevant_default&spm=1001.2101.3001.4242.3&utm_relevant_index=7

?4.1 KinectFusion

? ? ? ?KinectFusion是首个基于RGBD相机的实时三维重建系统,用深度图像生成的点云通过ICP估计相机位姿,再依据相机位姿拼接多帧点云采,并用TSDF模型表达重建结果。KinectFusion虽然能实时构建三维模型,但它也存在很明显的缺点:RGBD相机的RGB信息完全没有得到利用;为保证实时性,需要用到GPU加速,增加实现的成本;当环境主要由平行平面构成时,ICP会失败;它在对同一个环境重复建模时误差不会无限累积,但对新环境进行建模时,误差仍会累积;使用固定体积的网格模型表示重建的三维场景,因而只能重建固定大小的场景;没有使用闭环检测进行优化。

? 4.2 ElasticFusion

? ? ? ?ElasticFusion(见Thomas Whelan个人主页和ElasticFusion解析)充分利用RGBD相机的信息,利用RGB的颜色一致性估计相机位姿,以及利用深度图像生成点云进行ICP来估计相机位姿,通过不断优化重建的map来提高相机位姿的估计精度,最后用surfel模型进行地图表达。ElasticFusion的优点是充分利用颜色与深度信息,缺点是由于代码没有进行优化,它只适合对房间大小的场景进行重建。

? ?4.3 Kintinuous

? ? ? ?Kintinuous(见Kintinuous解析)是对KinectFusion的改进,位姿估计通过ICP和直接法使用GPU实现,有闭环检测,并首次使用deformation graph对三维刚体重建做非刚体变换,使得闭环中两次重建的结果能够重合。

? ? 4.4 RGBD SLAM2

? ? ? ?RGBD SLAM2(见rgbdslam-ROS Wiki和视觉SLAM实战)是一个非常全面优秀的系统,将SLAM领域的图像特征、优化、闭环检测、点云、octomap等技术融为一体,非常适合RGBD SLAM初学者,也可以在其基础上继续开发。RGBD SLAM2的缺点是其算法实时性不好,相机必须慢速运动,此外,用点云表达三维地图很耗费内存

? ? 4.5 RTAB Map(RTAB SLAM)

? ? ? ?RTAB Map(见RTAB-Map's homepage和RTAB-Map中文详解)是当前最优秀的RGBD SLAM,它通过STM/WM/LTM的内存管理机制,减少图优化和闭环检测中需要用到的结点数,保证实时性以及闭环检测的准确性,能够在超大场景中运行。著名的Google Tango(见如何评价Google 的 Project Tango和Google Project Tango 有哪些黑科技)就是使用RTAB Map做SLAM,当然Tango中的RTAB Map还融合IMU等传感器数据(据说使用的是MSCKF,而且做了硬件同步)。今天还体验了一下Tango,不得不说Google的东西就是屌,无论在室内还是室外都能运行,当然室内效果更好,只要手机运动不是太快,基本上都能稳健运行,并构建mesh地图。

? ? RTAB Map结果:

? ??

五、RGBD SLAM难点

? ? (1)相机运动太快

? ? ? ?相机运动过快的影响:其一,相机运动过快时,帧间的重叠区变小,对于特征点法来说,同名特征点变少,对于光流法和直接法来说,灰度不变假设不成立,这将导致位姿估计不准或者没法估计(可使用广角、鱼眼、全景相机,或者多放几个相机解决);其二,相机运动过快时,rolling shutter相机会产生运动模糊,严重影响特征点的提取与匹配,以及使用直接法进行位姿估计的准确性(可使用global shutter相机解决)。

? ? (2)视场角不够

? ? ? ?视场角不够,帧间的重叠区自然就小(zed视场角较大,而Kinect太小),可使用视场角大的相机解决,或者多用几个RGBD相机。

? ? (3)深度测量范围小、精度低

? ? ? ?zed深度测量虽然可达20m,但是精度不高,而且弱纹理环境下深度很不准;Kinect深测量范围为0.5~4m,精度可达2~4mm。

? ? (4)实时难度大

? ? ? ?当前的许多RGBD SLAM都需要计算特征(点线面),产生巨大的计算开销,为了保证SLAM系统实时运行,我们可以通过选择计算量小的特征、并行计算、利用指令集、放到硬件上计算等手段进行加速,当然还可以减少特征点数。实时性与SLAM结果的精度存在天然的矛盾,需要在两者间进行权衡。

? ? (5)遮挡

? ? ? ?相机运动到墙角时,许多信息会被遮挡;相机可能会被操作人员无意遮挡。

? ? (6)特征缺失

? ? ? ?许多应用场景包含大面积的弱纹理区域,导致位姿估计精度低或者失败。除了增加视场范围,使用IMU,好像没有太好的办法。

? ? (7)动态光源

? ? ? ?变化的光源会导致特征提取与匹配的不准,也让直接法的灰度不变假设不成立;此外,强光对Kinect会产生巨大干扰。

? ? (8)运动物体的干扰

? ? ? ?所有的SLAM都假设环境是静止的,但是运动物体会破坏这一假设。解决办法就是检测出运动物体,减小它们的影响。

? ? (9)时间同步

? ? ? ?现在许多SLAM系统都使用多个传感器,这就涉及到传感器间的时间同步问题,时间同步分为软同步和硬同步。软同步当然赶不上硬同步,但是硬件时间同步只能由硬件开发商解决,对于RGBD传感器来说,这是一个相当棘手但却十分重要的问题,但是绝大多数论文都避而不谈(即使我们无法解决)。

? ? ? ?上述问题在视觉SLAM中普遍存在,自然也在RGBD SLAM中存在,6、7、8这几个问题还在研究阶段,远达不到应用的要求,前面的几个问题倒是可以在一定程度上解决。比如使用广角相机,或者增加RGBD相机个数(时间同步问题无法解决),再或者使用IMU进行辅助(IMU优点是能测量快速运动,在视觉里程计失败时提供短时间的位姿估计)。
?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:56:33  更:2022-04-14 23:59:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:54:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码