融合SLAM和Marker的AR单目视觉定位算法
2023-05-08曹志强丰艳
曹志强 丰艳
关键词:增强现实;ArUco Marker;ORB_SLAM2;位姿估计;单目视觉
0 引言
增强现实(Augmented Reality,AR) 是将计算机生成的虚拟图像或信息实时、动态地叠加到用户所看到的真实环境中,实现虚拟世界与现实世界的无缝结合,使人们感知到现实世界之外的信息。近年来随着AR技术的发展,其在教育、医疗、娱乐等领域有了越来越多的应用[1-2]。
为了保证增强现实的跟踪稳定性,本文针对计算机视觉的三维注册技术展开了研究。基于计算机视觉的注册技术又分为基于Marker的注册方式和基于SLAM(Simultaneous Localization and Mapping) 的注册方式,二者在定位上各有优劣。基于Marker的注册方式可以追溯到2000年的ARToolKit[3],它是第一个ARSDK,带领AR从理论走向了现实,之后涌现出了ARTag[4]、ArUco Marker[5]等一系列标记定位技术。其中ArUco Marker采用标记字典来生成黑白标记,有唯一的二进制编码,其检测速度快,鲁棒性高,在人工标记定位中具有一定优势。但标记定位本身存在明显的缺陷,容易在标记被遮挡和相机视野不好的时候跟踪失败,李旭杰等人[6]通过将ArUco Marker与ORB特征点相融合进行定位跟踪,虽然对标记定位进行了一定的补充,但跟踪精度不是很高,面对自然环境时仍容易丢失跟踪。而基于SLAM的注册方式不需要任何标记即可以进行相机位姿估计,其中针对单目相机涌现了一大批SLAM 算法,有MonoSLAM[7]、LSD-SLAM[8]、ORB_SLAM2[9]等,其中ORB_SLAM2是目前应用最广、研究最多的SLAM算法,其采用ORB特征点进行匹配计算,可以在大部分环境下使用,而且支持单目、双目、RGB-D相机,有很强的泛用性。尽管SLAM可以在自然环境中实现跟踪,但是SLAM系统初始化缓慢、长时间跟踪会产生累积误差且消耗资源过多,严重影响着AR的广泛应用。
针对以上问题,单纯基于SLAM或基于Marker的定位,只能在理想条件下达到较高的定位精度,且系统稳定性差,两种方法都存在固有的弊端。因此,本文将基于SLAM的定位算法与基于ArUco Marker的定位算法相结合,进行融合算法研究,通过互补短板,使得最终AR系统的跟踪鲁棒性得到显著提高。
1 算法设计
正文内容针对Marker定位和SLAM定位各自存在的缺陷,同时考虑两者在定位上的互补性,本文进行两者的融合算法研究,主要围绕以下三个方面展开:
1) 利用ArUco Marker辅助完成SLAM系统的初始化,有效解决SLAM初始化速度慢的问题。
2) 利用ArUco Marker减小SLAM跟踪过程中的累积误差,从而有效解决AR的漂移问题。另外,使用Marker进行回环检测比ORB特征点更快、更准确。
3) 利用SLAM定位解决单纯基于Marker定位时对于标记的过度依赖问题。
融合定位算法框架如图1所示。
1.1 利用ArUco Marker 進行快速初始化
本文在ORB_SLAM2 的初始化环节利用ArUcoMarker完成快速初始化。
首先,选择包含Marker的两帧画面作为初始帧I1和匹配帧I2,两帧分别以ArUco Marker坐标系为世界坐标系得到对应的相机位姿T1、T2,SLAM初始化过程中需要进行地图点初始化,已知相机位姿的情况下使用对极几何原理进行特征点匹配和地图点创建。
如图2所示,在空间中寻找一点,记为点P,其在初始帧I1 和匹配帧I2 上得到一对匹配点P1 和P2,根据针孔成像原理得到点P 在相机坐标系O1 和相机坐标系O2下的坐标信息:
使用上述方法进行所有特征点的匹配计算,在匹配过程中,会出现一些误匹配的点,通过限制搜索半径剔除误匹配的点,保留符合的地图点,将所有符合的地图点存入地图中完成系统初始化。
1.2 利用Marker 减小SLAM 的累积误差
当系统识别到ArUco Marker图像时,利用其计算相邻两帧间的相机位姿变换,并以此为基准判断SLAM中相机位姿的漂移程度。如果漂移未达到优化阈值,则跳过,否则根据此时由ArUco Marker计算出的位姿信息修正SLAM系统的相机位姿信息,从而减小累积误差。
一方面,在跟踪和局部建图阶段,不时地进行误差计算,在检测到ArUco Marker后,将当前帧作为关键帧记录,并同时记录当前标记估计位姿和SLAM估计位姿。之后每当检测到ArUco Marker就同时记录两者的位姿信息,通过比较两者之间的变化程度来判断SLAM的漂移程度。
设当前检测到ArUco Marker的画面帧作为当前关键帧Ki,上一次检测到标记的关键帧记为Km,由于标记受到遮挡和相角度倾斜容易丢失跟踪,因此创建的关键帧数量会比SLAM少,使用ORB特征匹配计算的上一个关键帧记为KS,使用当前关键帧Ki 下估计的位姿对于ORB位姿进行优化。计算Ki 与KS 之间的相似变换矩阵,相似变换矩阵中包含了尺度漂移和位姿漂移产生的累计误差,在将KS 的位姿进行优化之后,继续往前一个特征点关键帧进行优化,直到优化到Km停止,此时Ki 与Km 之间的关键帧位姿全部得到了优化。
另一方面,在回环检测阶段,本文利用ArUcoMarker对ORB_SLAM2的闭环检测环节进行优化,提高检测效率。由于ArUco Marker内置编码信息,相比于词袋检索来说更加容易,且标记不易受到光照影响,检测效率和稳定性更好,所以优先在邻近关键帧队列中进行基于标记的回环检测。遍历邻近关键帧队列根据标记ID号进行筛选,将含有相同标记ID号的关键帧作为回环候选帧。然后对关键帧和回环候选帧进行特征匹配,并求解两帧之间的Sim3变换,对于满足特征匹配数目的候选回环帧,基于共视关系,更新各个关键帧之间的连接关系,并根据优化后的位姿进行地图点更新,消除累积误差产生的不良地图点,从而提高跟踪精度。
1.3 利用SLAM 解决Marker 定位中对标记的过度依赖问题
在单纯基于标记的定位系统中,ArUco Marker是提供真实空间三维信息的唯一线索。因此,一旦ArUco Marker被部分遮挡或因相机拍摄角度不理想等原因无法正常识别标记时,会导致三维注册失败,造成AR融合画面中虚拟物体突然消失。
本文融合定位算法中,利用SLAM定位系统构建的地图会记录下ArUco Marker的物理空间位置。当基于标记的定位失败时,利用SLAM跟踪系统检测到的最佳平面进行虚拟物体的叠加。从而解决单纯基于标记的定位系统中对于ArUco Marker的过度依赖问题。
2 实验与评估
本文将ArUco Marker 定位与ORB_ SLAM2 定位相融合,并对整体框架进行了优化。为检测算法有效性,本文在系统初始化、误差累积和最终AR效果等方面进行了对比实验。
2.1 实验软硬件平台
实验平台配备Inter i7 CPU、RTX 3060 GPU 和16G内存,搭载Ubuntu16系统,在Kdevelop上开发,使用Cmake编译运行。
2.2 系统初始化时间对比实验
实际应用中的AR系统,是以摄像头随机移动过程中实时捕获的视频图像为依据,完成系统的初始化。为了将本文融合算法与单纯SLAM算法的初始化时间进行对比,需要前后两次启动程序,进行初始化计时。但是两次启动过程中,因无法保证摄像头移动轨迹完全一致,导致前后两次捕获的视频画面不完全相同,而视频内容会直接影响初始化时间。
因此,为了保证对比实验的客观性和有效性,本文首先离线录制一段场景视频,然后用两种算法分别对该视频进行初始化时间计时。实验结果如表1所示,显然使用本文算法的初始化速度更快。
2.3 SLAM 累积误差实验与评估
本文实验数据通过USB摄像头拍摄真实环境获得,如图3所示,因无法获得准确的真实轨迹,故采用ORB_SLAM3算法[10]计算的相机轨迹作为参考轨迹,并使用SLAM精度评定工具—EVO进行实验评估。
运行实验数据得到轨迹对比图,如图4所示,图中,虚线为标准参照线,绿色实线表示ORB_SLAM2估计的相机轨迹,蓝色实线表示本文算法估计的相机轨迹。从图中可以明显看出,使用本文算法估计的相机轨迹线更贴近标准参照线,定位精度更好。
接下来运用EVO工具对数据完成进一步对比与分析。绝对轨迹误差(Absolute Trajectory Error,ATE) 为相机位姿真实值与估计值的差值,用来体现SLAM 系统的定位精度,当绝对位姿误差越小时,算法定位精度越高,表2为绝对轨迹误差的部分输出结果,从最大值、最小值和均方根误差的结果得出,本文算法可以获得更好的精度,定位更加精准。详细的误差分析如图5所示,其中纵轴为绝对轨迹误差,横轴为时间,可以看到本文算法相比于ORB_ SLAM2算法在定位精度上得到了大幅提升。
相对位姿误差(Relative Pose Error,RPE) 表示两个相同时间戳上相机位姿变化的差异,可以表现SLAM系统的漂移程度。表3为相对位姿误差的部分输出结果,从最大值、最小值和均方根误差的结果得出,本文算法漂移程度更小,跟踪更加稳定,详细的误差分析如图6所示,其中纵轴为相对位姿误差,横轴为时间,可以看到本文算法相比于ORB_SLAM2算法,系统的漂移程度大大减小。
为了从各个角度验证本文算法的有效性,除了进行累积误差值的对比实验与评估外,还在AR系统中进行了累计误差造成虚拟物体漂移现象的观察实验。图7表示ORB_SLAM2算法下由于累积误差导致虚拟物体发生了漂移现象,图8表示在本文算法下虚拟物体叠加正常。通过两图中虚拟物体的位置看,使用本文的融合定位算法,明显改善了因SLAM累积误差造成的虚拟物体漂移现象。
2.4 环境特征点稀少情况下的跟踪实验
本文融合定位算法解决了ORB_ SLAM2算法在特征点较少的环境下无法进行跟踪的情况,实验结果如图9所示,由于人工标记对单一环境起到了重要的信息补充,使得ORB_SLAM2能够进行正常的跟踪和地图构建。
2.5 本文算法与单纯基于Marker 跟踪算法的AR 效果对比实验
图10和图11分别展示了当Marker被部分遮挡和摄像头拍摄角度不理想两种情况下,基于Marker定位和本文融合定位算法实现的AR效果对比图。很显然,利用本文算法,解决了單纯使用Marker跟踪定位存在的弊端。
2.6 本文算法对于提升AR 系统鲁棒性的实验
本文算法中,由于Marker参与了SLAM算法的点云地图生成,使得两个跟踪系统的数据同步。因此在不影响相机位姿的情况下,甚至可以去掉Marker,将虚拟物体直接叠加在真实环境中。实验效果如图12 所示,显然,去掉Marker后虚实场景的融合效果几乎不受影响。
3 结束语
元宇宙概念的兴起,将推动增强现实技术更快速的发展。本文提出融合ORB_ SLAM2和Marker的定位算法,利用Marker定位不仅加速了ORB_SLAM2的初始化,提高了整个系统的启动速度,而且减小了累积误差,改善了AR漂移现象,同时解决了SLAM对弱纹理环境跟踪不利的弊端;利用ORB_SLAM2解决了Marker定位算法中由于跟踪失败造成虚拟物体消失的问题。
本文工作尽管为AR定位跟踪提供了一种有效方法,但仍存在一些不足,例如ORB_SLAM2无法有效识别动态目标。后续工作将考虑结合语义SLAM区别和剔除动态物体,从而加强SLAM的跟踪稳定性。