视觉SLAM综述作者:日期:2017.6.22SLAM(simultaneouslocalizationandmapping),也称为CML(ConcurrentMappingandLocalization),即时定位与地图构建,或并发建图与定位。SLAM最早由Smith[1]、Self和Cheeseman于1988年提出。由于其重要的理论与应用价值,被很多学者认为是实现真正全自主移动机器人的关键。什么是SLAM?SLAM问题可以描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。(1)定位(localization):机器人必须知道自己在环境中位置。(2)建图(mapping):机器人必须记录环境中特征的位置(如果知道自己的位置)什么是SLAM?机器人导航中常用的4种传感器假设机器人携带相机在未知环境中运动,把一段连续时间的运动变成离散时刻t=1,…k,用x表示机器人的自身位置。则各时刻的位置就记为x1,x2…xk,它构成了机器人的轨迹。地图方面,设地图由许多个路标组成,而每个时刻,相机会测量到一部分路标点,得到它们的观测数据。设路标点共有N个,用y1,y2…yn表示。SLAM数学模型用𝑥𝑘=𝑓𝑥𝑘−1,𝑢𝑘,𝑤𝑘来表示机器人的运动信息,其中𝑢𝑘表示运动传感器读数,𝑤𝑘为噪声,称该方程为运动方程。用方程𝑧𝑘,𝑗=𝑓(𝑦𝑗,𝑥𝑘,𝑣𝑘,𝑗)来描述路标信息,其中𝑥𝑘为机器人在位置的观测的中标点,𝑧𝑘,𝑗为产生的观测数据,𝑣𝑘,𝑗为噪声,称该方程为观测方程。至此,就可以通过运动测量u和传感器读数z来求解定位和建图问题相机作为唯一外部传感器的SLAM被称为视觉SLAM(VSLAM)。1、视觉SLAMVSLAM的分类1.1深度信息获取方式按照深度信息的获取方式不同,VSLAM可以分为单目VSLAM、双目VSLAM和RGB-DVS-LAM[2-5]。单目VSLAM初始化时的深度信息是无法准确获得的,因此VSLAM得到的相机位置以及地图点坐标与真实值之间是比例关系.双目VSLAM的深度信息通过双目相机两幅图像特征点之间的视差获得RGB-DVSLAM的深度信息采集图像的同时可以直接得到。总体来看,在理论复杂程度上单目VSLAM算法最为复杂,双目VSLAM数据运算量最大。按照所建地图的稠密程度,VSLAM可以分为稠密VSLAM和稀疏VSLAM。1.2地图的稠密程度利用整幅图像的所有像素信息参与地图的构建,利用价值高,但算法耗时比较大,关键帧的位姿不再重优化,定位精度有限.稠密VSLAM只利用图像的特征点进行定位和构图,因此只能得到稀疏的环境地图,但算法耗时相比稠密VSLAM小,定位精度更高.稀疏VSLAM按照VSLAM是否采用概率框架,VSLAM可以分为基于滤波的VSLAM和基于关键帧的VSLAM。1.3是否采用概率框架需要设计卡尔曼滤波器来估计相机的位姿和地图点坐标,又叫在线SLAM,此类方法存在线性化和更新效率低的问题,因此无法应用到大规模环境的地图创建中。基于滤波的VSLAM通过基于光束平差法(BundleAdjustment,BA)的图优化理论估计相机的位姿和地图点坐标,大大提高了SLAM的精度。基于关键帧的VSLAM目前,基于关键帧的VSLAM成为主流算法。最具代表性的有两种:一种是LSD-SLAM[6],属于半稠密的单目的VSLAM;一种是ORB-SLAM[7,8],属于稀疏的VSLAM。稀疏地图VSLAM可以分为四个部分:视觉里程计,后端优化,建图和闭环检测;关系如图所示。2、稀疏VSLAM的框架传感器数据视觉里程计后端优化建图闭环检测视觉里程计(VisualOdometry,VO),主要依靠视觉传感器,比如单目、双目相机来实现对物体的运动估计。基于特征点的方法长久以来被认为是视觉里程计的主流方法,它运行稳定,对光照、动态物体不敏感。其主要分为特征提取、匹配和运动估计。2.1视觉里程计将三维世界的坐标点映射到二维图像平面需要使用相机的几何模型来描述。VSLAM根据相机数量分为单视图几何模型、双视图几何模型,有些算法还引入刚体变换模型、相似变换模型以及三维重建模型等辅助模型。2.1视觉里程计坐标映射单视图几何模型:又叫成像模型,描述的是世界参考坐标系𝑂𝑤−𝑥𝑤𝑦𝑤𝑧𝑤中空间三维地图点齐次坐标X与对应的图像坐标系𝑂−𝑢𝑣中二维像素点齐次坐标x的约束关系,可表示为:𝜆𝑥=𝑃𝑋=𝐾𝑅𝑡𝑋𝑃为相机矩阵,𝐾为相机内参矩阵,有5个自由度,𝑅和𝑡分别为相机的旋转和平移矩阵,各有3个自由度,因此𝑃有11个自由度,𝜆表示地图点的深度信息。2.1视觉里程计推导过程涉及三个坐标系转换:世界坐标系𝑂𝑤−𝑥𝑤𝑦𝑤𝑧𝑤相机坐标系𝑂𝑐−𝑥𝑐𝑦𝑐𝑧𝑐像平面坐标系𝑂𝑝−𝑥𝑝𝑦𝑝𝑧𝑝2.1视觉里程计双视图几何模型:又叫对极几何模型,描述的是空间点X在两幅图像①和图像②的像点坐标x和x'满足的对极几何约束关系,可表示:𝑥𝑇𝐹𝑥=0𝐹称为基本矩阵,𝐹由两幅图像的相机矩阵P和P‘决定,𝐹有7个自由度。可见,双视图几何模型是两个单视图几何模型之间的约束关系模型。对物体的运动估计是通过对前后帧的特征提取与匹配实现的。特征提取与匹配的过程包括三个阶段:特征点的检测识别过程,解决的是特征点在哪的问题;特征点的描述表达过程,解决的是特征点什么样的问题;特征点的分类匹配过程,解决的是特征点属于哪的问题。2.1视觉里程计提取和描述图像特征点方法多种多样,最具代表性的是以下几种:(文献略)2.1视觉里程计SIFT特征点检测与描述通过检测图像尺度空间的极值确定特征点的位置,把特征点周围16个梯度方向直方图离散化为128维浮点向量作为描述符。SURF特征点检测与描述通过计算像素的Hessian矩阵确定特征点位置,把特征点在横向和纵向的Harr小波响应构成的64维浮点向量作为描述符。FAST特征点检测通过比较像素点与圆圈邻域内像素点灰度值的大小判断是否为特征点,此过程简单易于实现,并且具有较高的效率。BRIEF特征点描述在特征点邻域内依据正态分布选择像素点对,通过比较像素点对的灰度值大小产生二进制向量来描述特征点,此方法描述特征点具有较高的效率和鲁棒性,并且易于实现。FREAK特征点描述通过二进制向量表示,区别在于比较用的像素点对的选取方法不同,FREAK是基于人眼视网膜特性选择像素点对,越接近特征点采样点越密集。ORB特征点检测与描述是具有方向信息的FAST特征点检测方法和旋转的BRIEF描述方法的组合,结合了两者的优点,是VSLAM要求的较为理想的选择。Sift特征点特征提取与匹配对于特征点分类匹配的方法,目前比较流行的有两种:基于概率的FAB-MAP[9]和二进制词袋技术DBoW2[10]。2.1视觉里程计特征提取与匹配运动估计特征的位置信息可以使用图像坐标来表示,也可以通过立体视觉获取其三维空间的坐标,根据匹配方式的不同,分为2D到2D,3D到2D以及3D到3D的运动估计。2D到2D:其指通过图像坐标来估计相机的运动位姿变化,借助极线约束,可以从2D到2D的对应关系中求解本质矩阵,进而获取帧间运动信息。3D到2D:其表示描述三维特征及其在图像上投影之间的对应关系,其被称为PNP。可以采用非线性优化的方法,构建最小二乘问题并迭代求解。3D到3D:其通过获取匹配好的3D点,利用迭代最近点ICP求解。2.1视觉里程计运动估计闭环检测是指检测机器人是否再次进入同一地点,判断是否经过闭环回路又回到了曾经到过的地点。由于误差不断累积,通常在检测到闭环的时候,机器人所估计的轨迹与真实情况差别较大.检测到闭环后根据估计值与真实值的误差,启动全局优化对整个回路的位姿进行优化,提高了机器人位姿估计和地图构建的精度.这对机器人长时间、大尺度的SLAM的重要性不言而喻,对于复杂、动态环境下的探索和导航也是非常重要的。2.2闭环检测目前常用的回环检测机制为词袋模型。词袋表示的主要思想是将从图像中提取的局部特征进行聚类处理,一般采取K均值聚类方法,将连续变化的特征转变成离散化的词,然后采用词的统计直方图对场景进行描述分析,进而比较场景之间的异同,从而达到判断目前场景是否来过的目的。2.2闭环检测未经过闭环检测的地图闭环检测后的地图由特征提取到运动估计以及闭环检测,从基于图优化SLAM的角度看都属于前端的范畴,即图的构建的过程。下一步要根据初始图和模型确定约束关系构建非线性最小二乘模型,进一步得到图优化模型,然后利用迭代算法求最优解。VSLAM中最重要的迭代算法是Levenberg-Marquardt(LM)迭代算法和由其衍生的Bundleadjustment(BA)。2.3后端优化后端图优化流程根据视觉里程计模型确定的约束关系,以待估计状态(相机位姿,地图点坐标)为自变量x,可以把地图点在图像上的投影误差抽象成如下矢量函数𝑓𝑥和代价标量函数𝐹𝑥:𝑓𝑥=[𝑓1(𝑥),𝑓2(𝑥),⋯,𝑓𝑛(𝑥)]𝑇𝐹𝑥=12𝑓(𝑥)2=12𝑓𝑥𝑇𝑓𝑥=12(𝑓𝑖(𝑥))2𝑛𝑖=1非线性最小二乘模型可描述为:𝑥+=argmin𝑥{𝐹(𝑥)}即求解最优值𝑥+,使得𝐹(𝑥)取得极小值,此时𝐹(𝑥)为全局极小值,很难求解,一般用求局部极小值的方法来代替,最后使用迭代法和BA算法求出最优解。2.3后端优化在经典的VSLAM模型中,所谓的建图,即找到所有路标点,这些路标点的集合即是最终的地图,一旦确定了路标点的位置,即可以说完成了建图。地图类型分为栅格地图,拓扑地图,特征地图和混合地图。根据建图需求不同,可以将建图用途分为两类:定位:把地图下来,机器人下次开机后仍然能在地图上定位,不需要再次建模,此类地图,稀疏地图即可完成。导航,避障,重建:机器人能在地图中进行路径规划,从任意两个地图点间寻找路径,而有效地避开障碍物,或者需要获得周围环境的重建效果,向他人展示,此时,需要一张稠密地图。2.4建图稀疏地图主要用于定位和地图构建中,在地图导航和人机交互等任务中则必须要使用稠密地图,如避障和物体三维建模等。与稀疏地图相比,整个SLAM的过程大致相似,但稠密地图的方法直接处理图像的全部像素,运算量大增,实时性上难以保证。DTAM[11]是一种新颖的稠密方法,通过最小化全局空间规范化能量函数来计算关键帧稠密深度图,而摄像机的位姿则使用深度地图通过直接全局图像配准来计算得到.该方法的计算量非常大。3、稠密VSLAM为了降低稠密地图的计算量,EngelJ[12,13]提出了半稠密地图(semi-directvisualodometry,SVO),通过结合关键点的思想和直接配准的方法,大大降低了计算复杂度。目前最先进的SVO就是EngelJ等提出的LSD-SLAM[13],已经能在CPU上实现了实时性。3、稠密VSLAMLSD-SLAM流程图稀疏的方法在图像输入之后需要先进行特征提取和匹配,将图像抽象为特征后再进行跟踪和构图。稠密的方法输入图像后保持完整的图像,直接在像素级上通过最小化光度误差和估计像素深度,实现跟踪和构图。4、稀疏方法与稠密方法的比较稀疏的方法稠密的方法稀疏方法与稠密方法各有自己的优缺点。稀疏的方法是提取图像特征后再对特征进行匹配和运算,运算复杂度低;另外,在奇异点剔除、模型不一致性和初始化适应性方面,稀疏的方法略好于稠密的方法。稠密的方法信息利用率更高,构建地图的完整性更好,且应用更广泛,缺点是计算量大,具体情况见下表。4、稀疏方法与稠密方法的比较此外,稠密的方法对于语义分割、目标识别以及创建包含语义的3D环境重构更有潜力.稠密的方法的研究仅仅只有5年的时间,而稀疏的方法已经有了20多年的研究历史,随着研究的深入,