8

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.

Ben
  • 5,855
  • 3
  • 28
  • 48
Francis
  • 81
  • 3
  • 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. – Ben Aug 29 '15 at 23:38

1 Answers1

4

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).

Chuck
  • 16,061
  • 2
  • 18
  • 47
AlFagera
  • 241
  • 5
  • 19