基于ROS的差分轮式机器人系统的设计
2020-11-12石学文赵晓晨王庆兰徐雍倡李印宏
石学文,赵晓晨,王庆兰,徐雍倡,李印宏
(曲阜师范大学工学院,山东 日照 276800)
0 引言
如今,基于机器人操作系统(robot operating system,ROS)的智能机器人系统的研发已经成为机器人的发展趋势。借助分布式计算、软件复用和快速测试等优点,ROS已经成为智能机器人开发的标准平台。麻省理工学院强调“自从ROS发布了1.0版本之后,ROS已经成为机器人软件的事实标准”[1]。本文基于ROS设计了差分轮式机器人系统,通过对其系统建模、路径导航算法和语音交互的研究,使其更趋于实用化。
1 系统整体搭建
基于ROS的差分轮式机器人系统的设计,通过先模型仿真后实物实现的方式完成轮式机器人架构的确定。设计前,必须确定机器人的形状及其实现的功能,然后按照功能确定适合的硬件与编程软件,最后完成机器人系统的整体搭建[2]。
1.1 URDF模型设计
利用统一机器人描述格式(unified robot description format,URDF)文件创建机器人模型,完成对雷达、轮子、电机的模拟。URDF模型可以在rviz+ArbotiX与Gazebo仿真环境中运动,实现机器人的同步定位与建图(simultaneous localization and mapping,SLAM),以及路径规划等功能。
URDF模型主要由link标签、joint标签组成。link标签描述刚体部分的物理属性,joint标签描述机器人关节的运动学和动力学属性。机器人URDF模型最下层的底板包括6个link标签和5个joint标签。link标签分别为底座、直流电机、驱动后轮和万向轮,joint标签分别将电机、轮子等固定到底盘。使用宏定义声明重复的代码模块实现支柱和第二层板,并在第二层板加上代表雷达的link标签,以及连接雷达和板的joint标签。最后使用xacro文件优化该模型,并将模型显示到rviz可视化工具中[3]。
1.2 运动学模型分析
分析差速轮式机器人的运动学模型,通过机器人的几何特征和其轮子速度,求解机器人的运动方程[4]。轮式机器人运动学模型如图1所示。
图1 轮式机器人运动学模型Fig.1 Kinematics model of wheeled robot
假设轮式机器人局部坐标系的坐标原点C处在两个轮子的中点,局部坐标系的yR轴与2个轮子的连线平行,与机器人的前进方向垂直;全局坐标系x轴与xR轴夹角为θ。两个驱动轮直径为r,两轮的轮间距为l。
(1)
(2)
(3)
(4)
由ξi=R(θ)-1ξR,可得:
(5)
式中:ξi为全局坐标系机器人的运动状态矢量;ξR为局部坐标系机器人的运动状态矢量。
由此可得,差分轮式机器人的运动学模型:
(6)
(7)
其中:
(8)
1.3 机器人硬件设计
机器人系统分为4个部分:执行系统、驱动模块、传感系统和控制部分。本机器人采用直流电机作为执行机构,电机驱动模块作为执行机构,里程计、雷达作为传感系统,树莓派作为控制系统。机器人框架图如图2所示。
1.4 语音控制
为了提升机器人的智能化水平以及用户的使用体验、减少日常使用时繁琐的程序流程,采用基于树莓派的ReSpeaker 4-Mic阵列,完成语音控制差分轮式机器人的移动。语音控制流程图如图3所示。
图3 语音控制流程图Fig.3 Flowchart of voice control
通过ReSpeaker 4-Mic阵列集成的Amazon Alexa语音服务,并采用snowboy软件录制声音。ReSpeaker 4-Mic阵列捕获语音信号,对信号进行预处理,并将信息发送到机器人上位机树莓派中。通过识别的语音信号计算出其对应的运动指令,完成机器人自主移动的功能。该模块在检测到不同语音时,对应的指令灯会显示不同的颜色,并且控制机器人移动。
2 系统软件设计
系统软件设计包括同步定位与建图(simultaneous localization and mapping,SLAM)设计和路径规划设计。对比不同的SLAM算法后,采用更高效的FastSLAM算法同时完成定位与地图构建。路径规划分为两部分,共同完成机器人的系统设计。全局路径规划采用蚁群算法,局部路径算法采用规划推理和动态窗口算法。
2.1 SLAM设计
SLAM是指机器人从某一位置起,通过机器人自身传感器感知的数据移动,在移动的过程中随时检测所处位置,并构建地图,以此实现机器人的自主定位与导航[5]。
2.1.1 FastSLAM分析
FastSLAM算法将SLAM分为定位与地图构建两部分。FastSLAM的核心是采用粒子滤波器完成定位、扩展卡尔曼滤波(extended Kalman filter,EKF)完成创建地图的任务。环境特征分别对应单个EKF,是一种由粒子滤波与EKF组成的算法。
FastSLAM假设近似处理后验概率p(st,m|zt,ut,nt),st=(s1,s2,…,st)为机器人轨迹。
(9)
分解近似后验概率,表达形式为确定路径上的N个路标后验概率与路径后验概率乘积。通过粒子滤波器采样。每个粒子可以表述为:
(10)
FastSLAM主要由新位姿采样、估计检测得到的环境路标、重采样组成。
①新位姿采样。
(11)
对第i个粒子的具体处理过程如下。
①预测第1个粒子位姿状态可表示为:
(12)
②观测到环境特征路标,假设为mnt。预测的路标信息表示为:
(13)
Gm=
(14)
Gm=
(15)
③更新状态。将传感器测量得到的准确观测值进行状态更新。假设观测值为zt,可表示为:
(16)
(17)
(18)
④扩展机器人路径,并在新的位姿实现采样。
(19)
(20)
p(mn|st,i,zt,ut,nt)=
(21)
简化式如下:
p(mt|st-1,i,zt-1,ut-1,nt-1)
(22)
③重采样。
通过概率测量值求逆得到归一化值。以第i个粒子为例,可表示为ηi=p(zt|mn,st,i,zt-1,u)。利用g对其线性化多次逼近高斯分布处理,可以有效地解决这个问题[6]。
(23)
式中:zt为高斯分布的均值。
2.1.2 仿真分析
在MATLAB仿真平台上,对FastSLAM和EKF-SLAM算法进行仿真试验。试验模拟移动机器人根据预测的轨迹点逆时针自主运行。图4、图5分别为运行EKF-SLAM算法(实线)或运行FastSLAM算法(虚线)的真实路径与估计路径对比图。从结果可以看出,运行优化的FastSLAM算法后,能够使得机器人运动轨迹更贴近预测路径。
图4 EKF-SLAM路径估计图Fig.4 Simulation of EKF-SLAM path estimation
图5 FastSLAM路径估计图Fig.5 Simulation of FastSLAM path estimation
图6、图7分别为FastSLAM、EKF-SLAM与真实状态的位姿值对比图和偏差绝对值对比图。结果表明,相对于EKF-SLAM算法,FastSLAM算法的状态值更贴近真实状态,其偏差绝对值更小[7]。
图6 位姿值对比图Fig.6 Simulation of pose value comparison
图7 偏差绝对值对比图Fig.7 Simulation of absolute deviations comparison
2.2 路径规划设计
2.2.1 理论分析
路径规划流程图如图8所示。
图8 路径规划流程图Fig.8 Flowchart of path planning
通过将全局路径规划和局部路径规划相结合,达到自主导航的目的。全局路径规划通过已有地图和指定位置,完成整体路径上的规划。局部路径规划主要完成近距离目标和避障路径的规划[8]。全局路径规划采用了蚁群算法。蚁群算法根据运动路径上的每个位置点的启发式距离信息所发生的概率,生成从起始点到目标点的一些可行的运动路径。每条路径代表蚂蚁的一个移动轨迹。计算这些可行路径的长度和信息素的相应增量,并使用信息素路径函数修改路径上的点,使所规划的路径由一些直线段连接。将修改后的路径与最短路径的长度进行对比。如果修改后的路径比修改前短,则修改后的路径为新的最短路径。利用启发式函数信息和基于信息素的轨迹,从起始点到目标点生成一条可行的路径,则当前的路径就是机器人的最短路径[9]。
局部路径规划是通过动态窗口接近(dynamic window approaches,DWA)算法实现。DWA算法首先对机器人控制空间(dx,dy,dθ)进行离散采样,然后进行采样速度预测,通过合并特征的度量标准进行评测轨迹结果。如果存在障碍物与全局路径接近,则舍弃该路径,重新规划新路径。找到最佳路径之后移动平台发布相关速度[10]。
2.2.2 仿真分析
采用(20×20)m的二维栅格图作为路径规划的仿真环境,左上角为起点,右下角为终点。蚁群算法中的迭代次数K=100,蚂蚁个数M=50,信息素重要程度参数α=1,启发式因子重要程度参数β=7,最大迭代次数NCmax=100,信息素增加强度系数Q=1。机器人运动轨迹如图9所示,折线代表其规划的路径。
图9 机器人运动轨迹Fig.9 Simulation of robot’s trajectory
图10为蚁群算法收敛结果。由图10可知,该算法在开始环节多次迭代后收敛,可防止算法局部最优、提高算法收敛性。
图10 蚁群算法收敛结果Fig.10 Simulation of convergence results based on ant colony algorithm
3 试验测试
通过机器人的SLAM与导航避障功能,机器人可以在无人干预的情况下自主完成未知环境的SLAM功能,导航路径会根据地图信息的完善而不断优化。SLAM构建完成后,随机放置障碍,机器人会重新规划最优路径并避开障碍物。试验分析分两部分[11-12]。
①模型仿真。仿真部分采用Gazebo软件同步显示,如图11为仿真模型测试图。采用Gazebo软件中的Building Editor工具创建了一个类似房间的仿真环境,并在仿真房间内放置仿真机器人。通过程序设置随机关键点后,仿真机器人根据关键点导航,构建的SLAM在rviz可视化工具中实时更新。在地图构建完成后,输入指定点导航,并在房间内随机放置障碍。机器人会在检测到障碍物的同时,重新规划路线,完成避障任务[11]。
图11 仿真模型测试图Fig.11 Robot simulation model test
②实物测试。机器人对所在的房间构建地图并通过rviz软件显示。在菜单栏中点击“2D Nav Goal”按钮并随机选择一个目标点,机器人就会规划路径向指定地点前进。在rviz软件中,可以通过机器人传感器数据和显示机器人所在位置完成对机器人的实时监控[12]。
4 结论
本文提出的URDF仿真模型加运动学模型分析的建模方法,为差分轮式机器人系统设计提供了一种快速、有效的设计方法。试验结果表明,通过采用优化算法,使差分轮式机器人系统能快速构建SLAM地图和精准完成路径规划,并能通过语音指令控制机器人的运动,使其避开障碍、准确到达指定地点。本文设计的基于ROS的差分轮式机器人系统,为其环境感知与多传感器信息融合方面的研究提供了可靠平台,对基于ROS的家庭陪护机器人系统的开发具有借鉴意义。