google is your friend!

http://www.eetimes.com/design/embedded/4007177/Doing-C-code-unit-testing-on-a-shoestring-Part-1-The-basics-and-the-tools

Dont go all the way to town like this guy. Just think of a clever way of
feeding test data into your routine. Even write an extra routine that calls
the code under test in the same sourcefile. then compile your testcode with
a library link to the original code.

J.


On Mon, May 16, 2011 at 7:54 AM, Viesturs Lācis <[email protected]>wrote:

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