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])?