基于A*和势场寻路的快速小队伍动态势场避障寻路

前言

先把本算法的适用场景和优缺点写在前面,需要的可以继续看,不适用的就可以直接略过了。然后在循序渐进介绍本算法。演示效果在最后。

本算法适用场景

  • 每次寻路以小队伍为单位(几个至几十个队员)
  • 队员之间(互斥)需要动态避障

优缺点

  • 运算速度快,效率高
  • 队伍行进效果好,逼真度高
  • 由于结合了A*算法和势场寻路算法,所以这两者的优化、特例化算法基本都可以结合到本算法中。
  • 缺点是适用范围窄,在特殊需求下需要另写算法

一、A*寻路

A*寻路算法是基于格子的启发式探索寻路,优点是准确可靠、适用性强,缺点是长距离频繁寻路时效率较低。为解决这些缺点,还出现了JPS寻路等优化的算法。

二、势场寻路

势场寻路(也叫流场)是在即时战略等类型的游戏中经常采用的,具有耗时短、效率高等优点。基本原理为阻挡、敌方防御塔等会对队员产生斥力,目标点会产生吸引力,于是在整个地图的每个格子上会计算出方向(效果如下图),那么一个队员下一步要往哪里走就显而易见了。

三、避障寻路(RVO算法)

RVO(Reciprocal Velocity Obstacles)是动态避障算法,简单的说就是让在一个区域内运动的队员相互之间不会碰撞。基本原理是把任意两个队员的运动的速度和方向、所占体积作为相对值来进行运算,用以判断在未来的某个时刻是否会碰撞(计算原理图如下)。

该算法的优点是避障的准确度高,每个队员都可以有自己的行为。缺点是运算量较大,大队伍运算时效率低。

四、快速小队伍动态势场避障寻路算法介绍

本算法结合上述A*和势场寻路的算法和特点,实现快速动态避障寻路。算法基本步骤介绍如下:

第一步:确定队员的宽度(一般是直径、或者宽度)和通常情况下队伍的整体宽度(包括队员数、松散程度、阵型等因素)

第二步:确定格子宽度,一般一个格子可以最多容纳2或者4个队员,但是在通常情况下只有一个队员,这样队伍看起来比较自然。

第三步:准备好地图数据文件,包括阻挡等信息。

第四步:当某个队伍需要寻路时,先用A*寻路,计算出最优路径。

第五步:以队伍半径,动态计算出路径的沿途势场,作为一个势场层。如果有多个队伍寻路,则形成多个层。如果有队员在该势场层所有格子之外,则判断该队员所在格子的邻近格子的势场,然后计算该格子的势场方向,然后将该格子加入势场层。势场层可以进行四叉树、AABB树优化。

第六步:队伍开始移动,逐一计算队员运动方向等,优先计算队伍前面的和距离阻挡近的,然后是中间的。判断队员所在格子的最优方向是否有其他队员,如果没有就走向这个格子;如果有则走次优方向;如果仍然没有则停止移动。

第七步:遇到路径变狭窄,则优先让队员挤进相同格子,如果挤不进去,则停止;如果路径变宽则让队员松散开。此时可能会变速(往里挤的速度会慢一点,松散开的速度会快一些)。

第八步:两个队伍相遇,如果队伍是松散状态,每个格子可以容纳多余1个的队员,则可以相交而过。如果格子里的兵满了,则会发生拥挤。此时应该判断那个一队伍有优先通过权力(先到先行、骑兵大于步兵等)。

第九步:突然出现障碍物,则需要从第四步重新计算。

五、其他

如果队员体积不同、速度不同等其他条件,需要按照具体需求改进算法。实测百人左右的队伍基本没什么压力。

第五步形成势场层后的效果图如下:

      

 整体效果视频如下(感谢网友云中漫步提供思路和视频):

整体效果视频,提取码ybk7​​​​​​​

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 人工势场法是一种常用的路径规划算法,用于在环境中避开障碍物并找到一条最优路径。在动态环境中,融合人工势场法可以帮助机器人或者无人驾驶车辆在移过程中躲避动态障碍物。 融合人工势场法的思想是模拟物体间的相互作用力。首先,为静态障碍物和目标点分别设定吸引力和斥力。目标点的吸引力会引导机器人朝着目标前进,而障碍物的斥力会推机器人远离障碍物。然后,将这些力与机器人自身力学模型结合,计算机器人所受到的合力,从而产生一个合适的控制指令。 在动态环境中,需要考虑到障碍物位置的变化。为了实现躲避动态障碍物,我们可以通过传感技术获取动态障碍物的位置信息,并实时更新势场。一种常见的方法是使用感知设备(如摄像头或激光雷达)来检测障碍物,并将其位置信息与已知的静态障碍物的信息相结合。然后,根据动态障碍物的位置,调整势场的斥力,使得机器人能够避开动态障碍物。 融合人工势场法躲避动态障碍的优势在于简单且易于实现。然而,也存在一些挑战,例如如何准确获取动态障碍物的位置、如何对势场进行实时更新等。因此,针对特定的应用景,需要综合考虑算法的优劣势,并根据需求选择适合的路径规划算法。 ### 回答2: 融合人工势场法和动态障碍躲避算法,可以实现机器人在复杂环境中避开移障碍物的能力。人工势场法是一种基于引力和斥力的方法,通过设置虚拟势场来引导机器人完成路径规划和避障任务。动态障碍躲避算法则用于检测和预测移障碍的轨迹,以便机器人及时做出回避决策。 在融合人工势场法和动态障碍躲避算法的过程中,首先利用传感器获取环境信息,包括机器人当前位置、障碍物位置和移速度。然后,根据这些信息计算机器人与障碍物之间的引力和斥力。引力使机器人朝目标前进,斥力使机器人远离障碍物。 同时,动态障碍躲避算法通过预测障碍物的运轨迹,将其作为额外的斥力输入到人工势场中。这样一来,机器人既能根据障碍物的位置做出适应性的躲避作,又能根据障碍物的运轨迹进行实时调整。 最后,根据计算得到的合力,机器人可以根据导航算法进行路径规划,并实时调整自身的速度和方向。当机器人接近动态障碍物时,斥力增大,从而避免碰撞。一旦机器人避开障碍物,斥力减小,使机器人能够继续朝着目标前进。 综上所述,融合人工势场法和动态障碍躲避算法的方法,可以使机器人在动态环境中灵活、准确地躲避障碍物,实现安全、高效的导航和路径规划能力。它在无人驾驶、机器人导航等领域具有广泛的应用前景。 ### 回答3: 融合人工势场法躲避动态障碍是一种常见的机器人路径规划方法。在这种方法中,机器人利用人工势场法来生成一种人工势场,来躲避动态障碍物。 首先,机器人会根据动态障碍物的运情况和机器人自身的感知能力,获取到障碍物的位置和速度信息。然后,机器人会根据这些信息,计算出每个障碍物对机器人的斥力大小和方向。通常情况下,障碍物越靠近机器人,斥力就越大,机器人就越需要避开。 接下来,机器人会根据动态障碍物的斥力和目标点的引力,计算出机器人所处位置的合力矢量,并根据这个合力矢量来确定机器人的运方向。通常情况下,机器人会选择合力矢量指向的方向作为机器人的移方向,这样就能够躲避动态障碍。 在实际运行中,机器人会不断地感知动态障碍物的变化,重新计算势场,并根据最新的势场信息来规划路径。这样,机器人就能够在动态环境中实时地避开障碍物,达到躲避动态障碍的目的。 总的来说,融合人工势场法躲避动态障碍是一种通过调整机器人的运方向,避开障碍物的路径规划方法。机器人通过感知动态障碍物的位置和速度信息,利用人工势场法计算出机器人的合力矢量,并根据合力矢量来确定机器人的运方向,从而实现了在动态环境中躲避障碍物的目标。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐鹏V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值