APP下载

基于ROS的室内移动机器人SLAM及导航功能的实现

2019-08-26李震张国忠谢峻松赖素晖马健鑫

山东工业技术 2019年22期

李震 张国忠 谢峻松 赖素晖 马健鑫

摘 要:本文以室内展览厅移动机器人的导航功能为研究背景,以机器人操作系统(Robot Operating System, ROS)为研究平台,针对移动机器人在室内场馆的定位、建图及导航问题进行研究。在研究过程中,使用了同步定位与地图构建(simultaneous localization and mapping,SLAM)算法之一的GMpping,实现了机器人定位与建图的功能,随后根据机器人操作系统的导航功能包组件完成了多点导航功能。根据最终的实景测试,验证了本文实现移动机器人导航功能的有效性。

关键词:机器人操作系统(ROS);同步定位与地图构建(SLAM);多点导航

DOI:10.16640/j.cnki.37-1222/t.2019.22.102

1 机器人SLAM及导航算法的研究现状

目前针对移动机器人导航的研究,主要包括GPS和基于增量式地图构建的方法,其中GPS在信号较差以及狭小的室内难以满足要求,故需借助移动机器人自身传感器对周围环境信息进行感知、构建地图,并利用地图进行导航。目前有关SLAM技术的研究主要包括视觉SLAM和激光雷达SLAM两种,视觉SLAM对光线有较高要求,考虑室内场所光线纹理问题,本文选用激光雷达进行导航。在未来,视觉、雷达及GPS的多传感器融合是主要研究趋势。

2 自主导航算法

2.1 本文主要解决问题

本文主要解决移动机器人领域中涉及的三大问题:定位、建图和导航,为移动机器人构建出室内展览厅的2D地图,并利用所构建的地图进行多点路径规划,完成导航功能。

2.2 SLAM算法的计算步骤

基于激光雷达的主流SLAM算法包括GMapping,Hector_slam和cartographer等,GMapping算法是目前室內场所中主要使用的一种SLAM算法,机器人在调用GMapping时需结合机器人底座的里程计信息,以保证良好的定位与建图功能。Hector_slam相比Gmpping而言不需借助机器人的里程计信息,故要求精度较高的激光雷达进行准确定位和建图,且更适合在地面颠簸的路段或者无人机升降中使用。本文选用GMapping算法对移动机器人进行地图构建,该算法的步骤如下。

步骤1:在初始状态下,在机器人周围放置粒子用来估计机器人的初始位姿。通常放置N个粒子,N由场地面积与地形确定,经验值通常为数百,每个粒子的权重记为1/N。

步骤2:根据所描述的机器人运动系统模型,在移动量(机器人的里程计信息)的基础上加上噪声,通过该方法移动各个粒子。

步骤3:基于所测量到的传感器信息,计算每个粒子的概率,并且通过反映这个值来更新每个粒子的权重值。

步骤4:利用所有粒子的位置、方向和权重值来计算加权平均值、中央值和最大权重的粒子值,并用这些估计机器人的姿态。

步骤5:去除权重小的粒子,以权重大的粒子为中心创建继承现有位姿信息特性的新粒子,保持粒子数N不变,并重复步骤2。

GMapping算法在ROS中调用时需接收到传感器信息,并将传感器信息/scan输入至GMapping进程中,同时键盘控制节点robot_teleop将速度与位置信息输入机器人控制核心节点robot_core,里程计(odom)接收到控制信息后发布到底座(base_link)的tf变换信息/tf,并传送至GMpping核心节点中。GMpping节点主要发布相关的地图信息,该地图为占据栅格地图。在地图服务节点中保存的地图信息包括pgm格式及yaml格式,pgm格式可将地图用黑白灰三色可视化,其中白色代表自由移动区域,黑色代表不可移动区域(如墙壁),灰色代表未被测出区域,yaml格式则使用描述型程序语言存储地图的信息,描述了包括pgm格式中的黑白灰区域以及地图分辨率等相关参数,在导航组件调用时会读取yaml格式中的相关地图信息,GMapping的输入输出如图1所示。

2.3 move_base组件模型

导航部分的实现主要使用ROS提供的move_base组件,如图2所示。正中间的节点move_base主要用于路径规划,在move_base中包含了global_planner,local_planner等插件,这些插件已在ROS中被集成好,可直接通过指令调用。amcl与map_server为可选用指令,其中amcl为蒙特卡罗自适应定位节点,可以通过机器人边导航边加载地图,map_server则可以使用SLAM中保存好的栅格地图进行导航。sensor transformer为传感器数据的坐标变换,即机器人底座到世界地图的变换,odometry则为机器人的里程计信息,sensor source为传感器提供的数据。输出的数据cmd_vel为速度(线速度和角速度)指令,控制机器人底盘移动。

move_base组件中的路径规划算法类型主要分为全局路径规划和局部路径规划。全局路径规划中使用A*算法,由global_planner插件提供,A*算法主要结合了Dijkstra和最佳优先搜索(BFS)算法,Dijktra算法主要使用传统的目标点遍历搜索的方法,效率较低且容易产生较多临时路径;而BFS算法可直接导向目标点,两种算法结合后形成的A*算法既保证了搜索的高效性也同时具备了路径规划的准确性[2]。局部路径规划中主要使用DWA算法,在move_base组件中对DWA算法也进行了进一步优化,传统的DWA中机器人被认为是一个质点,未考虑其形状大小,而在move_base中提供的costmap组件将障碍物均扩大一圈可以充分实现局部避障。在全局路径规划与局部路径规划的结合下,机器人可完成对目的地坐标的自主路径规划,同时也可规避局部障碍物,保证移动机器顺利正常完成导航功能。

3 实验分析

在以树莓派为上位机,上位机内装有Ubuntu系统及ROS的移动机器人中,配置与本文相关的SLAM及导航算法,在ROS的Rviz工具中运行测试,在实际场景下对本文进行验证。

首先移动机器人通过GMpping算法加载环境地图,在rviz中获取地图坐标,所获得的三个坐标为(0.708,-0.819,0.00247)、(1.58,-1.59,0.00247)、(1.96,-1.75,0.00247)。其中第一个点为原点,第二与第三个点为目标点。使用move_base插件调用地图,在配置文件中将目标点输入,此时移动机器人可根据所给出的三个坐标点进行路径规划并自主移动探索地图,过程如图3a~c所示。

经测试,本文算法可实现移动机器人室内导航功能,在面积为20m*20m的区域中,可保证长度和宽度在0.6m误差范围内。该导航系统为后续进行智能语音和机器视觉的开发奠定了基础,从而进一步提高机器人的智能效果。

参考文献:

[1]寿佳鑫,张志明,苏永清,钟政.基于ROS和激光雷达的室内移动机器人定位和导航系统设计与实现[J].机械与电子,2018,36(11):76-80.

[2]祝甜一.基于ROS的自主式救援机器人SLAM和导航系统研究[D].南京:东南大学,2015.

作者简介:李震(1996-),男,山东枣庄人,本科在读,研究方向:SLAM与机器人。