摘 要: 针对传统人工势场法进行移动机器人路径规划过程中常出现目标不可达、局部极小值等问题,提出一种改进人工势场的移动机器人路径规划新方法。将移动机器人和目标点之间的欧氏距离融入到斥力函数中,并将障碍物产生的斥力分解为两个不同方向的斥力分量,引導移动机器人到达目标点;根据移动机器人的位置、障碍物的最大影响距离以及移动机器人与目标点之间的欧氏距离建立数学关系,寻找虚拟目标点,以解决移动机器人在移动过程中受到的合力为零时出现的局部极小值问题。仿真及实验结果表明,改进人工势场算法能够使移动机器人顺利绕过障碍物到达目标点。
关键词: 移动机器人; 路径规划; 改进人工势场算法; 斥力函数; 局部极小值; 虚拟目标点
0 引 言
随着无人驾驶技术的不断发展,移动机器人的路径规划和自主避障已广泛应用在危险任务的执行、爆破、巡航等方面,成为国内外学者研究的热点[1?3]。移动机器人路径规划是指通过在移动机器人上安装多种传感器探测周围的环境信息,规划出一条满足动力学要求、稳定性以及舒适性等评价标准的优化路线,方便对移动机器人进行跟踪。目前路径规划的主要方法包括神经网络算法[4]、向量直方图算法[5]、遗传算法[6]、人工势场法(Artificial Potential Field Algorithm,APFA)[7]等。人工势场法具有计算量小、规划时间短、便于实现底层控制等特点,在移动机器人的路径规划中广泛应用[8]。然而,当机器人所处环境复杂多变时,传统的人工势场法容易出现局部极小值问题,导致移动机器人无法正常移动至目标点。因此,科研人员提出许多改进的人工势场法。文献[9]根据障碍物的距离远近,采用不同的引力和斥力方向计算方法,并缩小障碍物的范围以解决局部极小值问题。文献[10]利用概率论建立了一个势场模型,根据累积分布函数的特征和障碍物的边界条件推导出势场模型的解析式,并利用概率密度函数求出势场的表达式,以解决目标不可达问题。文献[11]在斥力函数中引入逃逸力,以解决局部极小值问题,并利用遗传算法得到更加平滑的规划路径。文献[12]将滚动窗口理论和人工势场相结合,提高机器人躲避障碍物的能力,使机器人能够精准移动至目标点。本文提出一种新的改进人工势场的移动机器人路径规划方法,以期实现移动机器人灵活地避开障碍物,精准到达目标点。
1 基于虚拟目标点的改进人工势场路径规划算法
1.1 人工势场法及其问题分析
人工势场法(APFA)是由Khatib于1986年提出[13],它是解决路径规划问题最有效的方法之一。人工势场法将移动机器人所在的环境模拟成物理学中的“场”,称为虚拟势场。该虚拟势场包含引力场和斥力场,引力场由目标点生成,斥力场由环境中的障碍物生成。移动机器人借助于引力场的作用,逐渐向目标点靠近;与此同时,斥力场作用于移动机器人上,使其巧妙地绕过障碍物。移动机器人的人工势场受力分析如图1所示。
在人工势场法中,用[X]表示移动机器人当前所处的位置,[Xg]表示目标点所处的位置,[Xb]表示障碍物所的处位置。
引力势函数可表示为:
[Ua=12?ka?d2g] (1)
式中:[ka]表示引力势场常数;[dg]表示移动机器人当前所处位置[X]和目标点所处位置[Xg]之间的欧氏距离。
引力可以表示为引力势函数的负梯度:
[Fa=-grad(Ua)=-ka?dg] (2)
斥力势函数可表示为:
[Ur=12?kr?1db-1dm2, db≤dm0, db>dm] (3)
式中:[kr]表示斥力势场常数;[db]表示移动机器人当前所处位置[X]和障碍物所处位置[Xb]之间的欧氏距离;[dm]表示障碍物能够影响的最大距离。当移动机器人和障碍物之间的距离[db<][dm]时,障碍物产生的斥力场才能作用于移动机器人。
斥力可以表示为斥力势函数的负梯度:
[Fr=kr?1db-1dm?1d2b, db≤dm0, db>dm] (4)
移动机器人受到的合力为:
[F=Fa+Fr] (5)
利用人工势场法进行移动机器人路径规划时通常存在如下问题:
1) 目标点和障碍物之间的距离较近,且目标点处在障碍物的影响距离内,当移动机器人快要移动到目标点时,其所受的斥力可能大于引力,此时移动机器人会不断在目标点周围徘徊,陷入局部极小值的陷阱中,無法抵达目标点。
2) 目标点、障碍物和移动机器人处于一条直线上,移动机器人在向目标点移动的过程中所受的引力和斥力也在一条直线上并且方向相反,如果此时引力和斥力的合力为零,那么移动机器人就无法判断接下来的前进方向,它就会误认为已经到达目标点,进而停止移动。
1.2 斥力函数的改进
为了解决人工势场法中的目标不可达问题,将移动机器人当前所处位置[X]和目标点所处位置[Xg]之间的欧氏距离[dg]融入到斥力函数中,如式(6)所示:
[Ur=12?kr?(1db-d0-1dm-d0)2dtg, db≤dm0, db>dm] (6)
式中:[t]表示移动机器人当前所处位置和目标点所处位置之间的欧氏距离对斥力的影响系数;[d0]表示障碍物的安全距离。当移动机器人越靠近目标点时,斥力函数值越接近0。
将由障碍物产生的作用于移动机器人的斥力分解为两个分量,分别是由障碍物指向移动机器人方向的斥力分量[Fr1],以及由移动机器人指向目标点方向的斥力分量[Fr2]。移动机器人的改进人工势场受力分析如图2所示。
引力[Fa]和斥力[Fr]可以分别表示为引力势函数和斥力势函数的负梯度:
[Fa=-kadg] (7)
[Fr=Fr1+Fr2, db≤dm0, db>dm] (8)
斥力[Fr]的分量[Fr1]和[Fr2]分别表示如下:
[Fr1=kr?1db-d0-1dm-d0?1(db-d0)2?dtg] (9)
[Fr2=12?t?kr?1db-d0-1dm-d02?dt-1g] (10)
当移动机器人逐渐靠近障碍物并受其斥力影响时,斥力分量[Fr1]会给移动机器人施加一定的阻力,使其向远离障碍物的方向移动,斥力分量[Fr2]和引力[Fa]则引导移动机器人向目标点的方向移动。
1.3 虚拟目标点设置
如果目标点、障碍物和移动机器人处于一条直线上,则移动机器人所受的引力和斥力也处于一条直线上,当移动机器人在向目标点移动的过程中受到的合力为零时,它就会误认为此时已经到达目标点,进而停止移动。
1.3.1 局部极小值问题检测
由于移动机器人的移动环境是未知的,移动机器人在向目标点移动的过程中受到的合力为零时的情况出现的概率很小,最常见的是移动机器人在某一点附近震荡走动,即移动机器人在以该点为圆心的圆内徘徊,陷入局部极小值陷阱。因此,根据距离检测的方式来判断移动机器人是否陷入局部极小值陷阱。在图3中,假设以局部极小值点为圆心的圆半径是[R],在[t]时刻,移动机器人所处的位置为[Xt(xt,yt)]。经过[Δt]时间后,移动机器人移动到新的位置[Xt+Δt(xt+Δt,yt+Δt)],则[Xt]与[Xt+Δt]之间的距离为:
[d=(xt-xt+Δt)2+(yt-yt+Δt)2] (11)
如果[d
1.3.2 虚拟目标点的设置
推荐阅读:电子技术与软件工程