I have a robot with 6 DOF. I read a lot of tutorial on how to compute the Jacobian, but usually all examples are for planar robots with 2DOF.

I don't understand how can I get the Jacobian of a 6 DOF robot.

I know that Torque = J_transpose * Force.

I want to compute the force of my end effector when I apply some torque. For this reason I need the Jacobian.

Thank you very much


Write the forward kinematic equations $$\vec(x) = F\vec(\theta)$$

Taking the partial derivatives of each $\vec (x)$ term with respect to each joint variable $\vec(\theta)$ will give you $J$.

  • $\begingroup$ Typically F(.) has a value in SE(3) so there are 12 partial derivatives (actually 16 but the bottom row are all zero since the elements are constant). Nine of those partial derivatives, the rotation part $\dot{R}$ are related to the angular velocity, 3 elements, via Rdot = [omega]_x R. [Pity no math notation allowed in comments] $\endgroup$ – Peter Corke Dec 30 '18 at 2:45

By taking the time derivative of the forward kinematics equation, you get a Jacobian equation, as @steveo said in his answer. What is interesting is that by using some properties of rotation matrices, we can derive a rather impressive formula for computing a Jacobian.

In short, a Jacobian can be computed as

$$J = \begin{bmatrix}J_1 & J_2 & \cdots J_n\end{bmatrix},$$


$$J_i = \begin{cases} \begin{bmatrix}z_{i - 1}\\0_{3\times1}\end{bmatrix} & \text{the $i^\text{th}$ joint is revolute}\\ \begin{bmatrix}z_{i - 1} \times (o_n - o_{i - 1})\\z_{i - 1}\end{bmatrix} & \text{the $i^\text{th}$ joint is prismatic (linear)} \end{cases},$$ $z_i$ is the axis of the $i^\text{th}$ joint and $o_i$ is the origin of the $i^\text{th}$ frame.

Note that a Jacobian matrix $J$ is actually a function of a joint value $q$. (We can also see this from the above equation as the joint position $o_i$ and the joint orientation $z_i$ change when the robot changes joint values.) For 6-DOF robots, although it is very unlikely that you will be able to obtain a closed form formula for $J(q)$, computing $J$ for a given $q$ is pretty straightforward.

For more details, see Chapter 5 of Robots Dynamics and Control (Spong et al.).

  • $\begingroup$ Please note that, in contrary to @SteveO `s answer this method only works if the DH Convention was used to for defining the coordinate systems. Also, if it is a serial manipulator the Jacobi will have a closed form expression. $\endgroup$ – 50k4 Nov 28 '18 at 15:06
  • $\begingroup$ @50k4 Interesting points. Thanks a lot. $\endgroup$ – Petch Puttichai Nov 28 '18 at 15:11
  • $\begingroup$ @50k4 By the way, could you help elaborate a bit more why the above formulation breaks when a convention other than DH convention is used? $\endgroup$ – Petch Puttichai Nov 28 '18 at 15:25
  • 2
    $\begingroup$ you are using z-axis coordinates. if the motor axis is not the z axis, multiplying it with the axis velocity returns nonsence. The motor axis is z-axis only because DH says so... $\endgroup$ – 50k4 Nov 28 '18 at 15:28
  • $\begingroup$ Thank you for your clarifications. I am using DH convention. I found libraries to compute the Jacobian but I want to understand and do it by myself. $\endgroup$ – user3018940 Nov 29 '18 at 4:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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