Moving from waypoint to waypoint while keeping TCP pointed in one direction


I am writing a program that allows us to feed coordinates to the robot who then moves to these positions. I would like the robot to move only along the X,Y,Z-axes and keep the TCP always pointed downwards (aka towards the table the robot is mounted on) since I will have a screwdriver mounted on the robot.

My problem is that the robot starts flying all over the place when I run it using my script:

pos = get_actual_tcp_pose()
movep([86.25, 248.9, 0 , pos[3], pos[4], pos[5]], a = 1, v = 0.5) etc.

By doing this I was hoping I could move the robot along the X-Y-axes while keeping the TCP pointed downwards. I am assuming there is something really weird going on with the different coordinate-systems and I am just mixing them up. Any suggestions?

1 Like

Hi @sakari.salmi

Welcome to the UR community!

please note that the UR controller is expecting SI units. And the poses are given på the notation p[ ]

So I guess you should use a line like this:
movep(p[0.8625, 0.2489, 0 , pos[3], pos[4], pos[5]], a = 1, v = 0.5)

Else it will interpret it as a set of joint angles and make a forward kinematic calculation.

Best regards

Great! Thank you for the help - I will try it out. I actually could ask you (at least) one more question. What have I understood is that UR don’t really publish statistics about the accuracy of the robot, reliability yes, but that’s of no interest to me right now.

Let’s say I looped through 400-500 iterations of the above line with x and y as variables ( movep(p[x, y, 0 , pos[3], pos[4], pos[5]], a = 1, v = 0.5)) - would the robot accuracy of finding these coordinates deteriorate when moving through the loop? A colleague mentioned to me that in some cases it would be best to have a manually set waypoint you return to every once in a while to “reset” the increasing error. Our discussion was mainly regarding relative movement, but I was wondering if the same issue would be relevant here.

Yes, you are right that if the error is always contributing in the same direction. And you only have movements that are based on the current pose. Then you are exposed to an accumulating error.