Background: I have access to a UR-10, 6DOF robotic arm through my school (I'm very new to robotics). I know the desired set of linear speeds that I want in the x,y, z-direction in terms of the end effector ([x,y,z,rx =0, ry,=0, rz =0]). Using an analog controller I receive linear speeds in the x,y, z-direction ranging from -.1 -.1m/s.

I found the forward kinematics for the UR-10 online and begin to derive the Jacobian Matrix. (If anyone has the Jacobian matrix for a UR-10 that would be awesome.) Since I'm only interested in the linear motion, where rx,ry,rz =0 I thought I could simplify my Jacobian to a 3x3 matrix.

I realized that by doing so I would be unable able to solve for all the joints speeds 1-6.

$J^{-1} \dot{X} = \dot{Q}$

where $J^{-1}$ is the inverse Jacobian, $\dot{X}$ is the Cartesian velocity vector and $\dot{Q}$ is the joint velocity vector. With the above simplification [3x3][3x1] = [3x1] joint velocity vector.

However, I need a 6x1, so I have the speed for each joint.

What am I doing wrong?

What are the other 3 equations I would need to define a full 6x6 Jacobian and solve for the appropriate joint speeds?

EDIT: I foresee a problem that since my linear speeds change incrementally there may be singularities when calculating my Inverse Jacobian how could I work around that?

  • $\begingroup$ Passing comment on the numbers here, since your username is NoviceCoder - use leading zeros whenever you have a decimal number, try to avoid using the "-" symbol unless you actually mean minus, and then I personally also try to use the parenthesis to offset a negative number. You wrote -.1 -.1m/s, which I would personally rewrite as (-0.1) to 0.1 m/s. Sometimes negative signs and decimals can get lost in a wall of text/code. Again, passing advice - take with a grain of salt :) $\endgroup$
    – Chuck
    Aug 2, 2018 at 14:46

1 Answer 1


If you are only interested in linear motion, instead of simplifying the Jacobian to a 3x3 matrix, you can express this contraint in the velocity componentet and have

$\dot{X} = \begin{bmatrix} \dot{x} \\ \dot{y} \\ \dot{z} \\ 0 \\ 0 \\ 0 \end{bmatrix}$

and still use the 6x6 Jacobian. This will result in joint velocities which to not alter the current orientation of the end-effector, only the position.

$\dot{Q} = J^{-1}\dot{X}$

  • $\begingroup$ This is definitely the way to go. If you want something to be zero, you can't just make it zero and assume you can remove it; you have to set the reference to zero and let the robot do its thing. $\endgroup$
    – Chuck
    Aug 2, 2018 at 14:41
  • $\begingroup$ Then what equations am I suppose to use for the angular speeds for Rx, Ry, Rz? $\endgroup$ Aug 2, 2018 at 22:04

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.