在视觉slam是什么中怎么判断障碍物

点击“计算机视觉life”关注置顶哽快接收消息!
本文转载自“SIGAI人工智能平台”(ID:SIGAICN),主要介绍了视觉slam是什么的概念、传统算法及深度学习的代表性开源算法

(estimation-theoretic methods) 应用在构圖和定位问题中。 SLAM最早被应用在机器人领域其目标是在没有任何先验知识的情况下,根据传感器数据实时构建周围环境地图同时根据這个地图推测自身的定位[1]。

假设机器人携带传感器 (相机) 在未知环境中运动为方便起见,把一段连续时间的运动变成离散时刻 t=1…k,而在這些时刻用 x 表示机器人的自身位置,则各时刻的位置就记为 x1x2xk,它构成了机器人的轨迹地图方面,假设地图由许多个路标组成而烸个时刻,传感器会测量到一部分路标点得到它们的观测数据。设路标点共有 N 个用 y1y2yn 表示通过运动测量 u 和传感器读数 z 来求解定位問题 (估计 x)和建图问题 (估计 y)。

只利用相机作为外部感知传感器的SLAM称为视觉slam是什么 (vSLAM [2])相机具有视觉信息丰富、硬件成本低等优点,经典的vSLAM系统┅般包含前端视觉里程计、 后端优化、 闭环检测和构图四个主要部分[3]

●  后端优化 (Optimization): 后端接受不同时刻视觉里程计测量的相机位姿,以及闭環检测的信息对它们进行优化,得到全局一致的轨迹和地图[5];

●  闭环检测 (Loop Closing): 指机器人在地图构建过程中, 通过视觉等传感器信息检测是否发苼了轨迹闭环, 即判断自身是否进入历史同一地点[6];

●  建图 (Mapping): 根据估计的轨迹建立与任务要求对应的地图[5]。

根据生成方法的不同SLAM可以分成两夶类:间接方法和直接方法。下面依次介绍这两种方法

间接法首先对测量数据进行预处理来产生中间层,通过稀疏的特征点提取和匹配來实现的也可以采用稠密规则的光流,或者提取直线或曲线特征来实现然后计算出地图点坐标或光流向量等几何量,因此间接法优化嘚是几何误差:

u′i是 Pi 投影到 Ik 上的坐标之后利用中间层的数值来估计周围环境的三维模型和相机运动。

图 3 间接法示意图[3]

MonoSLAM 是第一个实时的单目视觉 SLAM 系统[7] MonoSLAM 以EKF(扩展卡尔曼滤波)为后端,追踪前端稀疏的特征点以相机的当前状态和所有路标点为状态量,更新其均值和协方差在 EKF 中,每个特征点的位置服从高斯分布可以用一个椭球表示它的均值和不确定性,它们在某个方向上越长说明在该方向上越不稳定。 该方法的缺点:场景窄、路标数有限、稀疏特征点易丢失等

PTAM[8]提出并实现了跟踪和建图的并行化,首次区分出前后端 (跟踪需要实时响应图像数據地图优化放在后端进行),后续许多视觉slam是什么 系统设计也采取了类似的方法PTAM 是第一个使用非线性优化作为后端的方案,而不是滤波器的后端方案提出了关键帧 (keyframes)机制,即不用精细处理每一幅图像而是把几个关键图像串起来优化其轨迹和地图。该方法的缺点是:场景尛、跟踪容易丢失

ORB-SLAM[9]围绕ORB 特征计算,包括视觉里程计与回环检测的 ORB字典ORB 特征计算效率比 SIFT 或 SURF 高,又具有良好的旋转和缩放不变性ORB-SLAM 创新地使用了三个线程完成 SLAM,三个线程是:实时跟踪特征点的Tracking线程局部 Bundle Adjustment 的优化线程和全局 Pose Graph 的回环检测与优化线程。该方法的缺点:每幅图像都計算一遍 ORB 特征非常耗时三线程结构给 CPU带来了较重负担。稀疏特征点地图只能满足定位需求无法提供导航、避障等功能。

ORB-SLAM2[10]基于单目的 ORB-SLAM 做叻如下贡献:第一个用于单目、双目和 RGB-D 的开源 SLAM 系统包括闭环,重定位和地图重用; RGB-D 结果显示通过使用 bundle adjustment,比基于迭代最近点(ICP) 或者光度和深喥误差最小化的最先进方法获得更高的精度; 通过使用近距离和远距离的立体点和单目观察结果立体效果比最先进的直接立体 SLAM 更准确; 轻量級的本地化模式,当建图不可用时可以有效地重新使用地图。

直接法跳过预处理步骤直接使用实际传感器测量值例如在特定时间内从某个方向接收的光,如下图所示在被动视觉的情况下,由于相机提供光度测量因此直接法优化的是光度误差:

图 7 直接法示意图[3]

DTAM[11]是单目 VSLAM 系统, 是一种直接稠密的方法,通过最小化全局空间规范能量函数来计算关键帧构建稠密深度图而相机的位姿则使用深度地图通过直接图潒匹配来计算得到。对特征缺失、 图像模糊有很好的鲁棒性该方法的缺点是:计算量非常大,需要 GPU 并行计算 DTAM 假设光度恒定,对全局照奣处理不够鲁棒

LSD-SLAM[12]建了一个大尺度直接单目 SLAM 的框架,提出了一种用来直接估计关键帧之间相似变换、尺度感知的图像匹配算法在CPU上实现叻半稠密场景的重建。该方法的缺点:对相机内参敏感和曝光敏感相机快速运动时容易丢失,依然需要特征点进行回环检测

SVO[13](Semi-direct Visual Odoemtry) 是一种半矗接法的视觉里程计,它是特征点和直接法的混合使用:跟踪了一些角点然后像直接法那样,根据关键点周围信息估计相机运动及位置由于不需要计算大量描述子,因此速度极快在消费级笔记本电脑上可以达到每秒 300 帧,在无人机上可以达到每秒 55 帧该方法的缺点是:舍弃了后端优化和回环检测,位姿估计存在累积误差丢失后重定位困难。

DSO[14](Direct Sparse Odometry) 是基于高度精确的稀疏直接结构和运动公式的视觉里程计的方法不考虑几何先验信息,能够直接优化光度误差并且考虑了光度标定模型,其优化范围不是所有帧而是由最近帧及其前几帧形成的滑动窗口,并且保持这个窗口有 7 个关键帧DSO 中除了完善直接法位姿估计的误差模型外,还加入了仿射亮度变换、 光度标定、 深度优化等該方法没有回环检测。

基于深度学习的SLAM

传统的视觉slam是什么在环境的适应性方面依然存在瓶颈深度学习有望在这方面发挥较大的作用。目湔深度学习已经在语义地图、重定位、回环检测、特征点提取与匹配以及端到端的视觉里程计等问题上有了相关工作,下面列举一些典型成果:

●CNN-SLAM[17]在LSD-SLAM[12]基础上将深度估计以及图像匹配改为基于卷积神经网络的方法并且可以融合语义信息,得到了较鲁棒的效果;

● 剑桥大学開发的PoseNet[18]是在GoogleNet[19]的基础上将6自由度位姿作为回归问题进行的网络改进,可以利用单张图片得到对应的相机位姿;

● 《视觉slam是什么十四讲》[5]一書的作者高翔利用深度神经网络而不是常见的视觉特征来学习原始数据的特征,实现了基于深度网络的回环检测[20];

●  LIFT[21]利用深度神经网络學习图像中的特征点相比于SIFT[22]匹配度更高,其流程图如下图所示:

图 12 四分支孪生训练网络架构[21]

特征匹配对比图中左列为SIFT匹配结果右列为LIFT。绿色线条代表正确匹配红色圆圈代表描述子区域,可以看到LIFT得到了比SIFT更稠密的匹配效果。

UnDeepVO[23]能够通过使用深度神经网络估计单目相机嘚6自由度位姿及其视野内的深度整体系统框架概图见下图。

UnDeepVO有两个显著的特点:一个是采用了无监督深度学习机制另一个是能够恢复絕对尺度。UnDeepVO在训练过程中使用双目图像恢复尺度但是在测试过程中只使用连续的单目图像。该文的主要贡献包括以下几点:

//viewspace-2331185/如需转载,请注明出处否则将追究法律责任。

AR讲的是增强现实就是在用户的角度来看,真实的物体上叠加了虚拟的标记或者虚拟的物体那么很简单的思考一下,虚拟的物体在哪叠加就是找一个准确位置的问题嘛!以现实环境或者特征为场景,通过slam进行定位即得到相机的位姿。真实场景中的特征点或者标志物的位置知道了那么在哪加虚拟物體不就清楚了么!

前沿:研二狗之前一直是做四軸无人机控制的,现在退魔转来学学自动驾驶方面关于vslam的内容现在关于slam相关的学习很火,尤其是有了高翔大佬的视觉slam是什么十四讲之后使得普通学生入门有了系统性的方案和了解,为学生造福了以后的学习会围绕着高博和高博的视觉slam是什么十四讲展开,每次学完一讲內容都会巩固把方法论和过程放在csdn上,做做笔记


第一讲ppt和视频学习资料来源于深蓝学院


第一讲:slam概述与理论基础

从自动驾驶的角度来說信息来源主要是摄像头{分单目,双目(立体相机)深度摄像头(RGB-D,D即deep)}激光雷达(2D\3D),GPS(不管是RTK也好单独GPS也好,最基本的定位原悝都是一样的)惯性导航(IMU之类的),车辆本身的信息(车身大小轮距,轮式编码器之类)

深度需要其他手段估计单目相当于3D世界茬2D面上的投影。人因为见过的图像信息足够丰富根据近大远小可以营造出空间感觉,但机器需要其他方式机器通过的方式就是运动!峩们知道近大远小,相机向右移动拍出来的物体从左面离开视野,近处物体移动快远处物体移动慢,这样运动的物体可以通过对比图潒之间的相同特征点估计场景中物体的运动轨迹、大小、深度(获取深度方式的科普文);但是这样获取的图像是相对大小我可以放大仳例使其成为真正的高楼大厦和汽车,也可以缩小让他成为模型没有办法衡量,所以单目slam无法仅凭图像确定这个真实尺度我们称之为呎度不确定。

双目:通过视差计算深度双目AB之间的距离称之为基线,通过基线来计算每个像素的空间位置基线距离大,测量距离远缺点是计算与标定较为复杂,深度量程和精度受双目的基线和分辨率影响所以非常消耗资源

深度相机(RGB-D):通过红外结构光或者tof原理,通过主动向物体发射光并接收返回的光测出物体与相机之间的距离,物理手段测量深度

那么有了这么多摄像头数据可以运用计算机视覺在2D平面/3D立体上做什么?在展示视频中(见上面资料第一讲ppt第四页)用到了

物体识别:识别谁是车谁是人

物体跟踪:预测车和人的移动

物體检测:车的报外框之列的

语义分割:那部分是车那部分不是

这4个主要的部分组成了自动驾驶视觉部分识别的全过程

也就是slam解决的主要昰两个问题:1、定位,2、建图

经过前辈们的总结得出经典的slam框架包括传感器信息读取,视觉里程计(前端)非线性优化(后端),回環检测建图。

传感器信息读取:相机图像读取与预处理码盘,惯导等信息同步

视觉里程计:估算相邻图像间相机的运动以及局部地图嘚样子

后端优化:接收不同时刻视觉里程计测量的相机位姿以及回环检测信息并优化,得到全局一致的轨迹和地图、

建图:根据估计的軌迹建立任务要求与对应地图

如果将工作环境限定在静态、刚体、光照变换不明显,没有人为干预的情况下这个slam是相当成熟的方案了。

我要回帖

更多关于 视觉slam是什么 的文章

 

随机推荐