# derivative of DH-parameter a_{i}

 Submitted by threelight on Mon, 2008-10-06 13:43

I want to calculate the derivatives of my DH-parameters a_{i}, i.e. the translational part of the frames between two joints. So if I have two joints and their rotation axes are e_{1} and e_{2}. Now I need the angular velocities about these axes w_{1} and w_{2}.

the position vector from the first joint to the end effector is p.
-> p = a_{1} + a_{2} + .. + a_{n}

Now I want to calculate the derivative of p: dot p
-> dot p = dot a_{1} + dot a_{2} + ...dot a{n}

dot a_{i} = w_{i} x a_{i} x = CrossProduct

the question now is: which rotation-matrices do I have to multiply with w_{i} and a_{i} to express them in the correct frame?

is it: dot a_{i} = (rotation from base frame to e_{i})*w_{i} x (rotation from base frame to e_{i})*a_{i}

or is it:

dot a_{i} = (rotation from base frame to e_{i + 1})*w_{i} x (rotation from base frame to e_{i})*a_{i}?

### derivative of DH-parameter a_{i}

On Mon, 6 Oct 2008, manuelbirlo [..] ... wrote:

> I want to calculate the derivatives of my DH-parameters a_{i}, i.e. the
> translational part of the frames between two joints. So if I have two joints
> and their rotation axes are e_{1} and e_{2}. Now I need the angular
> velocities about these axes w_{1} and w_{2}.
> the position vector from the first joint to the end effector is p. -> p =
> a_{1} + a_{2} + .. + a_{n}

This is not true...! DH parameters are not additive... You have _to
multiple_ the _homogeneous transformation matrices_ that correspond to each
set of DH parameters.

> Now I want to calculate the derivative of p: dot p
> -> dot p = dot a_{1} + dot a_{2} + ...dot a{n}
>
> dot a_{i} = w_{i} x a_{i} x = CrossProduct
>
> the question now is: which rotation-matrices do I have to multiply with w_{i}
> and a_{i} to express them in the correct frame?
>
> is it: dot a_{i} = (rotation from base frame to e_{i})*w_{i} x (rotation from
> base frame to e_{i})*a_{i}
>
> or is it:
>
> dot a_{i} = (rotation from base frame to e_{i + 1})*w_{i} x (rotation
> from base frame to e_{i})*a_{i}?

Herman

Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm

### derivative of DH-parameter a_{i}

Herman, I've send you some book-scans to you email-adress. Please read it and look at eq.(4.47) and (4.48).

that's what I mean.

and now my question is:

which rotation-matrix do I have to multiply with w_{i} and a_{i} to get a correct derivation of a_{i}?

### derivative of DH-parameter a_{i}

On Mon, 6 Oct 2008, manuelbirlo [..] ... wrote:

> Herman, I've send you some book-scans to you email-adress.
> Please read it and look at eq.(4.47) and (4.48).
>
> that's what I mean.

These are not DH parameters! So your first email was confusing. (At least,
that's what I think, since you have the unfortunate habit to cut away all
context of the messages to which you respond....)

> and now my question is:
> which rotation-matrix do I have to multiply with w_{i} and a_{i}
> to get a correct derivation of a_{i}?

I lost the context, and sorry, I am not going to dig up your previous
emails...

Herman

### derivative of DH-parameter a_{i}

>> and now my question is:
>> which rotation-matrix do I have to multiply with w_{i} and >>a_{i}
>> to get a correct derivation of a_{i}?

>I lost the context, and sorry, I am not going to dig up your >previous
>emails...

ok, let's try it again: :)

here is a piece of code from my jacobian_dot function,
which shoule calculate the derivative of a jacobian wth respect to a joint angle:

for (int i=1;i<=nr;i++){

...

R[i] = prod(R[i-1],rotSave[i]);
p[i] = p[i-1] + prod(R[i-1],transSave[i]);

...

pp[i] = pp[i-1] + crossProduct(prod(R[i-1],w[i]), prod(R[i-1],transSave[i]));

}
rotSave containd the Frame-Rotations and transSave the Frame-Translations of the KDL::Chain. R is a std::vector>
and p is a std::vector>

So after the for loop I have every current Rotation and translation of the Chain in a std::vector and the last element in R is the Rotation of the end effector and the last element of p is the translation of the end effector.
p is equal to eq.(4.47) of the scan which i send you and pp is equal to eq.(4.48).
Look at this part of pp:

crossProduct(prod(R[i-1],w[i]), prod(R[i-1],transSave[i]));

where w is the angular velocity of joint i and R[i-1] ist the rotation from the base frame to joint i.
The question now is if I have choosed the correct Rotation R to multiply with w and transSave? Or do I have to multiply R[i] with w[i], i.e. the rotation from the base frame to joint i+1?

This crossProduct is eq.(4.49), but in the book I found no information about the correct Rotation of w_{i} and a_{i}.
I want to calculate the crossProduct of a angular velocity and a relative translation between to joints (transSave[i])
and these both vectors have to be expressed in the correct Rotation relative to the world frame.
But which is the correct rotation of w[i]? The rotation to the corresponding joint i (R[i-1])or to the NEXT joint i+1 (R[i])?