APP下载

基于ROS系统移动机器人SLAM算法的研究与实现

2020-03-03李贺喜李富强牛童立杜边境

技术与市场 2020年7期
关键词:建图移动机器人定位

李贺喜,李富强,牛童立,李 康,杜边境

(中国矿业大学徐海学院,江苏 徐州 221000)

0 引言

从20世纪机器人诞生以来,经过多年的技术革新与发展,机器人技术由传统的只能在预设的熟悉环境中进行机械性重复运动的工业机器人,转变为具有自主定位、自主建图、自动导航的智能机器人。在未来,无人驾驶汽车、巡检机器人等设备的发展都需要用到机器人的路径规划与自主导航功能。因此,移动机器人的自主导航能力至关重要。本文利用SLAM技术实现移动中的不断自主定位,同时把对环境的感知建立起全局的地图,移动机器人便可以通过算法制定最优的路径。

1 ROS系统与SLAM技术简介

Robot Operating System简称ROS,是一个机器人软件平台。ROS在机器人项目开发的过程中提供了大量的实用工具和package,凭借开源优势,除了ROS官方发布的功能包之外,在多个互联网平台上有全球的机器人软件开发者发布的特殊功能的包,为其他机器人开发者节约了大量的时间和精力,大大提高了机器人开发效率[1]。

SLAM(Simultaneous Localization and Mapping)其意为即时定位与建图技术。将一个机器人放置于完全陌生的环境中,可以通过SLAM技术将环境中的地图在移动的过程中建立出来,同时定位自身所处位置。目前,有以下几种主流的SLAM算法:Hector SLAM、Gmapping、Karto SLAM、Cartographer[2]。

2 SLAM算法的选择与分析

Gmapping是基于滤波SLAM框架的开源算法,也是目前应用最多的2D SLAM方法,利用激光点云数据结合机器人的位姿进行定位建图。建立精确栅格地图的过程中会使用到RBPF(Rao-Blackwellised Particle Filter)粒子滤波算法[3],将定位和建图过程分离,先定位再建图。Hector-SLAM算法在建图过程中会因移动机器人的运行速度过快或者环境中特征点较少等因素,出现定位不准确,建图过程中产生“打滑”现象[4]。而Gmapping与Hector SLAM的重要区别是Gmapping加入了里程计数据,避免了“打滑”现象,并且对激光雷达频率要求低。因此Gmapping算法比Hector SLAM算法稳定、建图效果好。

综合考虑实际情况,本项目采用了Gmapping方法作为移动机器人的定位建图的策略。主要考虑两个方面:①机器人安装的是低成本激光传感器,Gmapping算法对激光传感器频率要求低,并且机器装有里程计传感器可以辅助Gmapping算法定位建图。②仿真和应用场景面积相对较小,依据Gmapping建图的基本原理,在构建小场景地图时所需计算量小并且精度高,因此使用Gmapping算法是比较适合的。

3 Gazebo下的模型搭建与仿真实现

3.1 仿真模型搭建

首先通过终端打开Gazebo软件,在指令中执行roslaunch命令打开Gazebo并非直接打开,这样的区别在于用roslaunch命令打开后Gazebo的运行就包含了一个通信节点,而当Gazebo的启动信息放置在launch文件中作为节点时,可以把后续的运行与之结合起来,避免其脱离整个工程而单独存在,在后续的执行过程中可以把多个节点置于同一个launch文件中,这样就可以通过单一launch文件的运行指令启动多个节点,此方式极大地简化了整个项目各个部分。结合Gazebo的强大仿真能力,我们根据项目实际情况,自建仿真环境,预设了仿真场景。

模型的创建有两种方法:第一种是直接用代码写一个URDF的模型文件,以此来描述模型的特征。URDF文件是一种特殊的xml文件格式,是一种描述型文件,通常用于机器人模型的创建。通过URDF文件建立机器人模型要对各部分概念有一定的认识,首先是link和joint,link之间的连接通过joint实现,其类似与机器人的关节的存在,而link的放置还需要设置位置信息和形状信息,这样看来link并非是质点的存在,所以对于link的描述不仅需要3个维度的坐标信息,还要有其各个维度的旋转信息,也即绕x轴的偏转(yaw)、绕y轴的俯仰(pitch)、绕z轴的滚动(roll),同时此处的偏转信息使用的是弧度进行的描述。在link的放置中要避免产生重合,所以又引入了collision标签对其进行约束。第二种是通过3D建图软件solideworks作出机器人模型的形状,然后导出成URDF文件。综合考虑后,选用代码实现了机器人模型的创建。

3.2 仿真环境SLAM实现

前文中成功完成了Gazebo中场景模型的搭建,以下将在自建的环境中进行SLAM算法的实现,在程序的运行中为了清楚地了解各个节点的话题订阅以及发布情况,使用ROS系统指令rqt_graph可以查看各个节点之间的通信联系。软件会自动生成节点间关系图。

节点关系图可以辅助解决调试过程中的问题,在图中可以清楚地看到各个节点的运行情况和各个节点之间的话题订阅关系,在调试中出现问题可以快速定位是否有节点订阅信息出错以及是否有节点缺失。

通过键盘控制指令让turtlebot在场景中行进,在键盘控制时需要注意让键盘控制指令运行的所在终端始终浮于rviz的上方,否则无法激活键盘控制。确保控制机器人在预设场景中得到充分的运动,否则建图将不完整,影响建图效果。最终形成仿真中机器人在场景充分运动后生成的2D平面地图,成功完成了机器人在仿真环境中Gmapping方法的建图与定位。

4 结语

本文对ROS以及SLAM技术作了简单的阐述,深入介绍了Gmapping方法的基本特征、适应场景;运用Gazebo工具进行了仿真实现,介绍了仿真模型的搭建过程、仿真模型的URDF文件编写、运行turtlebot在自建的场景中完成了建图与定位工作,即SLAM算法的仿真实现。对于不同功能的智能移动机器人,自主导航都是其根本所在,在载体平台依据需求加上不同的传感器则可实现所需要求。在未来,移动机器人的SLAM技术将进一步优化并将更加广泛应用到人们的日常生活中,更好地服务于人类社会。

猜你喜欢

建图移动机器人定位
移动机器人自主动态避障方法
“智能网联汽车高精度建图、定位与导航”专栏客座主编简介
视觉同步定位与建图中特征点匹配算法优化
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
基于三轮全向机器人的室内建图与导航
找准定位 砥砺前行
基于Twincat的移动机器人制孔系统
机器人室内语义建图中的场所感知方法综述
青年择业要有准确定位