- 文献综述(或调研报告):
即时定位与地图构建(SLAM)问题一直是机器人十年来研究最为活跃的问题之一。机器人工作空间的有效性对于自主执行定位,计划和导航等几项任务具有重要的意义。 特别是对于在复杂动态环境中工作的移动机器人,例如在工厂或医院完成运输任务,重要的是他们可以仅使用车载传感器快速生成(并维护)其工作空间的3-D地图。 例如,操纵机器人需要详细介绍他们的工作空间,以便无碰撞的行动计划,以便为地图化和导航提供详细的地图。虽然以前许多3D映射方法依赖于昂贵且重的激光扫描仪,但基于结构光的RGB-D相机的商业发布提供了一种有吸引力的,强大的替代方案。
与基于激光的SLAM相比,视觉SLAM系统通常从相关图像中提取关键点。视觉特征点有利于模拟数据关联的几何结构,从而简化数据关联。与此同时,相比激光,视觉传感器具有体积紧凑,重量轻,经济成本较低,安装简便的优点。它能够获取颜色、纹理和形状等丰富多样的环境场景信息,容易提取环境的角点、直线边、面等特征信息,非常适合三维空间中的识别匹配应用。
Kinect 是微软 2010 年推出的应用于 Xbox 360 游戏主机及 Windows 平台PC 一款的体感输入设备,作为一款深度摄像头,它能够同时获取空间的图像与深度信息,实现动作捕捉和手势识别等功能 [1]。Kinect 包含三个镜头,中间的 RGB 摄影头可以获取彩色图像,左右两侧镜头分别为红外线发射器和红外线摄影机所构成的 3D 结构光深度感应器,用于采集深度信息。Kinect 工作时,以 30fps 的频率获取320 times; 240的分辨率的深度图以及640 times; 480的 RGB 图像,其中深度图为 16bit 的数据格式,其高 13 位表示像素对应深度值,低 3 位保存的是用户序号,而 RGB 图像则是3 通道的 32bit格式图像。Kinect深度测量的精度随着距离的增大而下降,在在 1m 左右的误差为3mm,在 3.6 m 时的其误差为3 cm,因此官方推荐使用的范围是1到 4m[2]。
顾名思义,SLAM主要由两部分组成,首先要通过提取图像上的特征点进行定位(前端算法),然后根据点的坐标进行地图的构建(后端算法)[3]。因此,基于这种考虑,目前对于深度相机的SLAM算法有三种典型的算法,分别是RGB-D SLAM V2、RTAB-Map和DVO SLAM。根据实验结果表明,RGB-D SLAM V2的精确度和鲁棒性都很好,但是运行速度很慢,其可能原因是特征点的提取十分耗时、地图构建时进行三维点云的渲染处理也会影响运行速度;DVO SLAM算法的运行速度和鲁棒性都很好,但精确度稍差,特别是当SLAM场景复杂且长时间运行时,DVO SLAM算法的精确度会变得很差,可能原因是:在复杂的SLAM场景下,“关键帧”的选择变得困难,从而累积误差;而RTAB-Map算法的运行速度和精确度很好,但是鲁棒性稍差,在进行SLAM时,因外界场景迅速变化导致算法找不到之前的闭环所致[4]。
特征是图像信息的另一种数字表达方式。我们通过提取图像里面一些稳定的点来判断物体的运动,这些点我们称之为特征点。目前特征点提取分为以 Harris 和 FAST 为代表的角点提取算法,以及 SIFT和 SURF为代表的斑点提取算法,它们都具有各自的优缺点[5]。应用时往往需要根据计算能力,实时性要求,具体 SLAM环境以及机器人的运动特点来选择合适的特征提取算法。不同特征提取算法的主要特性及表现对比从实验结果可知[6],在尺度不变性和仿射不变性上,基于斑点特征的提取算法具有很大的优势,但值得注意的是,SIFT 、SURF 和 CENSURE 算法并不是真的具备仿射不变性,其不变性只是针对小的视角变换而言。文献[7]介绍了一种ORB特征检测法,ORB特征亦由关键点和描述子两部分组成。它的关键点称为“Oriented FAST”是一种改进的FAST角点;它的描述子成为BRIEF(Binary Robust Independent Elementary Features)。因此,提取ORB特征分为两个步骤:角点提取和描述子。FAST是一种角点,其思想是:如果一个像素与它邻域的像素差别较大,那他可能是角点。通过检测图像中一个像素的亮度并与周围的其他像素点比较,合理选取阈值来确定该点是否是角点。并将尺度与旋转的描述加到FAST角点上,提升其鲁棒性,这就是改进后的FAST。而BRIEF使用了随机选点的比较,其具体实现可参考文献[8]。
SLAM 问题可以被定义为误差函数最小二乘法优化问题[9],这个问题可以使用位姿图(Pose Graph)模型来描述,其中图中的节点(Nodes,Vertices)代表描述相机位姿的状态变量,而连接两个节点的边(Edges)代表代表相机不同位姿下观察结果之间的约束关系。RGB-D SLAM 算法后端的任务为使用非线性误差函数优化位姿图中相机的位姿信息,具体来说就是使用基于图的位姿优化方法,利用前端得到的 6D 运动变换关系初始化位姿图,然后进行闭环检测添加闭环约束条件,再利用非线性误差函数优化方法进行位姿图优化,最终得到全局最优相机位姿和相机运动轨迹,并进行三维环境重建。
当使用 RGB-D SLAM 前端算法得到两两相邻的 RGB-D 帧图像之间的 6D 运动变换关系序列后,则可以利用该运动变换序列生成相机位姿序列以及相应的相机运动变换序列,继而生成位姿图[10]。位姿图构建完成后本来可以直接进行位姿优化工作,但是由于位姿图优化是基于位姿图节点间的边约束关系进行的,所以我们可以尽可能多的向位姿图中添加准确的边约束关系,以使得优化后得到的位姿图的误差最小,这一过程可以通过闭环检测和添加闭环约束来实现[11]。
当相机在环境中运动的时候,经过一段时间后,如果发现某些场景似曾相识,如果相似图足够高,那么在一定程度上我们可以认为相机回到或者接近某个曾经到过的地方。在这种情况下,我们可以根据这两幅相似场景之间的运动变换得到对应的相机位姿之间的运动变换,然后根据该运动变换对之前所估计的相机位姿进行一些修正,以使得修正后的相机位姿更接近真实相机位姿。向构建完成的位姿图中添加闭环约束后,需要对整个位姿图进行优化,以获得全局最优的运动变换约束和全局最优的相机位姿。位姿图优化实际上就是求解误差函数最小化的问题,可以通过多种不同的方法实现,常用的图模型框架有Graph SLAM,TORO,HOG-Man 和 g2o[12]。姿图优化过程结束后,可以提取出优化后的相机位姿得到相机运动轨迹,根据不同相机位姿下的观察结果生成不同相机位姿下的点云,然后将这些点云全部变换到同一相机位姿下进行累加点云拼接,最终得到重建后的三维地图环境。
参考文献
[1] 刘迪. 基于Kinect的同步定位与地图构建研究[D]. 北京化工大学, 2016.
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。