# How to find the body jacobain, for each link in a robot manipulator?

The links twist could be obtained, and thus The spatial manipulator Jacobian could be done, but when it comes to the body Jacobian, it is becomes difficult. Moreover, the adjoint transformation relates both Jacobain, but however that is 4*4 while the Jacobian is 6*n; how does it works? as in the picture, he is getting a body jacobian for each link, not one jacobian matrix for the whole robot, I don't know. Any help is highly regarded. Like this example or here for full details

• I highly recommend that you take a look at page 55 of cds.caltech.edu/~murray/books/MLS/pdf/mls94-complete.pdf
– user9092
May 3, 2015 at 16:46
• Thank you very much, it is really a very good comment. You see, I have this book of Dr. Murray, and I used to study form it everyday for a long period of time, but I didn't pay attention at all to this page (55). Which remind me the old proverb that, "vision is by heart rather than eye"!. Could you believe if I told you that, I spent a couple of weeks, wondering how to figure out this. And finally I found this book. you maylook at page (152) equation 4.81. This how I figured out this issue. Many thanks. May 4, 2015 at 12:32

Worked example

$\hspace{2.5em}$ $\vec{q}$ = $[q_{1}\hspace{1em}q_{2}]^{T}$ $\hspace{1.5em}$ [Generalized coordinate]

$\hspace{2.5em}$ $\vec{J}$ = $\frac{\partial \vec{r}_{OA}(\vec{q})}{\partial\vec{q}}$ = $\begin{bmatrix} \frac{\partial \vec{r}_{1}}{\partial\vec{q}_{1}} & ... & \frac{\partial \vec{r}_{1}}{\partial\vec{q}_{n}} \\ ... & & ... & \\ \frac{\partial \vec{r}_{m}}{\partial\vec{q}_{1}} & ... & \frac{\partial \vec{r}_{m}}{\partial\vec{q}_{n}} \end{bmatrix}$

The kinematic equation:

$\hspace{5.em}$ $_{o}\vec{r}_{OA}$ = $_{o}\vec{r}_{O1}$ + $_{o}\vec{r}_{12}$ + $_{o}\vec{r}_{2A}$

We have two rotations over joint 1 and 2. Substituting in the equation above:

$\hspace{5.em}$ $_{o}\vec{r}_{OA}$ = $_{0}\vec{r}_{O1}$ + $R{(q_{1})_{01}}$ $_{1}\vec{r}_{12}$ + $R{(q_{1}+q_{2})_{12}}$ $_{2}\vec{r}_{2A}$

Where $R(\bullet)$ is the rotation matrix.

$\hspace{5.em}$ $_{0}\vec{r}_{O1}$ = $\begin{bmatrix} l_{0} \\ 0 \\ 0 \end{bmatrix}$

$\hspace{5.em}$ $R{(q_{1})_{01}}$ $_{1}\vec{r}_{12}$ = $\begin{bmatrix} cos(q_{1}) & -sin(q_{1}) & 0 \\ sin(q_{1}) & cos(q_{1}) & 0 \\ 0 & 0 & 1\end{bmatrix}$ $\begin{bmatrix} l_{1} \\ 0 \\ 0 \end{bmatrix}$

$\hspace{5.em}$ $R{(q_{1}+q_{2})_{12}}$ $_{2}\vec{r}_{2A}$ = $\begin{bmatrix} cos(q_{1}+q_{2}) & -sin(q_{1}+q_{2}) & 0 \\ sin(q_{1}+q_{2}) & cos(q_{1}+q_{1}) & 0 \\ 0 & 0 & 1\end{bmatrix}$ $\begin{bmatrix} l_{2} \\ 0 \\ 0 \end{bmatrix}$

$\hspace{5.em}$ $_{0}\vec{r}_{OA}$ = $\begin{bmatrix} l_{0} + l_{1}cos(q_{1}) + l_{2}cos(q_{1}+q_{2}) \\ 0 + l_{1}sin(q_{1}) + l_{2}sin(q_{1}+q_{2}) \\ 0 \end{bmatrix}$

The Jacobian:

$\hspace{2.5em}$ $\vec{J}$ = $\frac{\partial \vec{r}_{OA}(\vec{q})}{\partial\vec{q}}$ = $\begin{bmatrix} -l_{1}sin(q_{1}) -l_{2}sin(q_{1}+q_{2}) & -l_{2}sin(q_{1}+q_{2}) \\ l_{1}cos(q_{1})+l_{2}cos(q_{1}+q_{2}) & l_{2}cos(q_{1}+q_{2}) \\ 0 & 0\end{bmatrix}$

$\hspace{5.em}$ $_{0}\dot{\vec{r}}_{OA}$ = $\vec{J}\dot{\vec{q}}$

For the goal, you have to use $\vec{q} = [0\hspace{0.5em}0]^{T}$. Usually the Jacobian is not invertible, so you need to use the pseudo-inverse.

Finally, I got it 'praise to Allah'. Actually, I made a mistake on how to find the adjoint (Ad)of the matrix $$j$$ . I simply used the adjoint function in matlab, but that wasn't the right approach; the (Ad), has specific formula given by: $$Adj = \begin{bmatrix} R(j)^T & -R(j)^Tp(j) \\ zeros(3) & R(j)^T] \end{bmatrix}$$; Where $$R(j)$$ and $$p(j)$$ are the rotational part and the position vector of the $$4 \times 4$$ matrix $$j$$.

• Is this an answer or a comment? Nov 11, 2019 at 19:25