Re: Re: Problem with Euler Angles

"Mike Jost" <[email protected]>
Newsgroups gmane.comp.cybernetics.webot.contest
Message-ID <001c01c3c38c$92a524c0$0300a8c0@mjmc>
Frans,

The problem with the mixing of the X and Z angles is probably because you
are using one of my older getAngles( ) functions.  The most current
getAngles( ) function is at
http://www.mikejost.com/cyberbotics/RotationMatrix/Judoka0_AngleTest.zip
The function will return X=0 and Z=0 when the robot is standing vertical.

The previous functions were based on the two rotation matrix compositions:
     R = Rx * Rz * Ry  and
     R = Rx * Ry * Rz
Both of these compositions mix the X and Z angles, since they are not the
way the controller actually calculates the composition.
The lastest getAngles( ) function uses a composition based on the heirarchy
of the robot from the judo.wbt VRML file(see previous post Nov. 30, 2003).
This composition is
    R = Ry * Rx * Rz
This function returns correct X and Z angles with no mixing for -90 < X <
90.  For X angles beyond +/-90 the Z angle is locked at +/- PI.  The Y angle
is not correct.
This function will work as an inclinometer, but cannot be used to determine
the correct X,Y, and Z angles all the time.  There is a problem with using
Euler angles for rotation composition because the order of the composition
determines the final matrix and is not unique.  This has the effect of
mapping a rototion axis onto another axis (the mixing problem) and for
intermediate elementary rotations of +/-Pi/2 it will be impossible to rotate
around the final elementary axis (the locking problem).

Mike Jost


----- Original Message ----- 
From: "fransklip" <[email protected]>
To: <[email protected]>
Sent: Monday, December 15, 2003 18:20 PM
Subject: [webots-contest] Re: Problem with Euler Angles


> Hi Mike,
>
> I tried your angle calculation routines in my Kimaita robot for fall
> detection. That seemed to work at first, with the initial dive-attack.
> But later on in the match it went wrong: falls were detected when
> there was none.
>
> This weekend I logged sensor data every 64 msec while the robot was
> walking a small circle, and doing some body rotations after every
> (about) 90 degrees: tilt forward/back, tilt left/right and rotate ,
> each + and -10 degrees.
>
> Near the Z-axis, the angles routines return values that can be related
> to the actual robot posture. But when moving away from the Z-axis, I
> cannot relate the returned angles to the robot anymore.
>
> I have made a summary of the test rotation values (angletest 01
> summaray.txt). You can donwload this file from
> www.van-der-klip.demon.nl/webots/angletest01.zip. It also contains the
>  sensor data for each of the 4 test movements in the walk (set 1, 2,
> 3, 4.txt) and the complete sensor and action log files).
>
> You can download the webview file of the test walk from:
> www.van-der-klip.demon.nl/webots/angletest01.wva
>
> Are the calculated angles something else then a rotation of the robot
> body around its center? If so, could you please axplain what they are?
>
> Regards,  Frans / Kimaita
>
> --- In [email protected], "Mike Jost"
> <webotsContest@m...> wrote:
> > Olivier,
> >
> > I found some problems with the Euler angle calculations this
> weekend.  I tested the previous equations by rotating the robot with
> the mouse, since I did not have a robot controller capable of turning
> on its own.   Apparently the rotation composition used by the mouse in
> the Webots program is different than the rotation composition used
> when a robot actually moves itself.  The current gps_euler( ) function
> in Webots 4.0.17 also returns wrong X and Z angles for some Y
> orientations of a robot.
> >
> > Solution:
> > I looked at the VRML file and used a rotation composition based on
> the heirarchy of the robot.
> >    Judoka_Robot {
> >       rotation 0 1 0 0 (rot about Y)
> >       children {
> >          back_1 servo {
> >             rotation 1 0 0 0 (rot about X)
> >             children {
> >                back_2 servo {
> >                   rotation 0 0 1 0 (rot about Z)
> >                }
> >             }
> >          }
> >          gps_device
> >       }
> >    }
> >
> > The resulting composition should be  Rgeneral = Ry * Rx * Rz instead
> of the previous  Rx * Ry * Rz.
> >
> > The routine to compute the euler angles based on this composition is:
> >    public static float[] getAngles(float matrix[]) {
> >
> >       float[] angles = new float[3];
> >       double cosX;
> >
> >       angles[0] = (float)Math.asin(-1*matrix[9]); // find X angle
> >
> >       cosX = Math.cos(angles[0]);
> >       angles[1] = (float)Math.atan2( -1*matrix[8]/cosX,
> matrix[10]/cosX  );  // find Y angle
> >       angles[2] = (float)Math.atan2( matrix[1]/cosX, matrix[5]/cosX
> );       // find Z angle
> >
> >       return angles;
> >    } // end of getAngles()
> >
> >
> > I have generated a Judoka0 test robot that will rotate itself about
> Y and stop at 45 Degree intervals and bend forward,backward, left, and
> right, and display the computed angles from this new routine.
> > The back_1 and back_2 servos are set to a rotation of +/- 0.5 rad at
> each test point.
> > Hopefully, this routine will work in all cases, such as after Coyote
> does a summersalt and rotates X around a full 2*pi radians.
> >
> >
> > Judoka0 Test Robot:
> >
> http://www.mikejost.com/cyberbotics/RotationMatrix/Judoka0_AngleTest.zip
> >
> > HTML version of Maple worksheet of General Rotation Matrix for
> R=Ry*Rx*Rz:
> >
> http://www.mikejost.com/cyberbotics/RotationMatrix/RotationMatrix.html
> >
> >
> > Mike Jost (FreeTIme)
>
>
>
> To unsubscribe from this group, send an email to:
> [email protected]
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>



To unsubscribe from this group, send an email to:
[email protected]

 

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/pU_rlB/TM
---------------------------------------------------------------------~->

Yahoo! Groups Links

To visit your group on the web, go to:
 http://groups.yahoo.com/group/webots-contest/

To unsubscribe from this group, send an email to:
 [email protected]

Your use of Yahoo! Groups is subject to:
 http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.