Singularity problems are a real nuisance for robot welding. Here are 5 tips to avoid them and ensure a great weld every time.
Imagine you are using a robot to weld a line with an arc welding tool. The workpiece is large and the weld line is almost as long as the robot’s entire reachable workspace. You program the start and end points into the robot. Then, you instruct it to weld a straight line between those two points.
You press start on the robot program. The robot moves to the start position. The welding tool fires up. The robot begins to weld along the line.
At first, everything seems to be going well. The robot follows a perfectly straight line along the edge of the workpiece.
But then, in the middle of the line, it all goes wrong. The robot suddenly slows down, almost to a halt. One of its joints spins around 180 degrees while the tip of the weld tool stays static.
A large pool of weld gathers beneath it. Then, the robot starts to move again and continues the line.
The workpiece is ruined. It is left with an unsightly blob of weld in the middle of the line.
What happened? It was all going so well!
The culprit was… a singularity.
Singularities are a nuisance for robot programmers. Here are 5 tips for avoiding them in robot welding.
Tip 1: Learn the Basics of Robot Singularities
The definition of a singularity — in mathematical terms — is that an equation “tends to infinity.” When we’re dealing with physical systems (which robots are) this means that the math is trying to describe something which is impossible in the real world.
Singularities can turn up in many systems: the center of black holes theoretically have infinite density; the tip of a water droplet is theoretically infinitely thin; and our welding robot theoretically needs to move infinitely fast when it reaches that dodgy point in the middle of the weld line.
In the case of robot programming, singularities usually turn up in one of two ways:
- Infinite velocity and acceleration — To complete the move, one or more of the robot joints would have to move at infinite velocity. This is the case in the example I just described. When one of the robot’s joints reaches its limit, it must turn 180 degrees to continue moving in the same direction. In order to keep the weld tool moving at a constant velocity, the motor in the joint would have to spin infinitely fast.
- Infinite stiffness — The robot moves into a position where one of the actuators would have to become infinitely stiff to hold the robot’s position. As this is impossible, the robot gets stuck until it is moved to a better position. This often shows up in robots that use linear actuators, such as Stewart Platforms, where the platform literally collapses upon reaching a singularity (as in this video).
Tip 2: Identify the Type of Singularity
Most welding tasks are completed by 6R robots (with 6 revolute joints). There are 3 types of singularity which can affect such robots. It is helpful to identify what type of singularity you are dealing with.
Each type is defined by which of the joints it affects:
- Wrist singularities — The Z axes of the robot’s wrist joints (joints 4 and 6) align. This makes one of the joints try to spin 180 degrees infinitely fast.
- Shoulder singularities — The Z axis of the robot’s shoulder joint (joint 1) aligns with either the robot’s base or joint 4. As a result, the affected joints try to spin 180 degrees infinitely fast.
- Elbow singularities — The robot reaches too far to the edge of its workspace, causing the center of its wrist to lie on the same plane as its elbow joints (joints 2 and 3). This causes the robot to get stuck.
This great video from ETS shows all three of these singularities in action.
Carefully consider the placement of your weld lines in the robot’s workspace. Avoid passing the weld tool through points which would cause the robot to enter these singularities.
Tip 3: Use the Right Programming Solution
Singularities are not easy to spot in your robot code. It’s very normal not to notice them until you download your program to the robot and it behaves strangely. By then, however, you have already taken the robot out of production to reprogram it.
But, it doesn’t have to be like this. You can detect singularities very easily by using the right programming solution in the first place.
RoboDK has automatic singularity detection. It will not let you program the robot to move through a singularity. Instead, it will give you a helpful warning which tells you that the move would have been a problem.
For example, I programmed the example welding scenario into RoboDK and it told me: “Movement is not possible. Joint 5 crosses 0 degrees. This is a singularity and is not allowed for a linear move.”
Tip 4: Only Restrict What Must Be Restricted
Sometimes, it seems like there is no way to make a weld line without hitting a singularity. You try moving the whole weld job to another part of the robot workspace but, for some reason, there is still a singularity issue.
In such circumstances, the issue is often that you have restricted the robot too much. For example, the orientation of the weld tool may be set to be exactly the same along the whole weld. The software then struggles to avoid the singularity while keeping this strict orientation.
Some types of welding (e.g. arc welding) allow for a little bit of leeway in the orientation of the tool. With RoboDK, you can instruct the program to give the solver some freedom to rotate the tool if necessary. See the Optimization Parameters section of the documentation for instructions on how to do this.
Tip 5: Ask for Help If You Need It
One of the most frustrating things about singularity problems is that they can be difficult to solve, especially if you have only recently started using robots for your welding tasks.
When you’re stuck with a problem, the best thing to do is reach out for help.
Where should you ask for help? In the RoboDK forum!
Our forum is the best place to solve your welding singularity issues. Just post a question in the general forum and we can help you out.