张鹏彬 曾钰培
(中国石油大学(华东)化学工程学院,山东青岛,266580)
移动机器人的路径规划是机器人研究领域的一个重要分支,其路径规划的任务是在具有障碍物的环境中,按照一定的评价标准,寻找一条从起始位置到达目标位置的无碰撞路径[1]。目前,移动机器人的路径规划策略主要有两种:一种是未知环境下,基于传感器信息的路径规划;另一种是已知环境信息下的路径规划[2]。
人工势场法是一种常用的解决移动机器人路径规划问题的方法,其计算量较小、实时性高、反应速度快、规划轨迹平滑。但是,人工势场法也存在局部极小点、无法到达目标点等缺点,即在某个点,引力和斥力刚好大小相等且方向想反,物体陷入局部最优解或震荡[3]。即当引力与斥力的合力为零或接近零时,机器人会认为已经到达目标点而停止前进或在一定区域内徘徊,造成机器人永远无法到达目标点,而陷入局部极小点。
针对上述问题,许多学者对算法进行大量改进性研究。文献[4]通过增加虚拟目标点与原目标点共同作用于机器人来帮助机器人摆脱局部极小点,文献[5]基于人工势场法原理,将机器人的人工势场算法分为3层进行设计和轨迹规划,文献[6]利用几何方法重新规划路径使小车摆脱局部极小点,文献[7]提出了一种通过添加附加控制力的方法摆脱局部极小点。
针对传统人工势场算法存在的局部极小点问题,本文提出了一种改进的人工势场法。该算法在判断移动机器人陷入局部极小点时,使用选取在障碍物一侧的中间目标点将机器人引导出局部极小点区域,在机器人摆脱局部极小点时,再使用真正的目标点引导机器人继续向原目标点运动。当机器人离目标点比较近的时候,机器人则忽略斥力影响而直接到达目标点,避免因引力几乎为零而斥力比较大时,造成机器人在目标点徘徊现象。
人工势场法是由Khatib于1986 年提出的一种虚拟力法。人工势场法的基本思想是在机器人的运动空间构造目标位置引力场和障碍物周围斥力场共同作用的人工势场,目标点对机器人产生引力,障碍物对机器人产生斥力,当机器人沿引力和斥力的合力方向运动时,可以局部规划最优路径并避开障碍物[8-10]。
当机器人距离目标点越近,势能越小,当引力为零时,到达目标点。引力函数定义为:
当机器人距离障碍物越远,势能越小,超出障碍物影响范围后,势能为零。斥力函数定义为:
根据上述定义的引力场函数和斥力场函数,可以得到整个运行空间的总势能函数,机器人的总势能为机器人所受的引力和斥力之和,因此总势能函数为:
机器人所受合力为总势能的负梯度:
其中, 是障碍物指向机器人的单位向量,
合力 的方向即为机器人运动方向,当合力为零或接近零时,机器人会认为已经到达目标点而停止前进或在一定区域内徘徊,造成机器人永远无法到达目标点,而陷入局部极小点。如图1所示,目标点、障碍物、机器人在一条直线上时,目标点引力与障碍物斥力合力为零,此时机器人不能到达目标点。
图 1 机器人陷入局部极小点
判断机器人是否陷入局部极小点,需使用中间目标点替换真正目标点,从而对机器人产生引力;判断机器人是否摆脱局部极小点,需使用真正目标点对机器人产生引力。
改进人工势场算法流程如图2所示,整个流程主要包括三个环节。
如果机器人陷入局部极小点,则使用中间目标点引导机器人脱离该区域。中间目标点一般选取在障碍物的一侧,使中间目标点、障碍物、机器人不在一条直线上,这样机器人便不再徘徊,待行走一定步长后再用真正目标点引导机器人向原目标点运动。
通过比较机器人当前位姿与目标点距离是否在一个很小的区域内,如果则认为机器人位于目标点附近,此时忽略斥力影响,机器人直接运动至目标点,避免因引力几乎为零而斥力比较大时,造成机器人在目标点徘徊现象。
图 2 改进人工势场算法流程
按照上述算法步骤,在Matlab和MobileSim平台上进行仿真,验证该方法的有效性。
图3为传统人工势场法Matlab仿真,图4为改进人工势场法Matlab仿真。其中,
图3 传统人工势场法Matlab仿真
图4 改进人工势场法Matlab仿真
从图3中可以看出,传统人工势场法使机器人陷入了局部极小点而不能到达目标点;改进人工势场法在机器人陷入局部极小点时,在中间目标点的引导下使机器人摆脱了局部极小点,如图4中绿色轨迹所示,机器人行走一定步长后转用真正目标点引导,最后到达目标点。
AmigoBot智能移动机器人是先锋机器人(Pioneer)公司生产的MobileRobots机器人系列之一,主要应用在教学研究及编队协作项目。本文使用其附带的仿真软件MobileSim进行模拟实验。
从图5、图6中可以看出,利用传统人工势场算法,机器人被困在局部极小点而停止前进;利用改进的人工势场算法,机器人通过中间目标点摆脱了局部极小点,顺利到达目标点,由此可以看出,改进的人工势场算法是可行的。
图5 传统人工势场法MobileSim仿真
图6 改进人工势场法MobileSim仿真
针对传统人工势场法存在的局部极小点问题,本文提出了一种改进的人工势场算法。在判断机器人陷入局部极小点时,首先使用选取在障碍物一侧的中间目标点代替真正目标点引导机器人,从而使机器人摆脱局部极小点,然后待当机器人逃离局部极小点并行走一定步长后撤销中间目标点,再使用真正目标点引导机器人向原目标点运动。最后,利用Matlab和MobileSim对传统人工势场法和改进的人工势场法进行仿真实验对比,验证了该改进方法的有效性。但是,针对复杂环境,改进的人工势场算法还需进一步完善。