基于ROS的服务机器人的两种建图方法比较研究与实践
2020-04-10廖春蓝
摘 要:文章基于ROS平台,采用激光雷达和里程计对室内环境信息进行采集,在服务机器人上实现了Gmapping和Hector SLAM两种算法的地图创建。通过实验对比,Gmapping算法构建的地图跟真实环境更为接近,在一般低特征环境下建图效果优于Hector SLAM算法。
关键词:机器人操作系统;地图创建;建图算法
中图分类号:TP242 文献标识码:A 文章编号:2096-4706(2020)01-0160-03
Abstract:Based on the robot operating system,this paper uses lidar and odometer to collect indoor environmental information,and implements map creation of Gmapping and Hector SLAM algorithms on the service robot. Through experimental comparison,the map constructed by Gmapping algorithm is closer to the real environment,and the map is better than Hector SLAM algorithms in general low feature environment.
Keywords:robot operating system;map creation;map building algorithm
0 引 言
机器人学的进步与应用是20世纪自动控制最有说服力的成就。进入21世纪,机器人越来越深入生产、生活和社会的方方面面。服务机器人是机器人家族中的一个年轻成员,应用范围十分广泛。服务机器人要能为人类服务,就必须能在未知区域自由移动、自主导航,而对未知环境的精确建图是一个非常关键的环节。因此,移动机器人建图方法也成为人们研究的热点之一。
机器人操作系统Robot Operating System,简称ROS,从本质上来说是一个十分适用于机器人编程的框架,这个框架把原本松散的零部件耦合在一起,为它们提供通信架构。ROS提供了能应用于不同的机器人的各种功能包,操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景[1]。本文基于ROS平台,采用激光雷达和里程计对室内环境信息进行采集,实现了Gmapping和Hector SLAM两种算法的地图创建。
1 机器人地图的分类
目前,机器人学中的地图有四种表示方法:栅格地图、特征地图、直接表征地图和拓扑地图。
栅格地图又被称为占据栅格地图,它实際上就是把环境划分成一系列栅格,每个栅格用一个相应的占据变量来描述,该变量的值表示该栅格被占据的概率。特征地图是用有关的点、直线、面等几何特征来表示外部环境,建图的数据存储量和计算量都较小,但往往不能反映一些必须信息,常用于视觉vSLAM算法中。而直接表征地图类似卫星地图,它直接用传感器读取的数据经过简单处理来构建机器人的位姿空间,省去了特征或栅格表示等中间环节,相对更加直观。拓扑地图最为抽象,它把室内环境表示为拓扑结构图,图中带结点和连接线。其中的结点表示门、拐角、电梯等重要位置点,边线表示结点间的连接关系。
相比之下,特征地图容易漏掉一些障碍物信息,直接表征地图的数据存储量太大,拓扑地图又不能用于SLAM。而栅格地图既能表示环境中的很多特征信息,又不直接记录来自于传感器的原始数据,是空间和时间消耗的最优组合。因此,栅格地图是目前机器人中最为广泛使用的地图,机器人可以用栅格地图来进行路径规划和导航。
2 Gmapping建图算法
Gmapping算法是目前应用最广的2D SLAM方法,它基于RBPF粒子滤波算法,通过获取激光雷达和里程计的信息来进行建图[2]。为了获取好的计算结果,RBPF算法需要大量的粒子来进行计算,这样就会大大增加计算的复杂程度。因此,Gmapping算法并不适合构建大场景地图。RBPF算法的重采样过程存在粒子耗散问题。而Gmapping算法引入了自适应重采样技术,改进了建议分布函数,并选择性地重采样粒子,减小了粒子耗散问题。Gmapping算法有效地利用里程计来提供机器人的位姿先验,对激光雷达的频率要求不高。Gmapping算法的整体流程图如图1所示。
在具体的实现过程中,Gmapping_SLAM软件包位于ros-perception组织中的Slam_Gmapping仓库中。其中的Slam_Gmapping是一个软件包集Metapackage,它依赖了Gmapping,而算法的具体实现都在Gmapping软件包中,该软件包中的Slam_Gmapping程序就是在ROS框架下运行的一个SLAM节点。Gmapping的作用是根据激光雷达和里程计(Odometry)的信息,对环境地图进行构建,并且对自身状态进行估计[3]。Gmapping算法的输入包括激光雷达和里程计的数据,而输出为自身位置和地图。
Gmapping_SLAM算法无回环,并且非常依赖里程计(Odometry),无法适用于空中飞行器及地面不平坦区域,但在长廊及低特征场景中建图效果好。
3 Hector SLAM算法
Hector SLAM算法利用高斯牛顿的方法来解决scan-matching问题,获得激光点集映射到已有地图的刚体变换,为避免局部最小而非全局最优,使用多分辨率地图[4]。Hector SLAM建图法的鲁棒性较好,对传感器的要求较高。因为该算法无法利用里程计的信息,所以它需要激光雷达具有较高的更新频率和较小的测量噪声。Hector SLAM算法建图的整体流程图如图2所示。
在实际的建图过程中,需要机器人的运动速度控制在比较低的情况下,建图的效果才会比较理想,这也是该算法没有回环(loop close)的一个后遗症。但是正是不需要里程计,使得空中飞行器和地面不平坦区域的建图能够得以实现[5]。
为对比分析两种典型的移动机器人建图方法的效果,我们用同一台ROS移动机器人利用不同算法对实訓室进行了多次建图,其建图结果如图3、图4和图5所示。
对比图3~图5三个地图可以看出,在相同的激光雷达参数条件下,在平坦的复杂特征环境中,利用Gmapping算法构建的地图跟真实环境最为接近,地图比较完整,但是边界不够清晰,边界线较粗;利用Hector SLAM算法快速移动机器人构建的地图相对比较混乱,地图不完整;利用Hector SLAM算法低速移动机器人构建的地图也比较完整,边界比较清晰,但是地图所示的两个房间之间偏移了一定角度,出现了错位,跟真实环境存在一定偏差。
造成上述结果的原因是,Gmapping算法基于RBPF粒子滤波,因为RBPF粒子滤波比较成熟稳定,因而Gmapping算法也比较稳定,建图效果一般比较好。但在比较复杂的特征环境中,例如本实验的实训室环境,粒子计算的复杂度大大增加,因此会出现边界不够清晰,边界线较粗的情况。Hector SLAM算法利用高斯牛顿的方法来解决scan-matching问题,在机器人快速移动的时候,激光雷达的数据点不够丰富,不能很好地进行迭代计算,因而会出现地图不完整的情况。
5 结 论
通过机器人实地建图,实验结果表明,Gmapping算法比较成熟稳定,构建的地图跟真实环境更为接近,在一般低特征环境下建图效果明显优于Hector SLAM算法。由于没有使用里程计,Hector SLAM算法对激光雷达要求更高,或者必须低速移动机器人,才能获得较好的建图效果。
参考文献:
[1] 杨亮,李文生,傅瑜,等.基于ROS的机器人即时定位及地图构建创新实验平台研制 [J].实验技术与管理,2017,34(8):99-103.
[2] 王权,胡越黎,张贺.基于ROS与Kinect的移动机器人同时定位与地图构建 [J].计算机应用研究,2017,34(10):3184- 3187.
[3] 柳俊城,李迪,翁潇文.基于激光信息的移动机器人SLAM研究 [J].自动化与仪表,2018,33(6):43-47.
[4] 陈卓,苏卫华,安慰宁,等.移动机器人SLAM与路径规划在ROS框架下的实现 [J].医疗卫生装备,2017,38(2):109-113.
[5] 高文研,平雪良,贝旭颖,等.两种基于激光雷达的SLAM算法最优参数分析 [J].传感器与微系统,2018,37(4):28-30+33.
作者简介:廖春蓝(1979-),女,汉族,四川宜宾人,专任教师,副教授,硕士,研究方向:服务机器人技术。