Background Information: I'm new to robotics and my school currently has access to a 6DOF Universal Robot (UR-10). I'm programming it using its scripting language URscript and the arm has these two commands...

  1. speedl(vector of speeds [x, y, z, Rx, Ry, Rz])

where the list of speeds are linked to the end effector.

  1. speedj(joints speeds[base, shoulder, elbow, wrist1, wrist2, wrist3]), given in rads/s

The built-in speedj is by far superior in terms of smooth motion, however using a PS3 controller it is much harder to control and thus I would like to be able send controls linear commands (left, right, fwd, back, up, and down) and have them be converted inappropriate joint speeds.

Problem: I want to move the arm linearly, but I don't know how to convert linear motion into an equivalent representation in terms of the joint speeds. Where should I start researching? Is there a topic that covers my question?

I doubt there's an immediate answer to my problem, but I'm unsure where to start looking. Any keywords that might facilitate my research would be awesome.

  • 1
    $\begingroup$ Is what you are looking for is inverse kinematics? $\endgroup$
    – fibonatic
    Jul 19, 2018 at 22:10
  • $\begingroup$ no really what I want is to be able to convert Tool tip speed (end effector speeds) into corresponding joint speeds. Say I'm given that my tooltip moves in x,y, and z direction at a particular velocity how can I convert those values into their equivalent joint speeds. $\endgroup$ Jul 19, 2018 at 22:22
  • $\begingroup$ There are not arbitrary joint velocities that map to a desired velocity in Cartesian space because the current positions of the joint angles matter. Imagine putting the arm in one position and only command one joint to move- then start it in a different configuration and apply the same joint speed command. You will notice that the Cartesian velocity is not the same! I agree with @fibonatic to look into inverse kinematics. $\endgroup$ Jul 19, 2018 at 22:48

1 Answer 1


Joint velocities and tool velocities are directly related through the following equation $$ \dot{x} = J(q)\dot{q}, $$ where $\dot{x} \in \mathbf{R}^6$ is the tool (linear and angular) velocities, $\dot{q} \in \mathbf{R}^n$ is the joint velocities ($n$ is the number of joints), and $J(q)$ is the Jacobian matrix, which depends on the robot joint values $q$.

I think this Jacobian is the mapping that you want. Maybe you want to search for robot Jacobian, etc.

  • $\begingroup$ Thanks this is a good jumping off point I appreciate the help. $\endgroup$ Jul 20, 2018 at 0:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.