Let's say we have a three revolute joint robot with the following DH parameter table:

enter image description here

Where the last row corresponds to the transformation between the last joint frame and the end-effector frame.

We can easily derive the transformation matrices from the DH table:

$$A_{i-1,i}=A_{z,\theta}\cdot A_{z,d}\cdot A_{x,a}\cdot A_{x,\alpha}$$

And get the absolute transformation matrix of the minimal configuration:

$$A_{0,2}=A_{0,1}\cdot A_{1,2}$$

And of the end-effector:

$$A_{0,3}=A_{0,2}\cdot A_{2,3}$$

What are the steps to calculate the Jacobian, without using the predefined formulas:

enter image description here

I know that there are some partial derivatives by each $\theta_i$ involved, but I'm not sure what the procedure is.


1 Answer 1


Your kinematic equation, which links TCP position to joint position is: $$X = A_{0,3} \times Q$$


$$ \begin{pmatrix} x \\ y\\ z\\ 1\end{pmatrix} = A_{0,3} \times \begin{pmatrix} \theta_1 \\ \theta_2\\ \theta_3\\ 1\end{pmatrix} $$

based on this, you will need to write:

$$ \left\{ \begin{eqnarray} x &=& f_x(\theta_1, \theta_2, \theta_3)\\ y &=& f_y(\theta_1, \theta_2, \theta_3)\\ z &=& f_z(\theta_1, \theta_2, \theta_3)\\ \alpha &=& f_\alpha(\theta_1, \theta_2, \theta_3)\\ \beta &=& f_\beta(\theta_1, \theta_2, \theta_3)\\ \gamma &=& f_\gamma(\theta_1, \theta_2, \theta_3) \end{eqnarray} \right.$$

where $\alpha, \beta, \gamma $ are the Euler angles of end-effector orientation (it does not matter in which order they are defined, you just have to pick one and stick with it, e.g. XYZ order or ZXZ order). Based on these equations you can write the Jacobian as: then

$$ J = \left[ \begin{matrix} \frac{\partial f_x}{\partial \theta_1} & \frac{\partial f_x}{\partial \theta_2} & \frac{\partial f_x}{\partial \theta_3}\\ \frac{\partial f_y}{\partial \theta_1} & \frac{\partial f_y}{\partial \theta_2} & \frac{\partial f_y}{\partial \theta_3}\\ \frac{\partial f_z}{ \partial \theta_1 } & \frac{\partial f_z}{\partial \theta_2} & \frac{\partial f_z}{\partial \theta_3}\\ \frac{\partial f_\alpha}{ \partial \theta_1 } & \frac{\partial f_z}{\partial \theta_2} & \frac{\partial f_z}{\partial \theta_3}\\ \frac{\partial f_\beta}{ \partial \theta_1 } & \frac{\partial f_z}{\partial \theta_2} & \frac{\partial f_z}{\partial \theta_3}\\ \frac{\partial f_\gamma}{ \partial \theta_1 } & \frac{\partial f_z}{\partial \theta_2} & \frac{\partial f_z}{\partial \theta_3}\\ \end{matrix} \right]$$

Please note that this is $6x3$ as it is used to compute both linear and rotational velocities of the end-effector based on the 3 joint velocities as follows:

$$ \left[ \begin{array} \dot{x} \\ \dot{y} \\ \dot{z} \\ \dot{\alpha} \\ \dot{\beta} \\ \dot{\gamma} \end{array} \right] = J \times \left[ \begin{array} \dot{\theta_1} \\ \dot{\theta_2} \\ \dot{\theta_3} \end{array} \right] $$

  • $\begingroup$ What about angular velocities $\omega _x$, $\omega _y$ and $\omega _z$? $\endgroup$
    – A6EE
    Commented Jan 18, 2020 at 19:29
  • $\begingroup$ added angular velocities $\endgroup$
    – 50k4
    Commented Jan 18, 2020 at 19:39
  • $\begingroup$ By $\times$, do you mean the dot or cross product? $\endgroup$
    – A6EE
    Commented Jan 18, 2020 at 23:14
  • $\begingroup$ J is a matrix. To my knowledge cross product is defined only between two vectors. This is a matrix multiplication. $\endgroup$
    – 50k4
    Commented Jan 19, 2020 at 8: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.