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


2 Answers 2


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$ Commented Dec 30, 2018 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},$$

where change revolute to prismatic joint so that jacobian is correct that way $$J_i = \begin{cases} \begin{bmatrix}z_{i - 1}\\0_{3\times1}\end{bmatrix} & \text{the $i^\text{th}$ joint is prismatic}\\ \begin{bmatrix}z_{i - 1} \times (o_n - o_{i - 1})\\z_{i - 1}\end{bmatrix} & \text{the $i^\text{th}$ joint is revolute (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 3 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
    Commented Nov 28, 2018 at 15:06
  • $\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$ Commented Nov 28, 2018 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
    Commented Nov 28, 2018 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$
    – Jonathan F
    Commented Nov 29, 2018 at 4:19
  • $\begingroup$ Not sure why this got bumped up in the feed but I want to address the @50k4 comment about having to use DH parameters with my approach. That is just not so. The F symbol represents a vector of functions of $\theta$ variables and can be derived in any number of ways. It is not a matrix representation such as DH. Sorry I was not more clear. $\endgroup$
    – SteveO
    Commented Aug 10, 2021 at 23:25

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.