多个机器人同时进行路径规划

时间:2017-09-23 19:19:23

标签: python algorithm graph-algorithm search-tree

enter image description here plotted path

Image1完美地表示了问题并显示了机器人能够自由运动。

Square广场>起源, Circle->目的地。

这两个机器人将同时工作。 如何引导这些机器人而不会相互死锁 如果他们中的任何人先行,那么如何选择哪一个。

(上面的例子只是一个例子,我知道在这种情况下,我们可以随意阻止他们中的任何人并逃脱它,但我正在寻找一个通用的解决方案。禁止最近邻方法。) 注意:除了上排和下排外,机器人无法移动。

我有一个所有X标记点的字典,以及下面的ID和坐标中的路线,

# X generated points  
{1: [0, 0], 2: [0, 30], 3: [0, 60], 4: [0, 90], 5: [30, 0], 6: [30, 30], 7: [30, 60], 8: [30, 90], 9: [60, 0], 10: [60, 30], 11: [60, 60], 12: [60, 90], 13: [90, 0], 14: [90, 30], 15: [90, 60], 16: [90, 90]}

# Routes:
red=[11,12,8,4]
blue=[7,8,12,6]

3 个答案:

答案 0 :(得分:1)

在潜在场地中进行梯度下降。

将您的电路板视为三维(OK,2.5维),其中“山脉”是障碍物,如墙壁,以及目标所在的“山谷”。每个机器人都保持自己的潜在场,其分辨率可以与您绘制的网格相同或更高。字段可以随时间t而变化。

所以现在你有了一个函数z(x, y, t),你可以在机器人的直接邻域中进行探测,你可以在其上计算增量(渐变),向你显示“下山”的方式,朝向目标的方式州。例如,在穿过走廊时,您的机器人更喜欢沿着中心向下,因为潜在的场地会从墙壁向外延伸,从根本上驱逐机器人。你画的网格周围是4个无法通行的墙壁。

现在让我们从固定障碍转向移动对等机器人。听起来你有机会让机器人向同行广播其意图。 机器人有一个A *计划器,它预测它将在某些未来某个时间访问某些位置。当然,由于传感器噪音和事件的不确定性,这可能无法解决,但这是一个计划。所以广播给同行。他们将增加他们正在使用的潜在场地的预期路径,因此其他机器人像墙壁和固定物体一样发挥排斥场。这鼓励同伴计划一个轨迹,该轨迹围绕预期将来在某个位置的障碍物(机器人)。人们仍然可以遇到局部最大值和死锁,因此仍然需要一定量的随机退避。例如,两个在大厅里正面碰撞的机器人会有一些随机的噪音,希望选择一侧或另一侧,但是它是伦敦还是曼哈顿驾驶规则,左侧或右侧是不确定的。

像洪水填充这样的技术可以从目标向外传播梯度激励,以鼓励机器人“远离”目标移动,以便在迷宫障碍物周围移动。

这种方法适用于具有零星感应/通信的自主机器人,也适用于中央控制的机器人。中央控制器将为每个机器人维持一个计划,并且每个机器人还有一个潜在的场地,对应于障碍物和对等点。在第一个动作命令被发送到物理机器人之前,可以通过Planner组件组装从头到尾的轨迹。如果规划人员穿过机器人1..N,则较低编号的机器人将倾向于获得较短的路径,因为他们首先宣布计划并享有更大的移动自由度。例如,如果紫色首先在t0移动,那么它的潜在场将基本上与t1及其后的墙相混合,因此Pink自然会制定避开墙的计划,因此两者保持冲突。您可以将此视为紫色优先于粉红色。

答案 1 :(得分:1)

如果您的迷宫/网格有很多选项可以从源到目标,下面的“贪婪”算法将起作用:

  • 使用shorthest path algorithm绘制第一个机器人的路径。
  • 从迷宫
  • 中删除找到的路径的所有顶点
  • 重复下一个机器人

这一次解决了一个机器人的路线。通过从迷宫中移除先前机器人的路径,可以防止其他机器人使用相同的路径。

有两个机器人试图占用同一个节点的可能性,但这不会使它们死锁,因为它们的条目退出路径是唯一的。两个机器人中的一个只需要等待一转,直到另一个机器人消失。让机器人[i]优先于我的机器人[j]

答案 2 :(得分:1)

让所有机器人在外圈转弯,直到距目的地一步,目的地为空。在这种情况下,移动到目标点。

因此算法变为:

  • 如果在内圈和外圈是自由的,那就移动到那里;否则等待一个周期(或者如果不允许,则在内圈中迈出一步)
  • 如果在外圈,检查目的地是否距离1步。如果是这样,那就去吧。否则,在外圈上移动一步。

没有碰撞。没有奇怪的情况。 100%的工作时间。

roundabout

应用于您的示例:机器人A将分三个步骤回家。机器人B需要11步。

solution