基于ORB-SLAM2 的移动机器人定位与建图研究
2023-10-24詹文杰鲍晓宇
詹文杰,宫 振,雷 震,鲍晓宇
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
0 引 言
随着机器人在生活方面的应用越来越广泛,社会生产对机器人行动精准度的要求也日益提高,传统机器人定位系统已经无法满足,因此,SLAM(同步定位与地图构建)方法应运而生。考虑到成本和研发精力等各方面问题,视觉SLAM 理所应当的成为当下研究的主流之一。视觉里程表、非线性优化和环回检测这三个主要部分共同构成了视觉SLAM[1-2]实现中公认的经典框架,如图1 所示。
图1 SLAM 框架
在该框架中,视觉里程表作为前端部分,负责使用过滤和预处理的视觉传感器信息数据构建地图轮廓;该框架的另一个主体,即后端优化部分的非线性优化和环回检测,优化了来自视觉里程表的位置和姿态信息的重复信息处理,以最小化其累积误差。最后,完成路线的地图规划。由上述可知,视觉SLAM 的精度主要受到传感器数据和算法方式的影响,因此基于算法融合并使用特殊相机的研究,仍具有较高的研究价值和实际意义。本文基于ORB-SLAM2 算法[3-4],进行视觉同步定位和地图构建。
1 特征点的提取与匹配
1.1 特征点提取
在图像处理中,特征点的形成来自于图像灰度值的急剧变化或图像边缘上的大曲率(即边缘的相交)。特征点由关键点和描述点组成。关键点直接指特征点的图像位置,而描述点被设计为以向量的形式描述关键点周围的像素信息。
SIFT、ORB 和SURF 是三种常用的特征提取算法[5-6]。SIFT(尺度不变特征变换)是一种尺度不变的特征变换,其稳定性主要体现在透视变换、仿射变换和噪声等方面。它具有良好的差异性、多样性、高速性、可扩展性等优点;同时其缺点也非常明显,由于大量的计算,其实用性大大降低。
SURF(加速强健功能)与SIFT 算法相比,仍具有特征稳定性、旋转不变性、尺度变换、亮度等优点,视角变换具有一定的稳定性,但缺点是不实时,提取边缘平滑对象特征点的能力较弱。ORB(Oriented Fast and Rotated Brief)可以以最快的速度为图像的关键点创建特征向量。其中,Fast 和Brief 分别是特征检测算法和矢量创建算法。ORB 将选择图像中的特定区域作为关键点,然后为每个关键点计算相应的特征向量。该向量用于表示关键点周围的强度模式,因此多个向量的叠加和比较可以识别更大的区域,甚至可以识别图形中的特定对象。ORB 的特点是保持了前两种算法的优点,大大提高了计算速度,具有极高的实时性。
1.2 特征点匹配
视觉SLAM 中视觉图像分析的一个重要部分是特征匹配,它在解决数据关联方面起着关键作用。
在不同时间比较两个图像,以便从图像中提取特征点(n=1, 2, ...,N),并且从图像提取的特征点(m=1, 2, ...,M)匹配两者之间的每个元素。
特征点匹配最简单和最有效的方法是暴力匹配,即逐一测量和比较每个特征子的描述符之间的距离,并成对匹配最近的描述符。特征之间的相似性取决于描述符之间的距离。当描述符之间的距离足够接近时,可以假设这两个特征近似相等。但事实上,暴力匹配的结果往往令人不满意,存在很强的不确定性。PnP问题是当n个3D空间点及其位置已知时,如何估计相机的姿态。如果两个图像之一的特征点的3D 位置是已知的,则需要至少3 个点对(以及至少一个额外的验证点验证结果)来计算相机运动。在PnP 算法中,EPnP 算法比其他算法复杂度较低,并且对于具有更多特征点的PnP问题非常有效。其次,在解中最多考虑4 个奇异向量,因此精度也很高。
1.3 相机位姿估计
对于相机位置和姿态信息的计算,本文使用EPnP 方法来计算滤波点,然后通过构建来求解,以优化结果[7]。
通常有三种情况通过匹配点来计算相机姿态,这三种情况也有三种相应的解决方案。在处理二维点位信息时,通常采用极坐标几何方法求解,而在三维点位信息中,通常采用ICP 算法求解。从3D 到2D 的第三种情况是本文描述的PnP解决方案。
2 闭环检测
如果只考虑相邻帧之间的运动交换,则它们之间的误差将一直传输。从长远来看,将产生非常大的累积误差,这是计算结果中的严重漂移。此时,需要闭环检测。
2.1 闭环检测方法
闭环检测使机器人能够识别当前场景是否已出现。闭环检测可以在不考虑相邻帧的情况下提供更长的间隔约束,并为后端优化部分形成的姿态图提供更有效的数据,因此可以提高姿态估计和地图构建的精度。这对于时间长、跨度大的SLAM 系统非常重要。
简单的闭环检测是一种基于反馈系统的算法。一般关键帧检测过程为:(1)取出候选关键帧和子候选关键帧组;(2)如果没有观察到连续关键帧,则连续关键帧组为0;(3)如果观察到连续的关键帧组,则判断最后观察到的关键帧群组是否与当前子候选群组重叠。如果同一关键帧组为1,且满足三个连续关键帧组,则添加后续关键帧作为闭环检测的关键帧。
2.2 词袋模型
通过自然语言处理和信息检索,可以将普通的表达模型简化为一袋单词模型。在该模型中,根据每个图像的特征对特征向量进行分类,并建立类别数据库。
偏好图像优化的SLAM 系统通常使用Kd 树或K-means算法[8]构建数据库。考虑到K-means 算法易受噪声、边缘点、孤立点、可处理的有限数据类型以及K值的选择不易掌握的影响,本文使用相对高效的K-means++算法来构建数据库。
K-means++是对K-means算法的改进。根据K-means聚类算法的原理,在正式聚类之前首先要做的是初始化K个聚类中心。同时,正是由于这个原因,K-means 聚类算法存在一个巨大的缺陷,即收敛严重依赖于聚类中心的初始化。
相比之下,K-means++算法与K-means 算法非常相似,但两种算法之间的最大区别在于选择初始和后续聚类中心的方法不同。同时,K-means++还要求初始集群中心之间的距离应尽可能远,步骤如下:
(1)从数据点集中随机选择一个对象作为算法的第一聚类中心;
(2)计算集合中每个点与初始簇中心之间的距离L;
(3)在剩余点中选择新的簇中心以获得距离L(Y)。被选为聚类中心的概率取决于集合中的点之间的距离是否足够远;
(4)重复步骤(2)和(3),直到选择第K个集群中心。
通过上述算法,从图像中提取的大量特征点被聚类到包含K个对象的数据库中。接下来,为了解决数据库内容查询的问题,本文使用K树来提取数据,即从H个特征点中建立深度为d且每个分叉为k的树。
3 实验及结果分析
3.1 实验平台
实验平台参数见表1 所列。
表1 实验平台参数
3.2 数据集
验证的数据集采用TUM RGBD fr1 系列数据集。TUM RGBD fr1 系列数据集是通过手持摄像机在办公室环境中拍摄收集,有平移、旋转、360°环绕和重复拍摄等功能,本文选用的fr1/desk 序列。
3.3 实验结果与分析
实际上,从宏观来看,图像处理的整体流程相当简单。环境实物图如图2 所示。经过系统处理后可得特征点检测结果,如图3 所示。对图像进行特征点提取后,图中各个物体均可识别出对应的特征点。再经算法处理得到对应的关键帧,如图4 所示。最后,进行机器人的运动控制,得到轨迹图如图5 所示。显而易见,在整个过程中图像的处理效果都达到了系统设计的预期。
图2 数据集环境图
图3 特征点检测结果图
图4 关键帧轨迹图
图5 本文算法估计轨迹图
4 结 语
本文基于ORB-SLAM2 算法,使用EPnP 等算法进行特征点的提取与匹配,并通过闭环检测以及词袋模型完成数据在传递过程中的优化,有利于提高位姿估计精度。最后进行实验对比研究,结果验证了该系列方法可以提高本SLAM 系统的鲁棒性,具有一定价值。