#### Discussion

Back to discussions page
Posts: 3 Apprentice

Hey,

I am working with a UR10 and i am using the URscript to program the robot.

One task of the robot is to tighten and loosen some screws. For this I command the waypoints of the screws to catch them and after I command a rotation around the tcp z-axis. I am using the following simple command:

movel(pose_trans(get_forward_kin(),p[0,0,0,0,0,rot_qnt]),a,v)

So far everything is working and the robot is performing the correct rotation. Now I got the problem, that I have to be sure with which velocity the rotation is performed.

The description of the movel command says, that the unit of the given velocity is m/s. Since the calculated movement is just a rotation around a point, I don't know how to transform m/s in rad/s. Does someone know how the calculation is done?

As another solution I already tried to use the movej command. But then I got the problem that I am commanding the velocity of the fastest joint. And further a rotation of 180° around the tcp z-axis may not just lead to a movement of wrist 3. The most times the robot is calculating a movement of the five other wrists. For a rotation around the z-axis I am able to solve it:

joints = get_actual_joint_position()

joints[5] = joints[5] + rot_qnt

movej(joints,a,v)

But for a rotation around the tcp x- or y-axis - which I also need - this solution is not working. And I am also not sure, if the calculated movements are keeping the tcp at the same x, y and z coordinates.

I hope someone can help me. If there is another or even better solution for this task, I would be grateful to learn from you.

Thanks a lot and greetings,

Thomas

Tagged:

• Founding Pro, Tactile Sensor Beta Testers Posts: 1,261 Handy
Why not use the same pose_trans with the movej command?  We do movej all the time around the tcp and motion performs just as we expect.
• Posts: 3 Apprentice

The problem is that I also have to perform more than 180° and I already get a problem with more than 160°.

The calculation behind the movej command somehow calculates a rotation of the base, shoulder, elbow, wrist 1 and 2 instead of just wrist 3.

• Founding Pro, Tactile Sensor Beta Testers Posts: 1,261 Handy
Give it a qnear point that is close to the final solution you want. Or else it will pick the most joint efficient solution to get there.
• Founding Pro, Tactile Sensor Beta Testers Posts: 1,261 Handy
What is your TCP offset?  Does it have some component of x or y in it, or some rotation around x or y?
• Posts: 3 Apprentice

To answer the last question: no, it just has a z offset.

And the first idea I already tried in the following way:

joint_pos=get_actual_joint_positions()

movej(get_inverse_kin(pose_trans(get_forward_kin(),p[0,0,0,0,0,rot_qnt]),joint_pos),a,v)

In my mind the robot should realise that 5 of 6 joints are already at the perfect position.

As I want to use this function for many screws that are oriented in completely different ways and which have to be rotated by different values of degree, I am not able to define a unique qnear that always fits.

That is why I thought about using the movel where I can be sure that just wrist 3 will be moved. But there I have the problem with the velocity. I mean somehow the robot is interpretating a m/s as rad/s. So I am wondering if it is possible to find out the equation for this transformation of units.