Discussion
Velocity and Acceleration of movel() while rotating |
115 views
|
Answered | |
/ Most recent by ThomasS
in Programming
|
5 comments |

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
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.
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.