基于改进人工势场的智能车动态避障算法
2021-05-12于慧郭宗和秦志昌
于慧,郭宗和,秦志昌
(山东理工大学 交通与车辆工程学院, 山东 淄博 255049)
无人驾驶汽车是智能交通系统的核心部分,也是汽车产业的未来发展方向,它涉及众多先进领域,包括制造、控制、通信、传感器、人工智能等,对国家的发展具有战略意义。无人驾驶汽车可以尽可能地减少驾驶员的人工操作,减少人工因素而导致的道路事故,促进人类的出行更加安全、高效[1]。无人驾驶技术主要分为感知、决策、规划、控制四大模块,路径规划模块是无人驾驶技术的关键部分。路径规划需要参照基本道路信息、车辆状态等,规划出能够使汽车从当前位置行驶到目标位置的最优路径[2]。
目前,人工势场法、A星算法、蚁群算法、随机树法、曲线插值法等是动态避障路径规划过程中较为认可的算法[3]。文献[4]结合粒子群算法和A星算法,可以进行任意方向的搜索,但该方法计算量较大,在复杂的环境中,计算时间增大、时效性差。文献[5]采用蚁群算法,合理利用了信息素启发因子和期望启发因子,进而改善了挥发系数;机器人在路径规划过程中,使用了更加合理的动态避障策略,但是采用该算法获得的路径较为曲折,不易满足车辆运动学约束。文献[6]采用了一种改进型快速随机搜索树路径规划算法,该算法将车辆的非完整约束与双向RRT结合,同时采用B样条基本函数作为参考点,对规划路径进行逼近,生成一条适合跟踪控制的平滑路径;该方法在一定程度上提高了搜索效率,但是未考虑与障碍物之间的距离,若直接对该路径进行跟踪,容易发生碰撞。文献[7]采用分段式 Bezier 曲线生成规划路径,该方法根据传感器提供的起点和障碍物位置信息,计算得到Bezier曲线的控制点,但该方法对曲线具有形状限制,所以不能保证路径的可行性。
人工势场法(artificial potential field,APF)是Khatib[8]提出的一种路径规划方法,其原理是将智能车在行驶环境中的运动转化为车辆在抽象势场中的运动,使智能车在复合势场合力的作用下,行驶到目标点,并规划出最佳的避障路径。该算法适用于信息条件未知的环境,其计算简单、规划的路径平滑,广泛应用于智能车的实时避障。文献[9]采用人工势场法并改进斥力函数作用域,将车辆的避障过程划分为多个时间片段,在每个时间段内对避障路径进行优化,从而规划出最优的避障路径,避免了目标不可达问题。文献[10]将人工势场法中的引力势场动态化,并且去掉斥力场,按照八个方位进行搜索,寻找引力最大方向;若该方向存在障碍物,则寻找次优方向,不断地修正路径,使机器人能成功躲避障碍物。文献[11]用梯度下降法改进人工势场,使合力函数为凸函数,从而找到产生局部最优现象的障碍物,并通过增设外部扰动方法使其逃离局部极小值点,使智能车顺利到达目标位置。然而,智能车辆在实际运行中,遇到的障碍物往往是动态的,传统的人工势场法未考虑障碍物的运动信息,避障过程中可能出现智能车与障碍物发生碰撞的现象[12]。
针对人工势场算法中的不足,本文通过引入智能车和目标点的相对距离因子,克服传统人工势场目标不可达的现象;通过局部极小值检测,并增设虚拟子目标点,避免陷入局部极小值;通过在斥力势场函数中引入道路边界势场,保证车辆在道路中间行驶;通过在斥力势场函数中引入障碍物相对速度势场,解决车辆在动态障碍物环境中容易发生碰撞的问题。
1 传统人工势场法
人工势场法是广泛应用于机器人、智能车领域中的一种路径规划算法,其原理是将智能车在行驶环境中的运动转化为智能车在人为设定的抽象势场中的运动,抽象势场由引力、斥力两大势场组成。将引力势场和斥力势场进行叠加即为合力势场,智能车在合力势场的作用下行驶,行驶方向即为势能下降的方向[13]。汽车在抽象势场中的受力情况如图1所示(箭头代表受力方向)。
(a)障碍物斥力 (b)目标点引力图1 人工势场受力示意图Fig.1 Force diagram of artificial potential field
引力势场表现为目标点对智能车的吸引能力,主要由智能车与目标点间的距离决定,当智能车在目标点附近时,距离较小,引力势能较弱;当智能车在起始点附近时,距离较大,引力势能较强,以此吸引智能车向着目标位置运动[14]。目标点处的引力势场其值最小,近似山底,起始点处的引力势场其值最大,近似山顶。
引力势场函数为
(1)
式中:katt表示引力势场增益因子,为一正常数;ρ(q,qg)表示汽车与目标位置之间的欧氏距离|q-qg|。
引力函数Fatt(q)是引力势场对智能车与目标点相对距离的导数的负值,其方向由智能车当前所处位置指向目标点位置。引力函数的表达式为
Fatt(q)=-∇Uatt(q)=-kattρ(q,qg)=
-katt(q-qg)。
(2)
斥力势场体现障碍物对智能车的排斥能力,主要受障碍物与智能车之间距离的影响,当智能车在障碍物附近时,距离较小,斥力势能较大,以促使智能车避开障碍物;当智能车远离障碍物时,距离较大,斥力势能较小。当距离大于障碍物最大影响范围时,斥力势场将不再起任何作用[15]。每个障碍物的斥力势场近似高峰,斥力势场函数的表达式如下:
Urep(q)=
(3)
式中:krep表示斥力正比例增益因子;ρ(q,qo)表示汽车与障碍物间的欧氏距离|q-qo|;ρo为一常值,表示障碍物的斥力影响范围,可以自行设置调整。
斥力函数Frep为斥力势场函数Urep(q)对智能车与障碍物相对距离的导数的负值, 其表达式为
(4)
汽车在空间中的运动受到引力势场和多个障碍物斥力势场共同作用,结合人工势场法的理论和势场函数公式,可得到智能车受到的合力势场为
(5)
式中n为障碍物的个数。
将斥力函数和引力函数进行累加,可以得到智能车的合力函数,即
(6)
智能车在合力场中的受力如图2所示。障碍物1和障碍物2分别产生斥力Frep1和Frep2,目标点产生引力Fatt,合力Ftotal引导智能车避让障碍物向目标位置运动。
图2 智能车在合力场中的受力图Fig.2 Force diagram of intelligent vehicle in resultant force field
利用MATLAB进行智能车的仿真模拟,验证通过传统人工势场法进行避障路径规划的效果。在仿真设置中,红色方框表示起点,位置设为(0,0);绿色倒三角表示目标点,其位置为(10,10);黑色正方形表示障碍物,位置依次为(1,1.3)、(3,2.6)、(3,6.1)、(4,4.6)、(5.5,5.9)、(6,2.1)、(8.1,7.9);斥力势场增益因子krep=15,斥力正比例增益因子katt=5,障碍物的最大影响半径ρo=7,分别建立斥力势场和引力势场,运用传统的人工势场法进行路径规划,仿真结果如图3所示。
图3 传统人工势场法仿真结果Fig.3 Simulation results of traditional artificial potential field method
由图3可以看出,采用传统人工势场法规划最优路径时,存在目标点不可达以及局部最优等问题,即行驶路径最终停止在障碍物(8.1,7.9)前,未到达设定目标点(10,10)。为解决人工势场法存在的目标点不可达以及局部最优等问题,并使其更好地应用于智能车运动规划,本文对传统人工势场法进行改进。
2 传统人工势场法的改进
2.1 局部极小值问题的改进方法
在行驶过程中,可能会出现智能车、障碍物、目标点在同一直线上的情况,这种情况会使斥力和引力作用在一条直线上,大小相等、方向相反;还有一种情况,智能车受到两个及以上障碍物的斥力作用,多个斥力的合力与引力大小相等、方向相反,达到合力为零的状态,此时智能车无法继续行驶。这两种情况都会使智能车误认为目前位置就是目标点,使车辆陷入局部极小值,导致避障失败[16],如图4所示。
图4 智能车陷入局部极小值分析示意图Fig.4 Schematic diagram of intelligent vehicle falling into local minimum analysis
当智能车受到的斥力与引力大小相等、方向相反时,会产生局部极小值现象。将斥力方向旋转一定的角度可以解决局部极小值问题[13],但在未陷入局部极小值的情况下,旋转斥力方向会产生一定的侧向力,可能导致规划出的路径与最优路径有一定的偏差;故本文提出检测局部最小值,并增加虚拟目标点的方式,打破引力与斥力之间的平衡,从而避免产生局部极小值现象。其详细步骤如下:
1)检测智能车是否陷入局部极小值。其判断条件为:引力和斥力差值为零并且夹角为180°。
2)设置虚拟目标点。考虑到实际场景下常采用左侧避障,故将实际目标点角度减去π/3,作为虚拟目标点的方向,同时以ρ0为步长来确定虚拟目标点(增设的虚拟目标点如图5所示)位置,其公式为
(7)
式中:θatt为引力的角度;θg为引力旋转后的角度;xg、yg为虚拟目标点的坐标;x0、y0为车辆当前位置。
3)当智能车逃离局部最优后,再切换为原来的目标点,保证车辆能顺利到达目标位置。
图5 增设虚拟目标点示意图Fig.5 Schematic diagram of adding virtual target points
2.2 目标不可达问题的改进方法
如果障碍物在目标点附近,那么智能车在接近目标位置的过程中,引力的作用愈发减小,而斥力的作用愈发加大。车辆到达目标点时,其自身所受的引力作用较小,斥力作用较大,导致在目标位置合力不为零,斥力推动车辆继续向前行驶,使得车辆无法到达目标点。之后,车辆会继续驶出一定的距离,车身受到的引力作用增大,斥力作用减小,车辆会逐渐接近目标点。如此反复,智能车始终无法到达目标位置[17],如图6所示。
图6 目标不可达分析示意图Fig.6 Unreachable target analysis diagram
针对障碍物在目标点附近而使智能车无法到达目标点的现象,本文对斥力势场函数进行改进,通过增加一个距离因子(q-qg)m来保证目标位置处的合力为零,新的斥力场函数为
(8)
对式(8)进行负梯度运算可得改进后的斥力公式为
Frep(q)=-∇Urep(q)=
(9)
式中:
(10)
(11)
Frep1方向由障碍物位置指向车辆所处当前位置,Frep2的方向由汽车当前所处位置指向目标点位置。m是斥力修正因子(m>0),m取值不同,智能车受到的斥力大小不同,以下分为3种情况进行讨论。
(1) 0 (2)m=1时, (3)m>1时, 智能车q趋向目标点qg时,前两种情况的斥力Frep都大于0,很有可能出现目标不可达现象,因而不可取。第三种情况斥力的合力Frep为0,智能车在合力的作用下驶向目标点。 综上所述,在m>1时,斥力场函数是可行的,因此本文在仿真时取m=2,确保智能车能够顺利到达目标位置。 为检验改进人工势场算法的有效性,对优化后的人工势场法进行仿真实验。图7为改进后的仿真结果,可以看出,改进后的规划路径能到达目标位置,说明该方法在解决局部最优和目标不可达问题上具有一定的效果。 图7 改进型人工势场算法仿真结果Fig.7 Simulation results of improved artificial potential field algorithm 真实的驾驶环境中,智能车无可避免地会在道路上受到人工车辆等障碍物的影响,这些障碍物以一定的速度进行运动[18]。图8为使用改进后的人工势场法在动态环境下的仿真过程,其中黑色为本车,红色为障碍车。 (a)起始时刻 由图8可以看出,采用人工势场法的智能车在遇到动态障碍车辆时进行了避障,没有在最佳时间完成避障动作,随即发生了碰撞。这是由于动态障碍物是以一定的速度进行运动的,而传统的人工势场法忽视了障碍物的运动情况,特别是速度因素,因此避障过程中障碍物可能会运动到已经规划好的路径上,使智能车发生碰撞,导致车辆避障失败。 为解决这一问题,本文在原斥力势场中增加速度斥力势场,速度斥力势场函数为 (12) 对速度斥力势场求导数的负值得到速度斥力函数,速度斥力函数的表达式为 (13) 在实际驾驶环境下,驾驶员会选择道路边界以内作为行驶路线。因此,本文利用道路边界斥力势场来规定智能车的行驶路线范围,确定仿真的行驶区域。当智能车沿道路中间行驶时,车辆受到的道路边界斥力较小;当智能车靠近道路边缘时,车辆受到的道路边界斥力较大。因此,使得智能车在没有遇到障碍物时尽量沿着道路中心线行驶,避免了车辆越过道路边界而引发的交通事故。道路边界斥力示意图如图9所示。 图9 道路边界斥力示意图Fig.9 Schematic diagram of road boundary repulsion 道路边界斥力势场为 (14) 道路边界的斥力函数是对道路边界斥力势场求导数的负值,其公式为 (15) 对引力势场、针对目标不可达而改进的斥力势场,以及新增设的速度势场和道路边界势场进行叠加,得到智能车的合力势场,如图10所示。 图10 动态障碍物环境下智能车受力示意图Fig.10 Force diagram of intelligent vehicle in dynamic obstacle environment 智能车的合力势场为 (16) 智能车受到的合力为 (17) 为了验证改进的人工势场在动态障碍物环境中规划路径的可行性,在MATLAB中进行仿真分析。本文按照路径规划测试场景的要求,设置了一种动态超车场景,道路类型为一条单向行驶的平行双车道,长度80 m,每个车道宽3.5 m,共设置2辆车,黑色车为本车,红色车为以一定速度直线行驶的障碍车,其避障过程如图11所示。图11(f)中,红色轨迹为智能车在人工势场下最终规划的路径。 从图11中可以看出,在超车场景下,采用改进的人工势场法可以使智能车较好地实现动态超车路径规划,顺利抵达目标位置,并且规划的路径较为平顺、连续,能够满足后续横向控制对规划路径的曲率要求。因此,将考虑障碍物运动信息和道路边界信息的人工势场法应用于动态避障路径规划领域具有一定的可行性。 1)针对传统人工势场法可能陷入局部最优和目标不可达的现象,采用设置临时目标点以及在斥力势场函数中增加智能车与目标点间的距离因子这两种方法,有效解决了以上问题。 (a)起始时刻 2) 针对改进后的人工势场使智能车在动态障碍物环境下容易发生碰撞的问题,增加了速度势场和道路边界势场。仿真结果表明,采用改进后的人工势场能较好地完成智能车在行驶环境中的动态避障。3 速度斥力势场和道路边界斥力势场的动态避障路径规划及仿真
4 结论