Go Down

Topic: Calculer un angle de rotation autour de Z ( Yaw ) (Read 55 times) previous topic - next topic

HautRoux

Bonjour à tous,

j'ai un soucis avec mon code arduino, j'utilise une centrale inertielle ( "IMU 10 DOF" ) et le code intégré directement dans la bibliothèque fournit sur ce site :

 "  http://wiki.seeedstudio.com/Grove-IMU_10DOF_v2.0/  "

pour calculer l'angle de rotation autour d'un axe vertical Z ( Yaw ). Le code est très long, donc je vous mets que la partie où l'on calcul ""The clockwise angle between the magnetic north and X-Axis:" et ""The clockwise angle between the magnetic north and the projection of the positive X-Axis in the horizontal plane:"


Code: [Select]


void getHeading(void)
{
    heading = 180 * atan2(Mxyz[1], Mxyz[0]) / PI;
    if (heading < 0) heading += 360;
}

void getTiltHeading(void)
{
    float pitch = asin(-Axyz[0]);
    float roll = asin(Axyz[1] / cos(pitch));

    float xh = Mxyz[0] * cos(pitch) + Mxyz[2] * sin(pitch);
    float yh = Mxyz[0] * sin(roll) * sin(pitch) + Mxyz[1] * cos(roll) - Mxyz[2] * sin(roll) * cos(pitch);
    float zh = -Mxyz[0] * cos(roll) * sin(pitch) + Mxyz[1] * sin(roll) + Mxyz[2] * cos(roll) * cos(pitch);
    tiltheading = 180 * atan2(yh, xh) / PI;
    if (yh < 0)    tiltheading += 360;
}




J'obtiens bien un angle qui varie selon la rotation du capteur verticalement mais lorsque je le tourne horizontalement c'est à dire en le levant que d'une extrémité (l'autre reste fixe) ce même angle change et je ne comprends pas vraiment pourquoi car le nord est censé rester "dans la même direction" peu importe la rotation horizontale. De plus j'ai essayer avec la boussole de mon iPhone et l'angle ne change pas en faisant la même manipulation avec mon téléphone.

Voilà je ne sais pas si quelqu'un a déjà eu ce problème et si il a réussi à le régler. C'est en faite pour capter les mouvement de la main et les reproduire sur un plateau où il y aura un labyrinthe.

La bibliothèque est en pièce jointe ci-jamais.

Merci d'avance pour votre lecture ou votre aide.

Go Up