derivative of DH-parameter a_{i}

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}?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

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++){

...

Ri = prod(Ri-1,rotSavei);
pi = pi-1 + prod(Ri-1,transSavei);

...

ppi = ppi-1 + crossProduct(prod(Ri-1,wi), prod(Ri-1,transSavei));

}
rotSave containd the Frame-Rotations and transSave the Frame-Translations of the KDL::Chain. R is a std::vector<boost::numeric::ublas::matrix<double>>
and p is a std::vector<boost::numeric::ublas::vector<double>>

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(Ri-1,wi), prod(Ri-1,transSavei));

where w is the angular velocity of joint i and Ri-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 Ri with wi, 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 (transSavei)
and these both vectors have to be expressed in the correct Rotation relative to the world frame.
But which is the correct rotation of wi? The rotation to the corresponding joint i (Ri-1)or to the NEXT joint i+1 (Ri)?