商丘工学院,河南 商丘 476000
摘要:本文介绍了ROS轮式机器人系统在未知环境下的自主移动所依赖的传感器。对可视化地图、栅格地图、拓扑地图、特征地图的特性进行了分析,选择了构建简单便于及时更新的栅格地图模型。通过对导航所需要的5个步骤实现了轮式机器人在仿真环境下定位与导航的功能。
关键词:ROS;轮式机器人;定位;导航
Robot Operating System简称ROS,是一种依赖于Linux内核的开源元操作系统。ROS含有丰富的组件化工具包以及大量的工具、协议,来简化我们对机器人的控制,从而大大的提高了研发效率。本文基于ROS研究轮式机器人的定位与导航方法。首先,进行传感器选型和地图选择,配置机器人运行环境。然后,通过SLAM建图拼接形成完整的地图环境。最后,通过控制机器人的移动速度和方向实现轮式机器人的定位与导航功能。
1 传感器选型
轮式机器人系统中实现自主移动,必须要考虑未知的环境特征。在设计机器人系统时,能够提取环境信息的传感器必不可少。这里对能够实现导航与定位目标的常用传感器进行描述[1]。
激光雷达:根据发射维数的不同来实现对不同待测目标的距离测量。如一维激光雷达用于测量单向距离,三维激光雷达用于测量空间上物体距离。线束数量的多少也作为激光雷达被选用时的参考依据,普通机器人通常使用线束较少的雷达。激光雷达的优点在于其响应快、数据量小,缺点是成本较高。
里程计:常见的是编码器,用来控制机器人所处的位置或被电机所驱动的关节。机器人移动时,车轮的旋转会触发编码器测量轮毂转数。当测出车轮半径时,就可以计算出机器人某段时间内的移动距离和瞬时速度。
相机:在机器人SLAM技术中用到的相机根据摄像头个数有单目相机、双目相机之分;普通单目相机无法完成静态下测量距离的目标,双目相机虽然弥补了这一缺点,但是双目相机进行自身标定时颇为复杂,数据处理也比较困难。而深
度相机不仅可以提供彩色图像,还能获取单一像素的深度信息,目前室内机器人主要采用深度相机方案进行信息获取。
_______________
河南省省级重点学科专业建设资助项目(编号:2022KYXM01)
为更精确的感知未知室内环境,本文采用激光雷达和里程计共同构建机器人运行环境。
2地图选取
在未进行特定背景下的轮式机器人定位前,可供选择的地图表示方法很多,在进行选择之时,需要明确的一点便是所选取的地图的精度需要与我们所创建的轮式机器人的目标精度匹配,因为地图表示方法的复杂性会极大的增加轮式机器人在定位与导航过程中处理数据的复杂性[2]。下面介绍几种常用的地图:
(1)可视化地图:通过对地图环境中障碍物所处平面空间的分解,将障碍物的所有顶点可视化处理,然后通过机器人与所有点集的相互连接,这里需要满足连接线不与障碍物相交,才能形成可视化的地图。使用连接线作为机器人移动的路径可避免碰撞问题的产生。当地图中的动态障碍物移动位置时,需要重新形成可视化的地图。
(2)栅格地图:将整个地图栅格数值化,通过不同数值代表栅格状态,0代表白色,表示栅格未被占据,可自由通过;相反1代表黑色,表示栅格已被占据,不可通行。栅格的数量反映着地图的信息量,栅格少的同时地图的信息量也比较少。栅格地图构建简单,常用于小规模的环境建图,大规模建图时会致使地图精度急剧下降。
(3)拓扑地图:通过节点间连接关系对地图进行抽象化表达,对图形自身不做要求,因此缺少了度量信息,不能够进行精确定位。但其只保留重要信息的方式,促使其占用极小的存储进而提升计算效率,在大范围路径规划场合应用广泛。因为其度量信息较少,一般不用于室内机器人导航。
可视化地图适用于静态规则障碍物环境;栅格地图构建简单便于及时更新;拓扑地图度量信息少只适用于大范围路径规划场合。因此本文将构建栅格地图模型。
3 导航流程
导航的成功主要依赖于包含的五个模块的成功:全局地图,通过全局概览图显示相对位置;自身定位大多需要通过多传感器融合的方法实现对自身位姿进行估计的目标;路径规划,有本地规划与全局规划的区别,二者侧重点不同;运动控制,通过控制机器人的移动速度和方向来达到实现期望的运动轨迹的目的;环境感知,感知环境信息,提取环境数据。
3.1 SLAM建图
SLAM的目的是在未知环境的条件下,通过使用机器人搭载的本体传感器和外部传感器获取到的数据,拼接形成完整的地图环境与与移动路径。
作为较为成熟的SLAM算法,gmapping功能包可以移动机器人的里程计数据和激光雷达数据绘制出二维栅格地图。仿真环境中关于机器人的里程计和雷达数据是可以正常获取的,只对gmapping功能包的节点slam_gmapping进行说明。
订阅的话题中,tf用于移动机器人内自身相关传感器间的坐标变换消息,而scan则用来提供SLAM运行时所需要的雷达消息。服务
dynamic_map能够用来获取地图数据。相关参数中本文把base_footprint设为机器人基坐标系,map为地图坐标系,odom为里程计坐标系。在进行必要的坐标变换后,使用gmapping完成相关配置。运行结果如图1所示。
图1 SLAM建 图2图文件
3.2 地图服务
ROS中,map_server功能包用于实现地图数据的序列化和反序列化。通过订阅的map话题实现地图文件的生成。在SLAM建图完成后,运行地图保存launch文件可以得到一个后缀名为pgm的图片和一个用于描述图片信息的yaml文件,如图2所示。
3.3 定位
AMCL作为一种2D概率定位系统,实现了自适应蒙特卡洛定位方法,能够基于粒子滤波理论在已有地图的前提下推算出机器人位置。这里通过运行ROS的navigation集内的amcl功能包,实现轮式机器人的导航定位。如图3所示。
图3 amcl定位 图4 move_base路径规划
3.4 路径规划
运行ROS的move_base功能包,实现轮式机器人的路径规划。move_base可以在程序运行时,根据鼠标或其他操纵设备给定的目标点,使轮式机器人移动至目标位置。需要注意全局代价地图与本地代价地图的多层叠加使用。由SLAM构建得到的静态地图层,由传感器感知得到的障碍地图层,由静态地图层和障碍地图层膨胀得到的膨胀层等。move_base使用时为了让算法适配机器人,需要对配置文件进行修改。准备工作完成后,可以启动相应文件,运行结果如图4所示。
3.5 导航与SLAM建图
通过集成SLAM与move_base包的一些节点,可以得到完整的SLAM建图结果。Rviz中添加相应组件后即可完成显示,如图5所示。
图5 导航与SLAM建图
4 小结
在ROS轮式机器人定位与导航过程中,采用传感器感知周围环境,通过特定背景选择栅格地图构建模型。在导航流程实现中,通过SLAM建图、地图服务、定位、路径规划及导航完成设计目标。
参考文献
[1]王鹏飞.基于ROS的多传感器信息融合自主导航控制系统设计与实现[D].南京:南京邮电大学,2019
[2]Chen Xiao,Hu Weidong,Zhang Lefeng,et al.Integration of Low_Cost Gnss and Monocular Cameras for Simultaneous Localization and Mapping.[J].Sensors(Basel,Switzerland),2018,18(7)