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_qntmovej(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
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.
Thanks for your answer!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.
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.
What is your TCP offset? Does it have some component of x or y in it, or some rotation around x or y?
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.
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