基于边缘计算的移动机器人视觉SLAM 方法①

2023-10-28 05:38徐斌杨东勇
高技术通讯 2023年9期
关键词:关键帧移动机器人位姿

徐斌 杨东勇

(浙江工业大学信息工程学院 杭州 310023)

0 引言

同步定位与地图构建(simultaneous localization and mapping,SLAM)是移动机器人实现自主导航的关键技术,30 多年来一直是移动机器人领域重要的研究方向,并取得了丰富的研究成果[1],但提高SLAM 的定位和建图精度一直是研究的热点[2]。随着计算机视觉技术的发展,视觉SLAM(visual SLAM,VSLAM)的方法成为活跃的研究领域[3]。与激光测距传感器相比,VSLAM 的视觉摄像头轻巧、功耗低、价格便宜,并且具有同时获取环境的距离信息、物体外观、颜色和纹理等丰富信息的技术优势[4]。但是,VSLAM 在信息检测、特征提取和特征匹配等环节计算负担重,需要强大的处理器和丰富的内存资源,对机器人机载计算机的硬件和软件提出了更高的要求,VSLAM 的实时性问题成为新的研究课题[5]。随着云技术的发展,借助云端巨大的计算能力和海量的存储空间,解决移动机器人机载计算能力和存储空间受限问题成为研究的热点领域。

云机器人为VSLAM 的实现提供了一种新的解决方法[6],同时具有方便实现机器人之间信息共享等优势[7]。在云环境下,移动机器人可以把视觉、语音和模式识别等计算密集型的复杂任务卸载到云端,解决了传统机器人在计算能力、存储器和功耗等方面的限制[7]。但是,云技术受到网络通信性能的限制,涉及实时执行的任务需要机器人机载计算机处理;此外,如果移动机器人完全依赖云端决策控制,当网络质量不佳时,云服务速度不能适应实时性要求,特别是当出现网络故障时,机器人就处于“无脑”状态,面临极大的风险[8]。边缘计算技术解决了云技术中任务卸载的高时延、网络负载与资源占用等问题,为移动机器人VSLAM 的实现提供了一种新的技术解决方案[9]。

本文基于边缘计算技术设计了一种移动机器人VSLAM 的新方法,主要创新点包括:(1)在移动机器人端建立局部地图,设计了一种新的VSLAM 架构,即移动机器人根据局部地图实现实时跟踪功能;边缘计算端实现地图构建、回环检测与全局地图优化、更新机器人端局部地图等功能。(2)改进ORBSLAM2(oriented FAST and rotated BRIEF-simultaneous localization and mapping2)算法,实现机器人端和边缘计算端并行工作,解耦地图构建与回环检测过程,进一步提高并行性;采用带有视觉里程计定位结果的关键帧信息,改进移动机器人重定位功能。(3)当移动机器人与边缘计算端发生网络通信故障时,机器人仍可实现基本的定位与运动轨迹生成功能。本文采用TUM 数据集验证了所设计方法的实时性、地图构建的精度和系统的鲁棒性。

1 相关工作

SLAM 研究始于20 世纪80 年代中期。SLAM是指移动机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和传感器采集的环境信息进行自身定位,同时构建环境地图[10]。早期SLAM 系统主要采用测距传感器,随着计算机视觉技术的发展,VSLAM 成为研究的热点。

经过十多年的研究,VSLAM 算法和实现技术都取得了大量研究结果。文献[11]对开源VSLAM 算法进行了全面的总结,其中ORB-SLAM2 算法功能完善,适用于单目、立体和RGB-D 相机,是一个典型的VSLAM 解决方案[12]。本文方案的实现部分将对ORB-SLAM2 算法进行改进,为适应边缘计算环境,将算法拆分为机器人端和云端2 个部分,并在机器人端增设局部地图,在云端增强算法的并行性。

为了解决SLAM 过程中机器人机载计算资源不足问题及实现多机器人协作SLAM,2010 年“云机器人”概念应运而生,并快速发展。在云环境下机器人VSLAM 的架构研究方面,文献[13]提出了C2TAM 协同跟踪与地图绘制框架,利用VSLAM 跟踪过程和地图构建过程并行化的特点,在机器人端完成计算量轻和实时性要求高的跟踪过程、利用云计算实现地图优化、地图公共区域融合等计算量大、实时性要求低的任务。该方案力求降低机器人和云服务器之间所需的通信带宽。但该框架未充分利用数据的独立性从而实现更强的并行和可伸缩的体系结构。机器人跟踪精度依赖于云端回传的地图,随着地图的扩大,云端更新机器人中地图的回传带宽需求也不断增大。

文献[14]针对大型环境中的服务机器人提出了DAvinCi 框架。该框架为移动机器人节点提供的云计算具有可扩展性和并行性。在该框架中,使用机器人操作系统(robot operating system,ROS)作为机器人生态系统的消息传递框架,使用8 节点Hadoop 集群将SLAM 算法并行化为Map Reduce 任务,提高了算法的并行性。

文献[15]设计的Rapyuta 是一个开源的云机器人平台。Rapyuta 允许将机器人机载计算过程部分或全部卸载到云端。机器人端运行视觉里程计算法,实现位姿实时跟踪;云端建立环境的3D 点云地图并发送关键帧位姿给机器人用于更正机器人的跟踪位姿。该平台中视觉里程计算法基于灰度不变假设,跟踪精度容易受到环境光照变化的影响,同时在机器人中没有建立环境地图。此外,该平台是针对高带宽机器人应用而设计的,SLAM 性能在很大程度上取决于网络传输延迟、网络质量以及云端计算的性能。

近年,分散和多层云结构引入到云机器人研究中。文献[16]设计了一个包括边缘层、雾层和中心云层的3 层分散云体系结构,解决机器人工作流的时间约束问题。文献[17]为解决SLAM 过程中的复杂计算、数据处理和通信延迟等问题,采用边缘计算设计了一种加速计算方案。

2 边缘计算VSLAM 架构设计

本文采用边缘计算设计VSLAM 系统的主要目标是:机载计算资源有限的移动机器人可以实现高性能的VSLAM 功能;网络传输延迟和网络质量问题对整个VSLAM 性能的影响得到有效降低;当机器人与边缘计算端失去网络连接时,机器人能继续实现位姿跟踪功能。综合考虑这些要求,基于边缘计算的VSLAM 系统架构如图1 所示。不同于在机器人机载计算机上完成整个VSLAM 过程,本文提出的VSLAM 架构中,移动机器人端和边缘计算端分别完成VSLAM 的部分功能,两者协同工作。

图1 边缘计算VSLAM 架构图

移动机器人端接受视觉传感器采集的视觉信号,通过执行视觉里程计功能,实时估计机器人的位姿,并进行运动轨迹建图;当满足产生关键帧条件时,生成关键帧并发送给边缘计算端。

移动机器人实现定位和建立运动轨迹时需要地图,因此,引入一个驻留在机器人上的局部地图。局部地图是全局地图中一小部分地图内容的备份。在VSLAM 过程中,局部地图随全局地图的更新而更新,但局部地图的大小保持恒定,从而保证移动机器人端的计算资源需求不随SLAM 过程长时间运行而改变。

边缘计算端接收机器人端上传的关键帧信息和视觉里程计估计的位姿信息,实现地图构建、回环检测和地图优化等功能,并保存构建的全局地图。边缘计算端设置局部地图更新机制,即随着VSLAM过程的进行,边缘计算端构建的全局地图发生变化时,同步对机器人端的局部地图实施更新,保持局部地图和全局地图的一致性。

为保证机器人端和边缘计算端之间的信息同步,在机器人端和边缘设备之间设计了两路独立的网络连接。一路是机器人端向边缘计算端发送关键帧和位姿信息的网络连接;另一路是当边缘计算端发起对机器人端局部地图进行更新时的地图数据传送的网络连接。两路通信之间没有约束关系,可以加快通信速度,最大可能地减少通信延迟。

与当前同行方法相比,本文设计的基于边缘计算的VSLAM 方法的主要特点是:解决了云机器人系统中普遍存在通信数据量过大导致的大延迟问题;发生网络通信故障时,机器人仍然可以继续工作,不会出现“无脑”状态。

3 边缘计算VSLAM 实现方案

根据所设计的边缘计算环境下的VSLAM 架构,本文将ORB-SLAM2 算法拆分成2 部份:(1)机器人端的算法主要实现运动轨迹跟踪等功能;(2)边缘计算端的算法主要实现地图构建、回环检测和地图优化等功能。机器人端与边缘计算端协同工作。

3.1 VSLAM 算法的解耦并行实现方案

ORB-SLAM2 原来是一个集成化的VSLAM 算法,最主要功能由跟踪定位、地图构建、回环检测3个线程组成。为了实现边缘计算环境下机器人端和边缘计算端并行协同工作,本文对ORB-SLAM2 算法进行功能模块解耦和并行化改进,采用流水线方式执行跟踪定位、地图构建、回环检测与地图优化等主要线程,如图2 所示。

区别于原来ORB-SLAM2 算法共享同一个全局地图,本文采用了局部地图和全局地图的新结构。在移动机器人上创建局部地图,其地图内容是包括来自全局地图的最新创建的关键帧、地图点、共同可视图和生成树的子集。局部地图是全局地图的一小部分,局部地图为移动机器人实现跟踪线程提供地图。为确保机器端能以有限资源实现跟踪线程,局部地图的大小固定,不随VSLAM 过程而变化。

全局地图创建并存储在边缘计算设备上,包含完整的关键帧集、地图点集、共同可视图和生成树。共同可视图基于关键帧的共享地图点观察值连接关键帧。生成树是共同可视图的子集,将每个关键帧与它们的共享最多地图点的关键帧连接起来。全局地图的大小随着VSLAM 的进程不断加大。

本文采用计算机技术中保持高速缓冲存储器一致的MESI 协议,实现局部地图与全局地图的同步。移动机器人则将新创建的关键帧及其位姿发送到边缘计算端。边缘计算端接收机器人端发来的新关键帧并执行地图构建功能。当构建的地图发生变化时,向移动机器人发起地图更新线程,以最新优化后的地图更新机器人端的局部地图。本文设计的基于边缘计算的VSLAM 实现方案的总流程如图3 所示。

图3 基于边缘计算的VSLAM 实现方案的总流程图

3.2 移动机器人端实现方案

在本文的实现方案中,ORB-SLAM2 算法解耦后,跟踪线程运行在移动机器人端。为了使跟踪线程能独立运行,移动机器人端引入了局部地图。在跟踪线程中,机器人通过深度相机采集环境的图像信息,基于局部地图求解和优化图像位姿,实现机器人的定位跟踪、新关键帧的创建和局部地图向前扩展的功能。本文采用特征点法求解图像位姿和局部地图的光束法平差(bundle adjustment,BA)优化图像位姿。特征点法提取的特征点数目和种类以及BA 中包含的图像帧数和地图点数直接影响跟踪线程的计算量[18-19]。本文经过反复实验验证,设定每帧图像提取500 个ORB 特征点、局部地图包含5 帧关键帧及其生成的地图点。当满足关键帧创建条件时,即当前帧包含的所有地图点中,新生成的地图点占比大于75%时,则把当前帧创建为关键帧,并将带有位姿的关键帧图像发送给边缘计算端。

当移动机器人端收到来自边缘计算端的局部地图更新消息时,首先进行更新必要性检查,即如果自上次局部地图更新以来没有创建新的关键帧,则实际上地图没有更新,就不执行地图更新操作。移动机器人端实现局部地图更新操作的时间需要受到限制,以保证跟踪线程能够正常运行,因此移动机器人端局部地图的大小受到地图更新时延的限制。

3.3 边缘计算端实现方案

在本文的实现方案中,边缘计算端除运行原来ORB-SLAM2 的局部建图和回环检测与优化线程外,还运行地图更新与重定位线程。边缘计算端接收来自机器人端的带有位姿的关键帧,创建新的地图点,同时进一步优化关键帧图像的位姿,并定期向移动机器人发送最新创建的全局地图中的一部分及优化后的位姿,对机器人端的局部地图进行更新。

3.3.1 关键帧图像及其位姿的处理方案

为了使边缘计算端启动解耦后ORB-SLAM2 算法的局部建图和回环检测线程,边缘计算端根据上传的关键帧图像及其位姿建立初始的计算条件。局部建图线程通过关键帧的可视地图点和关键帧之间的连接关系,扩展全局地图和维护共视图、生成树。回环检测通过比较关键帧之间的词袋向量值,确定回环信息。因此,本文首先提取关键帧图像的特征点,然后通过特征点确定关键帧的可视地图点和词袋向量值,最后匹配全局地图建立连接关系。

边缘计算端对每个关键帧提取1000 个ORB 特征点,以提高环境地图的丰富度,增强关键帧之间的连接关系和词袋向量值的准确性。同时,利用上传的关键帧位姿信息,采用领域匹配法,指导并缩小匹配的范围,减少匹配时间、加快匹配速度。

3.3.2 局部地图更新方案

本文设计的边缘计算VSLAM 系统中,因移动机器人的计算资源和存储空间受限,在机器人端引入的局部地图体量很小,用于前一次更新后到下一次更新前机器人短时间实时定位功能。为了使局部地图与边缘计算端的全局地图保持一致,在边缘计算端设置局部地图的更新模块。

从提高机器人实时定位跟踪的精度考虑,局部地图更新频率越高,定位跟踪的精度也越高,但是更新频率越高对网络带宽资源需求就越大。本文采用运动距离和时间间隔相结合的更新方法,即边缘计算端发起一次局部地图更新,在完成2 帧新关键帧的处理之后或者2 次局部地图更新时间间隔超过了5 s 时,发起一次更新功能。局部地图更新的内容包括全局地图中5 个最新关键帧的位姿及其所有的地图点。通过距离和时间的控制,实现及时更新机器人端局部地图和减少网络带宽资源占用的目标。

更新移动机器人上的局部地图对于重叠部分直接进行更替,而未被边缘计算端接收或者优化的关键帧和地图点一般采用2 种方式,即地图优化法和地图替换法。地图优化法通过BA 的方式,把关键帧位姿和地图点,融合成为一张局部地图。地图替换法首先计算边缘计算端传回的最新关键帧的位姿与移动机器人端对应关键帧的相对位姿,然后对未优化的关键帧位姿和地图点叠加该相对位姿,实现地图的替换。由于地图优化法计算复杂,计算资源的开销相对较大,因此,本文采用地图替换法实现局部地图更新。

3.3.3 重定位功能实现方案

在边缘计算VSLAM 系统中,重定位功能分为2种:一种是机器人与边缘计算通信正常情况下传统的重定位功能,另一种是机器人端跟踪正常。当机器人与边缘计算端之间的通信延迟过大或发生通信异常情况时,通信恢复后边缘计算端会有重定位功能。

在通信正常的情况下,当机器人端的定位跟踪失败时,机器人端立即向边缘计算端发送重定位请求,即向边缘计算发送不带位姿的当前帧图像,同时新建一个视觉里程计线程。之后相机图像帧输入时,机器人首先尝试在本地局部地图中重定位,若重定位失败,则进入新建视觉里程计线程中计算图像之间的信息冗余度,当冗余度低于设定值后,再次发送重定位请求。边缘计算端接收到机器人端的重定位请求后,按照相同的关键帧处理方式建立初始计算条件,在局部建图线程计算出关键帧的位姿之后,则立即进行一次机器人端的局部地图更新,以便移动机器人可以尝试从局部地图中计算出当前最新的图像的位姿信息。

当机器人与边缘计算端间发生通信故障时,边缘计算端不能接收新关键帧。当通信恢复后,若机器人已移动了一段距离,则会因为边缘计算端接收到的关键帧信息难以建立初始的计算条件,而造成边缘计算端的重定位失败。本文中,当重定位失败时,增加采用带位姿图像的重定位方法,即采用机器人端视觉里程计计算的图像位姿,作为重定位后图像的位姿,在该位姿的基础上生成地图点,完成重定位功能。

4 实验结果及分析

为检验本文设计的VSLAM 方案的有效性,构建了由机器人端与边缘计算端构成的实验环境。机器人端计算机和边缘计算端计算机的硬件配置分别为:Intel Core i7-4650U CPU@1.70 GHz、8 GB 内存和Intel Xeon E5-1620 CPU@3.60 GHz、48 GB 内存;2 台计算机在软件上均搭载Ubuntu16.04 操作系统与ROS Kinect Kame 机器人操作系统。基础网络设备使用百兆接口的斐讯智能路由器K2,连接机器人端和边缘计算端。使用TUM 数据集中的4 个序列数据验证边缘计算VSLAM 系统的实时性、精度和鲁棒性。四个序列数据分别是fr1/desk、fr1/desk2、fr1/floor 和fr1/room,其中的fr1/desk 和fr1/desk2分别有573 帧和620 帧办公桌区域的环境信息,fr1/floor 有1227 帧具有相似规律纹理的地板区域环境信息,fr1/room 有1352 帧绕办公室一周区域的环境信息。

4.1 边缘计算VSLAM 系统的实时性

为了检验边缘计算VSLAM 系统的实时性,分别进行边缘计算VSLAM 系统中图像处理速度和由机器人机载计算机运行ORB-SLAM2 算法全部功能的图像处理速度的实验,针对TUM 数据集中4 个序列数据的帧最大处理时间和帧平均处理时间如图4和图5 所示。图4 表明,边缘计算VSLAM 系统的一帧图像最大处理时间都小于33 ms;机器人运行ORB-SLAM2 算法全部功能的一帧图像最大处理时间都大幅超过33 ms。图5 表明,边缘计算VSLAM系统对4 个序列数据保持相对稳定的帧平均处理时间;机器人运行ORB-SLAM2 算法全部功能时,帧平均处理时间随序列数据的不同有较大的变化。

图4 一帧最大处理时间

图5 一帧平均处理时间

实验结果表明,边缘计算VSLAM 系统能够实时处理采样频率为30 Hz 的深度相机的图像数据,并且其实时性受环境变化的影响小。因此,边缘计算VSLAM 系统的实时性得到有效保障,即计算资源受限的移动机器人具备了实现VSLAM 的能力。

4.2 边缘计算VSLAM 系统的轨迹精度

为了验证边缘计算VSLAM 系统的轨迹精度,本文采用文献[20]中比较估计轨迹和地面真实轨迹之间的绝对距离的绝对轨迹误差计算方法,针对4 个序列数据表示的3 种不同情境进行实验。其中由fr1/desk 和fr1/desk2 序列表示的第1 种情境,环境范围小、纹理丰富,真实轨迹速度变化平缓;由fr1/room 表示的第2 种情境,环境范围大、纹理丰富,真实轨迹速度变化平缓,实现回环的时间较长;由fr1/floor 表示的第3 种情境,环境范围大、纹理单一,真实轨迹中存在速度急剧变化的情况。边缘计算VSLAM 系统中机器人的轨迹、ORB-SLAM2 算法全部功能由机器人机载计算机执行的轨迹以及由边缘计算VSLAM 系统中机器人端单独运行生成的轨迹的误差情况如表1 所示。

表1 绝对轨迹误差对比表

实验结果表明,边缘计算VSLAM 系统的轨迹误差与机器人执行ORB-SLAM2 算法全部功能的轨迹误差几乎没有差别,既可以在良好的环境下实现有效的SLAM,也可以在困难的环境下实现有效的SLAM。

从表1 中可以看出,当发生通信故障、没有边缘计算端支持时,机器人端单独跟踪时的轨迹误差明显大于边缘计算VSLAM 系统的轨迹误差。但是,在小范围、环境纹理丰富、实际轨迹变化平缓的环境下,没有边缘计算端支持的机器人端,也能够以一定的精度独立继续工作。

实验结果表明,边缘计算VSLAM 系统中机器人端与边缘计算端的有效协作为高精度的轨迹估计提供了保证。在网络通信正常的情况下,机器人端的定位结果为边缘计算端提供更好的位姿参考值;在网络通信故障时,机器人端能保持一定的轨迹定位精度。边缘计算端的全局地图优化、回环检测与局部地图更新功能提高了机器人端的定位精度,尤其对于大范围、纹理单一、实现回环时间较长的SLAM,改进效果更明显。因此,边缘计算VSLAM系统能以更快的速度实现与原ORB-SLAM2 算法相同精度的SLAM 过程。

4.3 边缘计算VSLAM 系统的鲁棒性

为了检验边缘计算VSLAM 系统的鲁棒性,本文从机器人跟踪失败后实现重定位的频次与位置正确性和重定位的快速性方面进行实验。重定位的频次与位置正确性实验情境是环境范围大、纹理单一,真实轨迹中存在速度急剧变化的fr1/floor 序列数据,实验结果如图6(a)、(b)和(c)所示。图6(a)显示,在SLAM 过程中,机器人端发生了3 次重定位,在边缘计算端支持下机器人的第1 次和第3 次重定位迅速实现,机器人的轨迹跟踪功能基本没有受影响。图6(b)和(c)显示,边缘计算VSLAM 系统和ORB-SLAM2 算法的SLAM 过程,两者在相同位置各发生了1 次重定位,重定位后轨迹位置和轨迹跟踪正确。因此,边缘计算VSLAM 与原ORBSLAM2 算法具有同样鲁棒性。

图6 重定位实验结果

检验重定位快速性的实验情境是环境范围大、纹理丰富、真实轨迹速度变化平缓、实现回环的时间较长的fr1/room 序列数据。实验过程中设定发生网络通信故障,检验机器人端与边缘计算端协作恢复定位的能力。设定在fr1/room 序列数据中第500 帧~第800 帧之间发生网络通信故障,这一期间边缘计算端无法收到机器人端发送的关键帧,并假定第800帧图像在1~500 帧图像建立的地图中找不到任何关联关系,无法通过ORB-SLAM2 原有的重定位方法完成重定位。实验结果如图6(d)、(e)和(f)所示。图6(d)所示为网络通信正常情况下边缘计算VSLAM 建立的环境地图与跟踪轨迹。图6(e)显示为网络通信故障结束后,边缘计算VSLAM 系统在第800 帧时立即恢复了定位和建图,这是因为本文改进方法中机器人端向边缘计算端提供的关键帧位姿信息的作用。图6(f)是ORB-SLAM2 算法的重定位情况,在第997 帧图像的位置才恢复正确的位姿定位。

因此,本文设计的边缘计算VSLAM 系统具有比原始ORB-SLAM2 算法更强的重定位能力,并且能够在原始的ORB-SLAM2 算法无法重定位的位置,实现快速准确的重定位。

需要指出的是,根据实时性比较结果,如果由实验中的机器人运行ORB-SLAM2 算法的全部功能,则ORB-SLAM2 算法难以实时运行,轨迹精度和重定位能力都会下降。在检验边缘计算VSLAM 算法的轨迹精度和重定位能力时,ORB-SLAM2 算法的性能数据是没有考虑实时性要求下的数据,如果考虑实时性要求,ORB-SLAM2 算法的性能会明显下降,因而,边缘计算VSLAM 的性能更具有优势。

5 结论

为使计算资源受限的移动机器人具备实时视觉SLAM 能力,本文基于边缘计算设计了一种移动机器人端与边缘计算端协同工作的VSLAM 方法。通过在移动机器人端引入局部地图,实现机器人的实时位姿跟踪功能,并且当机器人与网络失去联接时仍能继续工作。机器人端向边缘计算端发送带有视觉里程计定位结果的关键帧数据,提高了边缘计算端全局SLAM 的性能和系统重定位的能力。边缘计算端并行实现运算量大、存储资源需求大的全局地图构建、回环检测和地图优化等功能,提高了整个VSLAM 系统的实时性。边缘计算端通过更新机器人端的局部地图,保证局部地图和全局地图的一致性。本文采用TUM 数据集对所设计的边缘计算VSLAM 方案进行了实验验证,结果表明,本文方法具有更好的实时性、轨迹精度和更强的鲁棒性。

猜你喜欢
关键帧移动机器人位姿
移动机器人自主动态避障方法
基于改进关键帧选择的RGB-D SLAM算法
基于Twincat的移动机器人制孔系统
基于共面直线迭代加权最小二乘的相机位姿估计
基于CAD模型的单目六自由度位姿测量
基于相关系数的道路监控视频关键帧提取算法
小型四旋翼飞行器位姿建模及其仿真
基于聚散熵及运动目标检测的监控视频关键帧提取
基于几何特征的快速位姿识别算法研究
极坐标系下移动机器人的点镇定