I'm trying to calculate the Jacobian for days now. But first some details. Within my Master's Thesis I have to numerically calculate the Jacobian for a tendon-driven continuum Robot. I have all homogeneous transformation matrices as I already implemented the kinematics for this Robot. Due to it's new structure there are no discrete joint variables anymore but rather continuous parameters. Therefore I want to compute the Jacobian numerically. It'd be awesome if someone could provide a detailed way how to compute the numerical Jacobian for a 6-DoF rigid-link robot (only rotational joints => RRRRRR). From that I can transfer it to the continuum robot.

I've already started computing it. Let T be the homogeneous transformation matrix for the Endeffector (Tip) with

$$T=\begin{bmatrix}R & r \\ 0 & 1 \end{bmatrix} $$

with R = rotational matrix (contains orientation) and $ r = \begin{bmatrix} x & y & z \end{bmatrix}^T$ endeffector position. My approach is to compute the first three rows of J by successively increasing the joints, computing the difference to the "original" joint values and dividing it by the increment delta, the joint-space is $ q = \begin{bmatrix} q_1 & q_2 & q_3 & ... &q_6 \end{bmatrix}T $

$q_1 = q_1 + \delta$ => $J(1,1) = (X_{increment} - X_{orig})/\delta$

$q_2 = q_2 + \delta$ => $J(1,2) = (X_{increment} - X_{orig})/\delta$

and so on. I do the same for the y and z coordinates. So I get the first 3 rows of J.

Now I don't know how to compute the last three rows as they refer to the rotational Matrix R. Since it's a 3x3 matrix and no scalar value I don't know how to handle it.

  • $\begingroup$ Can you elaborate on the comment that there are "no discrete joint variables but rather continuous parameters"? Because from your implementation it sure sounds like you have 6 discrete joint variables. $\endgroup$
    – Ben
    Commented Aug 29, 2015 at 23:38

1 Answer 1


Well, although, I didn't well understand what have wrote as a solution to the first part (upper) half of the Jacobian, but AFAIK, the manipulator Jacobian is a $6\times n$ matrix, for that let's say $ J$ is the Jacobian thus:

$$ J = \begin{bmatrix} J_v \\ J_\omega \end{bmatrix} \\ $$ where both the upper part $ J_v$ and the lower one $ J_\omega$ are $ 3 \times n $ now: $ J_{v_i} = z_{i−1} \times (o_n − o_{i−1}) $ is the upper half of the Jacobian for the joint $ i$ and

$$ z^0_{i−1} = R^0_{i−1}k \\ $$

where $ R^0_{i-1}$ is the transformation between the two neighboring frames, and $ z^0_0= k = (0, 0, 1)^T$, also $o_i$ is the position vector for the joint $ i$. and the lower part $ \textbf{which you're looking for} $ is simply: $$ J_{\omega_i} = z_{i−1}$$ the upper transcript could be ignored. All this for $ \textbf{for revolute joint, as your case.}$

$\textbf{If we have a prismatic joint}$, then: $$ J_{v_i} = z_{i−1}$$ and $$ J_{\omega_i} = 0 \\ $$ You may consult Spong: robot dynamics and control for more details (ch4).


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.