避免机器人碰撞的 5 种简单方法(以及最后的手段)
如何阻止机器人与其工作区中的物体发生碰撞?以下是如何避免机器人碰撞而不会给自己带来麻烦。
最近 RoboDK 论坛上的一个问题突出了机器人的一个常见问题。用户 Micronexx 询问如何避免碰撞。他们询问 RoboDK 是否会自动生成无碰撞路径,或者是否需要用户手动调整。
这是一个比最初看起来更复杂的问题。 RoboDK 确实包含帮助您避免冲突的功能,包括一些自动路由。然而,机器人技术中的“避免碰撞”是一个深刻而复杂的话题。整个研究项目都致力于轨迹规划和避免碰撞。甚至为它开发了先进的人工智能算法。
好消息是,对于我们大多数人来说,事情不必那么复杂。有更简单的方法可以阻止机器人与物体发生碰撞。
避免机器人碰撞的 5 种简单方法
通常最好从简单开始。
在尝试解决机器人编程中的任何问题时,这是一个很好的经验法则。尽管机器人具有高级功能,但简单的工程解决方案往往是最好的。
这里有 5 种简单的方法来阻止机器人与物体发生碰撞。
1。从一开始就正确规划您的工作空间
当工作空间没有很好地规划时,最常发生碰撞。您应该通过规划空间来开始任何机器人集成,例如把它画在纸上。
计划机器人将在哪些区域移动,哪些区域将超出其范围。在开始将它们编程到机器人中之前,尝试用自己的手臂“模拟”机器人的一系列动作——这是一种非常有效的方法,可以在潜在问题出现之前减少它们,而且速度非常快。
2。物理消除潜在障碍
避免碰撞的最佳方法是确保机器人不会发生碰撞。这意味着从工作区移除任何可能阻碍机器人路径的东西。
确保工作空间的不同区域之间有清晰的路径。如果机器人将从一个位置拾取物体并将它们组装到另一个位置,请从这两个位置之间的工作区中移除所有东西。
这似乎很明显,但是当您使用离线编程时很容易忘记这样做。例如,您可能会在机器人工作区看到一根柱子并说“没关系。我会在机器人程序中避免它。”但是,因为你是在一个不存在柱子的模拟环境中编程,所以你忘记了它并编程机器人直接穿过它。
3。将真实世界与模拟相匹配
RoboDK 中的真实世界和模拟应尽可能紧密匹配。您可以通过两种方式实现:
- 在模拟中建立物理工作空间的准确模型 — 这涉及测量每个对象的精确位置并在软件中对其进行建模。这可能非常耗时,而且您越依赖模拟的准确性,出错的空间就越小。
- 从现实世界中移除不在模拟中的对象—— 这涉及通过移除对象来简化实际工作区。
在实践中,最好的选择是这些的组合。您从物理工作区中删除所有不必要的对象,并将所有必要的对象添加到模拟中。
4。手动调整编程目标
在开始使用复杂的防撞算法之前,请尝试自己调整机器人的动作。对于大多数应用程序,在 RoboDK 中手动移动目标是一种快速、有效且稳健的解决方案。
例如,如果机器人在执行关节移动命令期间与物体发生碰撞,只需添加额外的几个航点即可避开该物体。或者——甚至更好——首先询问对象是否真的需要在工作区中。
可以显着减少碰撞的一种做法是确定每个动作是“移动”动作还是“操作”动作。仅在没有障碍物的自由空间中进行移动。然后,在距离操作点一小段距离(也称为“接近距离”)停下来,并在执行操作移动之前小心地进入任务。
5。使用加工向导的新功能
机器人加工是您可能需要自动轨迹规划的一项任务。 RoboDK 可以使用其内置的加工向导轻松生成加工路径。
大多数情况下,如果您遵循上述建议,您将不会发生任何碰撞。但是,我们在最新版本的 RoboDK 中添加了在加工操作期间自动避免碰撞的选项。阅读 Albert 在论坛中的回复,其中解释了如何使用此新功能。
此功能通过围绕工具的 z 轴自动旋转机器人来避免碰撞。因此,它不会避免所有的碰撞,但它确实提高了加工向导的鲁棒性。
不得已:使用高级运动规划器
如果您已经完成了上述所有步骤,并且您决定仍然需要自动避碰,那么是时候打破“大炮”了。这意味着使用第三方运动规划算法来生成您的机器人轨迹。
有大量的轨迹规划器可以自动检测并避免碰撞。然而,大多数都是非常早期的研究项目,因此不是很可靠。此外,大多数都是为只能在二维中移动的移动机器人设计的。
然而,有一些不错的轨迹规划器适用于工业机器人操纵器。请注意,要使用它们,您必须进行一些认真的编程。
- 移动它! —— 动起来!是用于机器人操作的最先进的图形运动规划器之一。它使用 OMPL 框架并提供了一个简单的(ish)图形界面。它被集成到 ROS 中。如果您已经熟悉 ROS,这可能是一个不错的选择。如果没有,您可能会有相当长的学习曲线。
- 打开运动规划库 (OMPL) — 可以单独使用 OMPL,无需 MoveIt!它提供 C++ 库,也有 Python 绑定。有相当数量的文档,但由于库有很多功能,它仍然会涉及到学习曲线。
- 气泡 — 这是 RoboDK 的 CEO Albert Nubiola 推荐的小型图书馆。它是一个独立的机械手运动规划器,使用概率路线图算法 (PRM)。它是用 C++ 编写的,文档很少。但是,如果您是一名编程奇才并且准备迎接挑战,那么它可以为使用 MoveIt 提供一个不那么臃肿的解决方案。
一般来说,最好使用一种更简单的方法来避免碰撞。但是,如果您需要使用高级算法,那么避免碰撞是一个有趣的话题。
哪些碰撞给您的机器人应用程序带来了问题? 在下面的评论中告诉我们,或加入 LinkedIn、Twitter、Facebook、Instagram 或 RoboDK 论坛上的讨论。
工业机器人