兴趣区域地图提取与ROS的多机器人SLAM地图合成研究
2022-03-01范平清
李 森,范平清
(上海工程技术大学 机械与汽车工程学院,上海 201620)
0 引言
随着科技的发展,移动机器人越来越便宜,功能也越来越强大。如今,处理能力和功能的提高,允许更多的场合去使用。以往由一个机器人完成的任务现在可以分配给多个机器人配合完成,这样不仅提高了工作效率,也可以提高系统的鲁棒性。但是,在多机器人协调过程中,将多个机器人的局部地图合成为一张完整的全局地图,是一个关键性任务。
针对多机器人同步定位与建图(SLAM)地图融合问题的研究,一般可以分为两个方面:
一是在图像的基准上对局部地图进行合成。如,文献[5]提出了基于霍夫变换的快速地图融合方法,通过霍夫变换,并利用两张地图霍夫谱的相关性,找到最佳的旋转和平移变换,进行融合。该方法可以将两张有250 000个网格的地图在500ms 内合成。文献[6]中提出利用SIFT 变换来检测两张地图的不变特征,计算两张地图的变换。
另一方面是基于数学的度量和优化。如,文献[7]提出了一种启发式的搜索方法,引导局部地图的重复区域进行地图融合。以上方法都是对已有的局部地图进行融合,无法在机器人构建局部地图时,进行实时的地图融合。而文献[8]中提到,实时建图与融合的方案更具应用价值,并提出了一种利用云端对不同机器人的局部地图进行融合的方法。
本文针对实时地图融合问题,提出一种兴趣区域地图提取与ROS(Robot Operating System)的多机器人SLAM地图融合方法。通过局部栅格地图兴趣区域提取,对局部栅格地图进行优化处理,得到有效区域的最小矩形栅格地图,然后利用霍夫变换地图融合方法并结合ROS,实现多机器人地图的快速实时合并。
1 系统设计与框架
为了提高系统的鲁棒性,在设计时,各个机器人之间采用分布式的控制,并且为了减少单个机器人处理过多的信息,采用集中处理的方式。系统框架基于ROS 进行搭建,整体框架如图1 所示。具体实现步骤如下:
图1 整体框架Fig.1 Overall framework
单个机器人通过Gmapping 算法构建局部地图,并将地图数据传送到地图预处理节点。
由地图预处理节点,通过兴趣区域提取算法,对局部地图进行处理,剪切为最小矩形,并将处理后的地图数据发送到设置的信息共享节点。
信息共享节点通过ROS 提供的通信工具包multimaster_fike 设置为整个系统的共享节点,并由该节点将地图数据发送给中央处理机器人。
中央处理机器人对接收到的数据进行处理,将局部地图合成全局地图。
2 兴趣区域地图提取
对于二维栅栏网格地图融合,通常分两个步骤:首先是地图的对齐,然后将对齐的地图合并。其中最主要的步骤即为对齐问题。文献[5]中是基于霍夫变换求得两张地图的对齐关系。但该方法对图像融合的准确度依赖于霍夫变换的计算速度与准确度,并且受到SLAM 算法生成图像因素的影响。ROS 社区中常用的二维占用网格地图(Occupancy Grid Map,OGM),如图2 所示的一个608∗480的二维栅格地图。图中白色部分是机器人可以移动的自由区域,黑色部分是机器人不能移动的占用区域,灰色部分是未被确认的未知区域。激光雷达扫描区域以外的灰色区域,对地图合成无用,会浪费计算的代价。因此,必须对地图进行裁剪,将未知部分去除。
图2 完整原始栅格地图Fig.2 Complete original grid map
2.1 二维栅栏地图构建原理
为获取兴趣区域地图,首先要求得单个占用栅格在地图中的具体表示。每个栅格有2 种状态:空闲(free)和被占据(occupied)。各栅格之间相互独立,可以单独估计每个格子被占据的概率。单个占用网格构建的黄金概率,是给定的数据计算整个地图的后验概率:
式中,为地图;为时刻的测量值;为机器人位姿定义的路径。
通常栅栏网格地图被划分为有限多个栅栏单元。
其中,m为第个单元格。如果该单元格被占用其值为“1”,否则为“0”。
标准的占用栅格方法,将构建地图问题划分为独立问题,对所有的栅格单元m建立后验概率,整个地图的后验概率表示为:
根据贝叶斯公式可得第个栅格m的占用概率为:
第个网格的未被占用概率为:
将式(4)与式(5)的比值取对数可得:
可将上式表示为:
其中,(m)表示栅格m占用的概率。
在实际编程的过程中,当其以ROS 消息发布时,会被重新定义为占有度,是[0~100]之间的整数。越接近“0”就越接近移动自由的区域,而越接近“100”就越是不可移动的已占用的区域。此外,“-1”是定义为未知区域。地图生成根据设置的阈值,当小于阈值时被定义为空闲,在地图上表示为白色,高于阈值时被定义为占用,地图上表示为黑色,而未知区域则被定义为灰色(如图2)。
2.2 兴趣区域地图提取
兴趣区域地图提取原理是根据栅栏地图的数据值进行的。ROS 构建的地图信息可用图3 方式表示。将地图中边界灰色未知区域的地图剪切,可以通过将ROS 发布的信息矩阵中,每一行从上到下,以及从下到上的部分中只有-1的行去除。同理,也要将每列从边界向内的部分进行删除,得到一个包含已知区域和部分未知区域的优化地图。
图3 ROS 发布地图的信息矩阵Fig.3 Information matrix of map released by ROS
栅栏地图可以表示为一个矩阵,对矩阵中的数据进行编码。编码从每一行开始,编码表示如图4 所示。
图4 ROS 发布地图信息矩阵编码Fig.4 ROS publishes map information matrix coding
根据以上定义,可以利用逐行遍历得出所需矩形的边界。已知栅格地图,其行数表示为,列数表示为。需要获取的值为:最左边第一个非1 栅格所在的列数、最右边第一个非1 栅格的列数、最上方第一个非1 栅格所在的行数、最下方第一个非1 栅格所在的行数。
算法实现步骤如下:
初始化地图及各边界值:1,1,1,1,0。
计算地图的栅格个数。
遍历地图的各个栅格,判断当前栅格是否为已知区域,如果为已知区域,则计算更新各边值。
反复执行步骤3,直到当前栅格编号大于为止。
根据各边值,计算剪切后的地图1 算法流程图如5 所示:
图5 算法流程图Fig.5 Algorithm framework
图6 是一个275∗177的地图,从中可以看出,经过算法优化过的地图,已去除了对合成无影响的区域,仅保留所需区域的最小矩形局部地图。
图6 优化后的局部地图Fig.6 Optimized local map
3 仿真实验
本次仿真实验采用一台笔记本电脑(R720-15IKBN)、一台台式机,以及一个水星(MW325R)路由器。在gazebo 中搭建仿真环境,并在两台计算机中分别使用搭载了激光雷达的husky 小车进行仿真。两台小车分别利用基于RBPF的Gmapping 算法,构建自己的局部地图。搭建的Gazebo 仿真环境如图7 所示。
图7 Gazebo 仿真环境Fig.7 Gazebo simulation environment
两个机器人各自构建的局部地图,以及实时合成的全局地图,可以通过ROS 提供的可视化工具RVIZ 来显示。与前面的定义相同,灰色区域代表未知区域,白色区域表示空闲,黑色区域表示障碍物。假设:进行仿真的台式机中的机器人为R1,笔记本中的仿真机器人为R2。在进行感兴趣区域提取前的效果如图8 所示。
图8 未提取前的效果Fig.8 Effect before extraction
兴趣区域提取后的合成效果,如图9 所示。
图9 提取后的效果Fig.9 Effect after extraction
从以上结果对比可以看出,在进行兴趣区域提取前,当局部地图的重叠区域达到80%以上时,地图可以基本合成,但是边界区域并不能完全对齐,并且地图的融合成功率较低。
在进行兴趣区域提取后,当局部地图的重叠区域达到60%时,地图便可以合成,并且边界区域对齐比较完整。对地图合成的成功率也有较大的提升。
为了验证所提出的兴趣区域地图提取与ROS的多机器人SLAM地图合成系统的高效性、实时性,以及图像感兴趣区域提取方法对合成效果的积极影响。对兴趣区域地图提取前和提取后实验成功率对比结果如图10 所示。
图10 局部地图处理前后对比图Fig.10 Comparison before and after local map processing
在实验中,对仿真电脑在进行地图合成与不进行地图合成时,记录180 s 内的CPU 占用率。系统CPU 利用率对比结果如图11 所示。
图11 CPU 占用率对比图Fig.11 CPU occupancy comparison chart
由此可见,将地图融合进行集中式处理可以降低单个机器人所需要处理的信息量,降低机器人运行的CPU 占用率。
4 结束语
针对单机器人在大环境中建图效率不足的问题,本文提出一种实时多机器人地图的方法,该方法利用快速融合地图的霍夫变换方法,并对单机器人构建的局部地图进行兴趣区域提取。实验证明,该方法可以提升地图融合的准确性与融合效率。同时,该设计利用ROS的分布式节点设计,将地图和节点放在单独的中央处理机器上进行运行,极大的降低了单个机器人所需处理的任务量,使多机器人系统更为简洁。