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]
答案 0 :(得分:1)
在潜在场地中进行梯度下降。
将您的电路板视为三维(OK,2.5维),其中“山脉”是障碍物,如墙壁,以及目标所在的“山谷”。每个机器人都保持自己的潜在场,其分辨率可以与您绘制的网格相同或更高。字段可以随时间t
而变化。
所以现在你有了一个函数z(x, y, t)
,你可以在机器人的直接邻域中进行探测,你可以在其上计算增量(渐变),向你显示“下山”的方式,朝向目标的方式州。例如,在穿过走廊时,您的机器人更喜欢沿着中心向下,因为潜在的场地会从墙壁向外延伸,从根本上驱逐机器人。你画的网格周围是4个无法通行的墙壁。
现在让我们从固定障碍转向移动对等机器人。听起来你有机会让机器人向同行广播其意图。 机器人有一个A *计划器,它预测它将在某些未来某个时间访问某些位置。当然,由于传感器噪音和事件的不确定性,这可能无法解决,但这是一个计划。所以广播给同行。他们将增加他们正在使用的潜在场地的预期路径,因此其他机器人像墙壁和固定物体一样发挥排斥场。这鼓励同伴计划一个轨迹,该轨迹围绕预期将来在某个位置的障碍物(机器人)。人们仍然可以遇到局部最大值和死锁,因此仍然需要一定量的随机退避。例如,两个在大厅里正面碰撞的机器人会有一些随机的噪音,希望选择一侧或另一侧,但是它是伦敦还是曼哈顿驾驶规则,左侧或右侧是不确定的。
像洪水填充这样的技术可以从目标向外传播梯度激励,以鼓励机器人“远离”目标移动,以便在迷宫障碍物周围移动。
这种方法适用于具有零星感应/通信的自主机器人,也适用于中央控制的机器人。中央控制器将为每个机器人维持一个计划,并且每个机器人还有一个潜在的场地,对应于障碍物和对等点。在第一个动作命令被发送到物理机器人之前,可以通过Planner组件组装从头到尾的轨迹。如果规划人员穿过机器人1..N,则较低编号的机器人将倾向于获得较短的路径,因为他们首先宣布计划并享有更大的移动自由度。例如,如果紫色首先在t0移动,那么它的潜在场将基本上与t1及其后的墙相混合,因此Pink自然会制定避开墙的计划,因此两者保持冲突。您可以将此视为紫色优先于粉红色。
答案 1 :(得分:1)
如果您的迷宫/网格有很多选项可以从源到目标,下面的“贪婪”算法将起作用:
这一次解决了一个机器人的路线。通过从迷宫中移除先前机器人的路径,可以防止其他机器人使用相同的路径。
有两个机器人试图占用同一个节点的可能性,但这不会使它们死锁,因为它们的条目和退出路径是唯一的。两个机器人中的一个只需要等待一转,直到另一个机器人消失。让机器人[i]优先于我的机器人[j]
答案 2 :(得分:1)