APP下载

基于ROS机器人的自主探索建图算法研究

2022-09-27彭绪富

关键词:建图移动机器人边界

鲁 翔,彭绪富,2

(1.湖北师范大学 计算机与信息工程学院,湖北 黄石 435002;2.湖北师范大学 文理学院,湖北 黄石 435000)

0 引言

随着科学技术的发展,人工智能的兴起,移动机器人迅速发展[1],目前,机器人已经广泛应用在工业、农业、医疗、服务、军事、娱乐日常生活等多个领域,甚至在危险、肮脏和枯燥的环境中也有很好的应用[2]。然而在很多情况下,机器人工作空间的信息都是未知的,比如在矿井检测、深海探索、危险救援[3]等工作环境下,人类无法进入其中探测情况,所以需要移动机器人进入对其进行探测,构建出环境的地图。只有在具备了先验地图的情况下,才能进行相应的导航、路径规划、避障和其他操作[4]。现在大多数的建图算法,例如Hector SLAM、Karto SLAM和Cartographer[5,6]等,都是通过人工手动、使用键盘或者游戏杆进行控制机器人移动,通过激光雷达扫描地图进行构建地图[7]。在面对大而复杂的环境中,会比较消耗人力物力,因此机器人的自主探索建图至关重要[8]。

本文提出一种基于边界探索的自主探索建图算法,结合了Frontier_exploration和Gmapping算法,机器人操作系统(Robot Operating System,ROS)下实现指定区域建图,分别通过仿真和实验验证了该算法建图效果良好。

1 算法原理分析

从ROS系统出发,实现指定区域建图,主要实现运用Gmapping算法和Frontier_exploration算法进行定位建图与边界探索,通过move_base包发布命令实现机器人移动。

1.1 机器人操作系统ROS

ROS是运行在Ubuntu等主操作系统上的次级操作系统,具有分布式的开源软件架构,支持C++、Python等多种编程语言,集成了用于机器人视觉开发的OpenCV库,拥有SLAM地图构建和导航功能包。ROS可以使用标准化机器人描述格式(URDF)建立自己的机器人模型,也可以使用Gazebo仿真软件,建立理想的模拟环境,在模拟环境中,驱动机器人进行避障,路径规划,地图构建和导航等仿真实验[9]。

1.2 Frontier_exploration算法

Frontier_exploration全称Frontier-based exploration,基于边界探索方法,由Yamauchi[10]首次提出,核心思想是移动机器人根据目前已知的环境信息,通过传感器扫描周围环境找寻未知区域和空闲区域的交界处(即边界),来获取更多环境信息[11]。Frontier_exploration算法通过证据栅格的方式来表示地图。根据传感器获得的信息,判断当前环境是否被占用,可以将所有的区域分为:未知区域、空闲区域、障碍区域。三种区域地图显示如图1:

图1 区域比较图(黑色部分代表障碍区域,灰色部分代表未知区域,白色部分代表空闲区域)

带有F标志的处于未知区域和空白区域的交界处,为边界区域,机器人通过选择边界长度大于自身阈值且距离最近的边界区域,来进行下一步的探索[12]。

1.3 Gmapping算法

Gmapping是基于滤波SLAM框架的常用开源SLAM[13,14]算法。由于Gmapping算法可以实时构建地图,在构建小场景地图所需的计算量较小且精度较高[15],本文实验环境为室内环境,因此采用该算法作为实验定位与建图算法。

1.4 move_base包

move_base是ROS下关于机器人路径规划的中心枢纽。它通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航。

2 系统结构

结合Frontier_exploration算法、Gmapping算法实现指定区域建图,建图流程如图2所示:

图2 建图流程图

1)结合rviz可视化界面,指定机器人要探索的目标区域(注:目标区域为一个封闭图形)。

2)开始使用Gmapping算法定位与构建局部地图,探索检测未知区域和空闲区域的交界处,作为边界。

3)设置一个阈值,阈值一般设置为机器人的直径,判断检测到边界的长度与阈值大小,如果边界长度小于阈值,则为无效边界,放弃该边界并记录;如果边界长度大于阈值,则将该边界加入待探索边界组。

4)在待探索边界组中,采取距离最近原则探索边界,使用move_base包控制移动机器人,在探索该边界的同时更新地图,再继续移动机器人,查看是否仍有未探索的边界,若有,则返回第二步继续进行,直至再无未探索边界后,建图完成。

3 实验过程及分析

3.1 硬件系统

采用基于两轮差速驱动的Turtlebot3平台,如图3所示。硬件搭配有华夫板底盘、基于Arduino的开源控制板OpenCR、树莓派3B+、存储卡、计算机、编码器、IMU(惯性测量单元)、360°激光传感器LiDAR等器件。

图3 Turtlebot3机器人

3.2 软件系统

分别在计算机和树莓派3B+上安装Ubuntu16.04系统和Ubuntu mate16.04 系统,配上相应版本的ROS Kinetic Kame系统,通过SSH服务使得计算机与树莓派进行信息交互。指定区域建图算法建图时,通过接收激光传感器扫描环境信息数据、里程计数据和IMU数据,实现初步地图建立与定位,通过rviz可视化软件指定建图区域,通过move_base包发布速度指令通过OpenCR电路板发布到机器人底盘,从而控制机器人移动和建图。

3.3 仿真及结果分析

基于Gazebo仿真平台,建立了一个如图4右侧的仿真环境,仿真环境为一个六边形加九个圆柱组成,分别对Gmapping算法和本文提出的指定区域建图算法进行模拟仿真,图4和图5分别展示了两种算法建图的过程,Gmapping算法通过键盘控制机器人移动扫描环境建图,后者通过rviz可视化软件,运行Publish Point来给定探索区域进行建图,建图完成后两种算法保存的地图对比如图6所示,建图所需时间如表1所示。

图4 Gmapping算法建图

图5 指定区域建图算法建图

表1 两种算法建图时间对比分析

图6 两种算法仿真建图结果对比

对比仿真建图的结果和建图所需时间对比,在环境地图较规则的时候,本文提出的指定区域建图算法和常用的Gmapping算法建图效果无差别,然而本算法建图时间更短,而且只用给定一个初始探索的区域,后续建图便不需要人手工控制,更方便。

3.4 实验及结果分析

在此搭建一个总尺寸为4×4m小型实验环境,如图7所示,为了排除人为走动对建图的影响,实际机器人探索建图的环境为红线以上的部分。

图7 实验环境地图

两种算法建图过程和仿真,对比图8中两种算法结果,可以看出两种算法对环境建图效果大致上都能满足后续导航的需要,而本算法建图时间更短,但是在障碍物细小且过多的情况下,建图效果不如Gmapping算法,在这些地方容易出现自转不前等情况。

图8 两种算法实验建图结果对比

4 结论

本文提出了一种基于边界探索的指定区域建图算法,从仿真和实际环境下,对比Gmapping算法建图效果,两种算法都能够完整地探索环境并建立地图。在较为宽敞且规则的环境下,本文算法在建图效率更好。Gmapping算法因为在人为控制下,速度过快或者过慢都会影响建图的效果,有时需要多次探索重复的地方,本文算法则不会出现该问题。但是在过于复杂且障碍物过多的情况下,本文算法建图效果略差,且有时会在原地打转,这也是后续需要优化的重点之一。

猜你喜欢

建图移动机器人边界
移动机器人自主动态避障方法
“智能网联汽车高精度建图、定位与导航”专栏客座主编简介
视觉同步定位与建图中特征点匹配算法优化
拓展阅读的边界
探索太阳系的边界
意大利边界穿越之家
基于三轮全向机器人的室内建图与导航
论中立的帮助行为之可罚边界
基于Twincat的移动机器人制孔系统
机器人室内语义建图中的场所感知方法综述