郭金淋 ,康 杰 ,马志远
(三江学院机械与电气工程学院,江苏 南京 210012)
随着科学技术的迅猛发展,机器人技术已成为当今世界科技发展的热点之一。在工业、医疗、服务、军事等领域,移动机器人都发挥着越来越重要的作用。移动机器人的核心技术之一就是自主定位与导航,使得机器人能够在不依赖外部信息的情况下,通过自身搭载的传感器获取环境信息,实现自主定位与导航。SLAM(Simultaneous Localization and Mapping)技术[1]作为一种自主定位与导航的关键技术,能够同时完成机器人的定位与环境地图的建立[2],具有很高的研究价值。近年来,基于ROS(Robot Operating System)的移动机器人开发成为研究热点。ROS 是一种用于机器人的开源操作系统[3],具有灵活、易用、可扩展等特点,已成为机器人领域的实施标准。采用ROS 平台开发移动机器人能够简化系统设计[4]、加快研发进度、提高系统性能,具有很高的实用价值。
本项目主要研究基于ROS 的激光雷达SLAM 导航移动机器人,该设计方案具有成本低、性能优越、结构简单等优点,有望在各种应用场景中发挥重要作用。开展基于ROS 的激光雷达SLAM 导航移动机器人的研究具有重要的理论和实践意义。本研究的目的就是在现有技术基础上,探讨一种性能适中、成本低、结构简单的移动机器人设计方案,为我国移动机器人技术的发展和产业化提供支持。
对移动机器人机械部分进行了详细的机械设计。采用铝型材作为车架、复合板作为底板、3D 打印件作为结构件来确保足够的轻量化与较低的制造成本。为了保证此机器人有较大的用户改装空间,所有电子设备都放在车的头部。并且为保证机器人的运动性能,尽可能将机器人重心降低。由于采用双轮差速驱动[5],因此需要一个全向轮辅助支撑,机器人使用了一种独特的全向轮结构,采用58 mm福来轮[6]配合轴承作为全向轮,有着摩擦阻力较小和结构简单等优点。
机器人主要由ESP32[7]单片机(下位机)、搭载ROS 系统的PC 机(上位机)、环境感知传感器、供电系统、电机等组成,以此保证机器人实现较长的续航、拥有足够的算力与充足的动力等。具体组成如图1 所示。机器人采用48 V锂电池来为上位机、驱动器、电机、传感器等设备进行供电。主动轮为两个直流减速电机,实现了速度闭环与位置闭环控制,其控制器为电子调速器,下位机通过PWM 波控制内部H 桥[8]实现对直流电机的控制,配合磁编码器[9]返回旋转角度,进而实现调速功能。上位机与下位机、激光雷达与上位机均采用串口通信,系统硬件框架如图2所示。
图1 硬件组成
图2 硬件框架
机器人实现自主导航的前提是要先获取当前环境的地图,因此机器人采用基于R B P F 的GmappingSLAM 方法来建图,其特点是通过把定位与建图分开进行计算来防止相互之间的干扰,通过对结果的分析与预测来推出下一个结果。在GmappingSLAM 中采用粒子滤波定位,来对移动机器人姿态与位置进行估计,采用扩展卡尔曼滤波来构建周围环境地图。在算法中用x1:k表示位置与姿态的集合,用m表示地图估计。建图与定位的全过程可以用式(1)表示:
式中,x1:k=[x1,x2,x3,...,xk]是k个位置的移动机器人位姿集合。p(x1:k|z1:k,u1:k-1)是先验概率估计,p(m|x1:k,z1:k)是全局地图的集合。基于RBPF 的GmappingSLAM 主要包括四个步骤:首先使用传感器提取周围环境特征信息,然后再对提取的环境特征点进行相应的权重比对,根据得到的结果选择性地进行重采样,接着进行地图估计,最终生成二维的平面地图。
机器人的自主导航算法包括全局路径规划算法、局部路径规划算法[10],具体流程如图3 所示。其中,局部路径规划算法是在小范围避障用的,采用的是动态窗口法(DMA),全局路径规划算法是从起点到终点的最优路径规划,使用的是改进过的A*算法。
图3 自主导航流程
针对传统A*算法路径规划时间长的问题,提出了一种双向搜索方法,该方法从起始位置和目标位置同时开始并行搜索,两端使用不同的启发函数,尽可能地减少路径规划的时间。双向的并行搜索在中间合并,理论上可以提高A*算法的搜索效率,使之达到两倍。然而,这也使计算量增加了两倍,占用了更多的资源。当双向的同步搜索路径并没有交叉时,较快完成的一边可以先停止搜索,这也就导致效率提升达不到两倍。
采用MATLAB 对改进后的A*算法进行模拟实验,从原点到目标位置的启发函数采用曼哈顿距离,反向的位置采用欧氏距离。设置起始位置坐标为x=0,y=0,目标点坐标为x=40,y=40,并在每次实验中自动随机生成地图中的障碍物位置。这样,可以模拟在不同环境下的搜索。实验结果如表1 所示。
表1 改进的A*算法实验结果表
地图建模时为确保准确使用Xbox 手控制机器人手动建模,使用ROS 指令启动Gmapping 对环境进行建图,并且启动Rviz 来实时查看绘制情况。所建地图环境如图4所示,建立的地图如图5所示。
图4 地图环境
图5 所建地图
取得环境地图后就可以开始自主导航,只需要给出位置与朝向,机器人就会自动到达目标地点。进行自主导航实验时,运动的前半部分为没有障碍的自主导航,如图6(a)所示;在后半段加入障碍来验证机器人的避障能力,如图6(b)所示。
图6 避障实验
在此场景分别使用传统的A*算法与改进的A*算法进行全局路径规划对比,统计30 次路径规划所用时间与资源占用情况并整合,结果如表2所示。
表2 改进的A*算法实际实验结果表
本文主要研制了一种基于ROS 的室内移动机器人,该机器人具有成本低、质量轻和结构简单等特性,使用激光雷达与编码器实现SLAM 建图、自主导航、自主避障等功能。能够在复杂的室内环境下灵活运动,并且使用改进的A*算法后,平均路径规划效率提升了31.1%。该机器人有着巨大的应用前景,可为我国移动机器人技术的发展和产业化提供参考。