Pose doesnt take the right angle

Hello,

I’m working with a list of poses that get put in movej(list[counter])

now I have the problem that one of those poses won’t take the position I want it to take because it’s further away than another pose:
image

This is the step before, and the pose its supposed to go to, yet instead of just moving wrist 1,2 and 3, it will move wrist 3 counter clockwise and stretch out further with wrist 4 and 5. How can i make sure it takes the exact pose i want it to take.

any and all tips are welcome,

thanks.

in this case I got it to work by moving the point, after all this was just a point to help it turn the right way. But incase I need to do something similar again I would still like to know how to properly fix this.

luca,

We’ve run into that problem also, and I don’t always understand why it’s not going how/where expected.

Here are some things I look at:

  1. verify your TCP is correctly defined. I once had an issue going to several locations. I went through the TCP configuration again and most of my problems went away. I don’t remember for sure, but it was probably an axis direction issue.

  2. in MoveJ command, select “use joint angles”, which is supposed to make it go to the same actual joint positions each time. I’ve found that isn’t always the case, however.

  3. Set intermediate waypoints to make the robot step through complicated moves in a repeatable manner without trying to take shortcuts. This is especially useful when the robot is passing through/near singularities.

I do find it strange that the robot will take “shortcuts” to get to a pose when it should be obvious that going that way will cause joint overtravels.

One other thing I typically do to deal with the possibility of the robot having an issue and shutting down in an unplanned position:
If the operator feels that the the robot is in a “lost” position, and may crash into things if it’s restarted from that position, they:
a) Manually move the robot to a clear orientation ( usually reaching straight up).
b) run a program I created for that system which - one joint at a time - moves the robot back into its starting position without hitting anything. This ensures the robot can restart with all the joints in the correct position.

Hello,

Thank you for your response,

in this case the TCP should be accurate as I’ve recently measured it.
I’m not sure how to use “use joint positions” when using movej as a script command in polyscope.
Luckily these moves were just steps inbetween imporant moves so I was able to alter them until they worked.
I also usually shut the cobot down in pretty normal positions, not straight up, but also not very complex.

I was able to solve the problem in my case, but im not so sure about future cases.

Check out the MoveJ command in the script manual. It tells you how to use it. Instead of passing just a Pose, it can take an array of joint positions and a Pose for a reference position. You can produce joint angles from a Pose using “get_inverse_kin()” if needed.