How do you stop your robot from colliding with objects in its workspace? Here’s how to avoid robot collisions without making life hard for yourself.
最近的一个问题关于RoboDK论坛highlighted a common issue with robots. User Micronexx asked how to avoid collisions. They asked if RoboDK generates collision-free paths automatically, or whether the user has to make manual adjustments.
这是一个比最初看起来更复杂的问题。RoboDK当然包括帮助您避免碰撞的功能,包括一些自动路由。然而,机器人技术中的“碰撞避免”是一个深刻而复杂的话题。Entire research projectsare devoted to trajectory planning and collision avoidance. Advanced Artificial Intelligence algorithms甚至被发达吗.
The good news is that, for most of us, things don’t have to be so complicated. There are easier ways to stop your robot colliding with objects.
5 Easy Ways to Avoid Robot Collisions
It’s usually best to start simple.
当你试图解决机器人编程中的任何问题时,这是一个很好的经验法则。尽管机器人具有先进的功能,但简单的工程解决方案往往是最好的。
Here are 5 simple ways to stop your robot colliding with objects.
1. Plan Your Workspace Properly from the Start
Collisions occur most often when the workspace hasn’t been well planned. You should start any robot integration by planning the space, e.g. by sketching it out on paper.
Plan which areas the robot will move around in and which areas will be outside of its reach. Try ‘acting out’ the robot’s sequence of motions with your own arm before you start to program them into the robot — this is a very effective method for reducing potential issues before they arise, and it’s very quick to do.
2.实际清除潜在障碍物
The best way to avoid collisions is to ensure there is nothing for the robot to collide with. This means removing anything which could obstruct the robot’s path from the workspace.
Make sure that there is a clear path between different areas of the workspace. If the robot will pick up objects from one location and assemble them in another, remove everything from the workspace between these two locations.
这似乎很明显,但在使用脱机编程时,很容易忘记这样做。例如,你可能会在机器人工作区看到一根柱子,然后说“没关系,我会在机器人程序中避开它。”但是,因为你是在一个模拟的环境中编程,而这个环境中根本不存在柱子,所以你会忘记它,然后编程让机器人直接穿过柱子。
3.将真实世界与模拟相匹配
The real world and the simulation within RoboDK should be as closely matched as possible. You can achieve this in 2 ways:
- Make an accurate model of the physical workspace within the simulation —这包括测量每个物体的精确位置,并在软件中对其建模。这可能非常耗时,而且你越依赖模拟的准确性,出错的空间就越小。
- 从真实世界中删除不在模拟中的对象-这涉及到通过删除对象来简化实际工作空间。
In practice, the best option is a combination of these. You remove all unnecessary objects from the physical workspace and add all necessary objects into the simulation.
4.手动调整编程目标
Before you start using complex collision avoidance algorithms, try tweaking the robot’s movements yourself. For most applications, manually moving the targets within RoboDK is a quick, effective, and robust solution.
For example, if the robot collides with an object during a Joint Move command, simply add an extra couple of waypoints to avoid the object. Or — even better — ask if the object really needs to be in the workspace in the first place.
One practice which can significantly reduce collisions is to decide if each movement is a “traveling” move or an “operational” move. Only perform traveling moves in free space where there are no obstructions. Then, stop a small distance away from the operation (aka the “approach distance”) and carefully move into the task before carrying out the operational move.
5.使用加工向导的新功能
机器人加工是一项可能需要自动轨迹规划的任务。RoboDK使得使用its in-built machining wizard.
大多数情况下,如果遵循上述建议,您将不会发生任何碰撞。然而,我们在最新版本的RoboDK中添加了一个选项,可以在加工过程中自动避免碰撞。Read Albert’s response in the forumwhich explains how to use this new feature.
该功能通过自动围绕工具的z轴旋转机器人来避免碰撞。因此,它不会避免所有碰撞,但确实提高了加工向导的健壮性。
Last Resort: Use an Advanced Motion Planner
If you’ve gone through all of the steps above and you have decided that you still need autonomous collision avoidance, it’s time to break out the “big guns.” This means using a third-party motion planning algorithms to generate your robot trajectory.
有大量的轨迹规划器可以自动检测和避免碰撞。然而,大多数都是非常早期的研究项目,因此不太可靠。此外,大多数都是为只在二维空间移动的移动机器人设计的。
There are, however, a few decent trajectory planners which work for industrial robotic manipulators. Be warned, to use them you will have to do some serious programming.
- 快-快!是最先进的机器人操作图形运动规划器之一。它使用OMPL框架,并提供了一个简单(ish)的图形界面。它被整合到ROS中。如果您已经熟悉ROS,这可能是一个不错的选择。如果没有,你可能会有一段相当长的学习曲线。
- Open Motion Planning Library(OMPL) — It is possible to use OMPL alone, without MoveIt! It provides libraries in C++ and also has Python bindings. There is a reasonable amount of documentation, but it will still involve a learning curve as the library has a lot of functionality.
- 泡沫-这是RoboDK首席执行官Albert Nubiola推荐的一个小型图书馆。它是一个独立的机械手运动规划器,使用概率路线图算法(PRM)。它是用C++编写的,文档很少。但是,如果你是一个编程向导,并且准备迎接挑战,那么它可以提供一个使用MoveIt的简单得多的解决方案。
一般来说,最好使用一种更简单的方法来避免碰撞。但是,如果你需要使用先进的算法,避免碰撞是一个有趣的话题。
Which collisions have caused problems for your robot applications?Tell us in the comments below or join the discussion onLinkedIn,啁啾,脸谱网,一款图片分享应用或者的RoboDK Forum.





