how to get the four argument about a, alpha, d, theta in DH method

it like this about the example of puma560'model in ~\kdl\models\puma560.cpp

puma560.addSegment(Segment(Joint(Joint::RotZ),

                   Frame::DH(0.0,M_PI_2,0.0,0.0)....
puma560.addSegment(Segment(Joint(Joint::RotZ),
                   Frame::DH(0.4318,0.0,0.0,0.0)....        
puma560.addSegment(Segment(Joint(Joint::RotZ),
                   Frame::DH(0.0203,-M_PI_2,0.15005,0.0)....
puma560.addSegment(Segment(Joint(Joint::RotZ),
                   Frame::DH(0.0,M_PI_2,0.4318,0.0).....
.....

but i look up some other books, the argument of Frame::DH() like this: a alpha d theta 0 0 0 M_PI_2 0 -M_PI_2 0.14909 0 0.4318 0 0 -M_PI_2 0.0203 -M_PI_2 0.4337 0 0 M_PI_2 0 0 0 -M_PI_2 0 0

it's different, so how could i get the four argument about a, alpha, d, theta in DH method?

Ruben Smits's picture

how to get the four argument about a, alpha, d, theta in DH meth

On Monday 09 August 2010 15:48:49 4057625 [..] ... wrote:
> it like this about the example of puma560'model in ~\kdl\models\puma560.cpp
>
> puma560.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(0.0,M_PI_2,0.0,0.0)....
> puma560.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(0.4318,0.0,0.0,0.0)....
> puma560.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(0.0203,-M_PI_2,0.15005,0.0)....
> puma560.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(0.0,M_PI_2,0.4318,0.0).....
> .....
>
> but i look up some other books, the argument of Frame::DH() like this:
> a alpha d theta
> 0 0 0 M_PI_2
> 0 -M_PI_2 0.14909 0
> 0.4318 0 0 -M_PI_2
> 0.0203 -M_PI_2 0.4337 0
> 0 M_PI_2 0 0
> 0 -M_PI_2 0 0
>
> it's different, so how could i get the four argument about a, alpha, d,
> theta in DH method?

The problem with DH parameters is that there are different definitions, the
original version from Denavi/Hartenberg and the modified one defined by Craig.
We support both in KDL:

//The modified version of Craig
static Frame DH_Craig1989 (double a, double alpha, double d, double theta)
//The original version
static Frame DH (double a, double alpha, double d, double theta)

You should check which definition your book is using.

We do not have support for getting DH parameters since frames can represent a
lot more than what can be specified using DH parameters.

Ruben

Their are two common ways us

how to get the four argument about a, alpha, d, theta in DH meth

it like this about the example of puma560'model in ~\kdl\models\puma560.cpp

puma560.addSegment(Segment(Joint(Joint::RotZ),
Frame::DH(0.0,M_PI_2,0.0,0.0)....
puma560.addSegment(Segment(Joint(Joint::RotZ),
Frame::DH(0.4318,0.0,0.0,0.0)....
puma560.addSegment(Segment(Joint(Joint::RotZ),
Frame::DH(0.0203,-M_PI_2,0.15005,0.0)....
puma560.addSegment(Segment(Joint(Joint::RotZ),
Frame::DH(0.0,M_PI_2,0.4318,0.0).....
.....

but i look up some other books, the argument of Frame::DH() like this:
a alpha d theta
0 0 0 M_PI_2
0 -M_PI_2 0.14909 0
0.4318 0 0 -M_PI_2
0.0203 -M_PI_2 0.4337 0
0 M_PI_2 0 0
0 -M_PI_2 0 0

it's different, so how could i get the four argument about a, alpha, d, theta in DH method?