Problems with joint movement during palletizing (UR10 CB3)

Been trying to depalletize in a machine trending setup but have problems getting the robot to move correctly during program execution.

The best way (for me at least) to explain the problem is that the robot is positioned in an awkward position while picking the parts from the pallet.

Think of trying to scratch yourself in your armpit and it will give you a pretty good picture of the pose. The gripper is parallell to the pallet and fairly close to it when picking the part.

Picking parts between corners 1 & 2 is no problem, but when closing in on corners 3 & 4 the robot wants to flip wrist 1 which sends the robot down into the pallet,ending up with a protective stop. Pallet size is about 600x900mm and im trying to pick 9x21 parts. The issues start occurring about half way down the pallet.

From what i can see im not that close to any joint limits and have tried an pre-approach position directly above the first part on the 21st row but it still flips.

Seems illogical to me why the robot would want to flip the wrist to reach the pick pose when it is a much longer way there than just “doing it the right way”.

I figure joint limits and security planes are out of the question since they wont affect the way the robot moves, just trigger protective stops if it tries to move beyond those limits/planes.

Any of you guys have any input on what i can do to get around this problem?

Thanks

If it “sometimes” flips the wrong way try adding the “Use joint positions” in the waypoint page. Sometimes the quickest way to a point in mathematics is by far the most logical and you end up with a funky spin trying to itch your own armpit

-Magnus

As mentioned, the “use joint positions” option in the movej going to the pre-pick point usually helps.
Also make sure your TCP is set correctly - I once had an otherwise unnoticed error in the TCP. When I reconfigured the TCP a bunch of those flipping errors went away.
In a number of cases we still need to add intermediate points in order to keep the arm in the correct position. You might end up having to divide the pallet into sections, and have the gripper go to different intermediate points depending on which section it’s going to.

Along those lines, on systems which have complicated moves, it can be difficult to get the arm back into correct orientation if there’s an error part way through the cycle. I’ll create a separate program which moves each joint, starting with the outermost, to bring it back to home in an orderly manner which doesn’t hit anything. You have the operator freedrive to stretch the arm out into a clear area then run the program. This avoids having the arm start a program with joints in different positions.