新闻
如何工作:RoboDK的新PRM运动计划
发布05/30/2019
我们的最新功能- RoboDK PRM运动规划器-允许您创建人工智能动力机器人轨迹在触摸一个按钮。但它是如何工作的呢?
我们并不总是拥有一个清晰、自由的工作空间,不是吗?这也适用于我们自己的工作空间(例如,我的办公桌上堆满了不必要的东西)。我们机器人的工作空间也是如此。
有时机器人的工作空间只是比我们计划的要小。有时候,工作空间的中间有一根巨大的柱子,我们无法摆脱。有时,会有一堆无法存储在其他地方的盒子。
每当你的机器人有可能与工作空间中的某些东西发生碰撞时,我们新的运动规划器就会让你的生活更轻松。
通过触摸一个按钮,它可以为你的机器人程序创建一个无碰撞路径。
本文介绍了PRM运动规划,并解释了什么时候应该使用这个新特性。
PRM是什么意思?
新的RoboDK运动规划器使用了一种名为“PRM”的算法,即“概率路线图”。这是一种非常常见的运动计划器,原因我们一会儿就会讲到。
机器人有很多不同的运动规划算法,从最基本的到非常复杂的。如果你对运动规划器一点也不熟悉,请查看我们之前的文章《回到基础:机器人运动规划变得简单》
以下是PRM的意思:
- P =概率-“配置空间”中的点(即规划人员用来确定机器人在其工作空间中可以移动的点集)是由规划人员随机选择的。这种随机排列称为“概率”。另一种选择是“统一”放置,在整个工作空间中,点以固定的间隔放置。
- RM =路线图-PRM算法首先为整个机器人工作空间创建一个“路线图”。这张地图类似于你智能手机上的GPS导航功能。首先生成这张地图可能需要一些时间,但一旦生成,你就不需要再计算了,这样你就可以更快地“查询”地图。
从这两个术语中,我们可以对PRM运动计划器说:
- 它总会找到一个可行的机器人轨迹(如果存在的话)。
- 它节省了配置空间的路线图,以加速“查询”阶段。
这是PRM规划者受欢迎的两个原因。
人口、难民和移民事务局的工作方式
与一些运动规划者不同,PRM算法将他们的工作分成两个独立的阶段。在使用RoboDK中的规划器之前,你必须设置一些属性。
设置阶段
在运行计划器之前,您需要手动设置3个属性。
这是你如何设置这些属性在RoboDK(和他们的意思):
- 样本数目-您可以选择一些“样本”,这些样本由规划人员在构建阶段放置在机器人的工作空间周围。更少的示例意味着更快的构建阶段,但是更粗糙的路线图。
- 每个样本的边缘-每个样本都有一个最大的“边”数。每条边将两个样本连接在一起。同样,更少的边缘意味着更快的构建阶段,但是更粗糙的路线图。
- 机器人步骤(deg) -当PRM算法运行到构建阶段时,每次移动机器人一小段距离。这个距离由机器人的步长定义。一个更大的进步意味着一个更快的建设阶段,但也有更多的机会规划师将没有注意到潜在的碰撞。
然后单击“Update Map”开始构建阶段。
阶段1:建设(慢)
计划的第一阶段是生成路线图。这可能需要很长时间(大约15-30分钟,100个样品,每个样品有25个边缘)。
以下是构建阶段的工作原理:
- 规划者将一个“样本”放置在机器人工作空间的自由空间的任意位置。
- 然后算法测试这个样本和周围样本之间的路径。它通过“机器人步”沿路径移动机器人,并检查是否有碰撞。如果路径是免费的,它将该路径作为“边缘”添加到路线图中。
- 当规划器达到此示例的最大边数时,它将移动到下一个示例。
你可以看到为什么这个阶段需要很长时间-算法有很多样本要测试。幸运的是,一旦创建了地图,你就不需要再次计算它(除非你在环境中添加了新对象)。
阶段2:查询(快速)
查询阶段是运动规划中最常用的部分。您为计划器提供两个目标(开始目标和结束目标)。规划器然后尝试使用存储的路线图在它们之间创建无冲突的轨迹。
这就是这个阶段的工作原理
- 您选择两个目标,并告诉计划者“链接”它们。
- 如果其中任何一个目标还没有添加到路线图中,规划器将把它作为一个新示例添加,并在新位置和附近现有示例之间创建一组边缘。
- 然后,规划器使用它的路线图来找到两个目标之间距离最短的路径。
有了足够详细的路线图,您就可以在几秒钟内创建复杂的、无碰撞的机器人运动,只需点击一个按钮。
什么时候应该使用运动计划器?
在RoboDK中编写一个动作的标准方法是自己使用其中任何一种手动计划动作关节运动,线性运动或圆形运动。这仍然是让机器人在两个目标之间移动的最快方法。
然而,这些标准命令只有在两个目标之间有空闲空间时才能工作。如果途中有对象,您可能必须花费大量时间创建中间目标以避免冲突。
运动规划器提供了一种自动化这一过程的方法。它会自动找到在目标之间不发生碰撞的最佳运动集合。
但是,这里有一个取舍。在规划器开始为您寻找路径之前,您必须等待很长时间才能完成构建阶段。
大多数情况下,这种长时间的等待不是问题。你只需要“设置好然后忘记它。”在您做其他事情的同时,让构建阶段运行。
检查文档关于如何开始的更多细节。