Could You, please, explain in more detail, where can I find out, what that is?

Viesturs

2011/5/15 Jan de Kruyf <[email protected]>:
> Why dont you set up a quick testbed and some prinf's
> I am sure that is not going to take more than 20 lines of code.
>
> j.
>
> On Sun, May 15, 2011 at 9:12 PM, Viesturs Lācis 
> <[email protected]>wrote:
>
>> Hello!
>>
>> I am trying to develop kinematics module and I think that Euler's Zyz
>> angles would be very appropriate to represent joints' positions.
>> And for that I want to use Zyz to Rpy convertion in forward kins and
>> Rpy to Zyz convertion in inverse kins.
>>
>> The problem is that I cannot get that conversion working. Not even as
>> a pure concept - I have set the formulas as simple as possible just to
>> get it working, and then I would like to adjust them so that they
>> match the machine.
>>
>> What I get in EMC is:
>> 1) module compiles without errors, so I suspect thatI have got the
>> syntax correct.
>> 2) EMC starts up without errors;
>> 3) Homing of joints works ok (I am running a simulated machine without
>> any particular model loaded);
>> 4) switching to world mode and I get crazy values in A, B and C;
>> 5) sometimes I can quickly switch back to joint mode, where joint values
>> are ok;
>> 6) anyway, all the times immediately or after few seconds I get error
>> taht some of rotary joints have exceeded negative limit. And then
>> switching to joint mode shows joint value of something like
>> -6,175e+278
>>
>> And that is it.
>>
>>
>> Question to the audience - has anyone ever used Euler angles in EMC2
>> and functions that convert them to rpy, rotation matrix or whatever
>> else?
>>
>>
>> Thanks in advance!
>>
>> Viesturs
>>
>>
>> Here is the forward and inverse kinematics section from the module:
>>
>> int kinematicsForward(const double * joint,
>>                      EmcPose * world,
>>                      const KINEMATICS_FORWARD_FLAGS * fflags,
>>                      KINEMATICS_INVERSE_FLAGS * iflags)
>> {
>>    double a3, a4, a5;
>>
>>    PmEulerZyz zyz;
>>    PmRpy rpy;
>>
>>    /* convert joint angles to radians for sin() and cos() */
>>
>>    a3 = joint[3] * ( PM_PI / 180 );
>>    a4 = joint[4] * ( PM_PI / 180 );
>>    a5 = joint[5] * ( PM_PI / 180 );
>>
>>    /* assign joint values to Zyz angles */
>>    zyz.z = a3;
>>    zyz.y = a4;
>>    zyz.zp = a5;
>>
>>    /* use Euler's Zyz to Rpy conversion*/
>>    pmZyzRpyConvert(zyz, &rpy);
>>
>>    world->tran.x = joint[0];
>>    world->tran.y = joint[1];
>>    world->tran.z = joint[2];
>>    world->a = rpy.r * 180 / PM_PI;
>>    world->b = rpy.p * 180 / PM_PI;
>>    world->c = rpy.y * 180 / PM_PI;
>>
>>    return (0);
>> }
>>
>> int kinematicsInverse(const EmcPose * world,
>>                      double * joint,
>>                      const KINEMATICS_INVERSE_FLAGS * iflags,
>>                      KINEMATICS_FORWARD_FLAGS * fflags)
>> {
>>    PmEulerZyz zyz;
>>    PmRpy rpy;
>>
>>    rpy.r = world->a * ( PM_PI / 180 );
>>    rpy.p = world->b * ( PM_PI / 180 );
>>    rpy.y = world->c * ( PM_PI / 180 );
>>
>>    /* convert Rpy angles to Euler's Zyz */
>>    pmRpyZyzConvert(rpy, &zyz);
>>
>>    joint[0] = world->tran.x;
>>    joint[1] = world->tran.y;
>>    joint[2] = world->tran.z;
>>    joint[3] = zyz.z * (180 / PM_PI);
>>    joint[4] = zyz.y * (180 / PM_PI);
>>    joint[5] = zyz.zp * (180 / PM_PI);
>>
>>    return (0);
>> }
>>
>>
>> ------------------------------------------------------------------------------
>> Achieve unprecedented app performance and reliability
>> What every C/C++ and Fortran developer should know.
>> Learn how Intel has extended the reach of its next-generation tools
>> to help boost performance applications - inlcuding clusters.
>> http://p.sf.net/sfu/intel-dev2devmay
>> _______________________________________________
>> Emc-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>
> ------------------------------------------------------------------------------
> Achieve unprecedented app performance and reliability
> What every C/C++ and Fortran developer should know.
> Learn how Intel has extended the reach of its next-generation tools
> to help boost performance applications - inlcuding clusters.
> http://p.sf.net/sfu/intel-dev2devmay
> _______________________________________________
> Emc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-users
>

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to