Ce module permet de gérer un gyroscope 3 axes.
-----— Convention des axes utilisée -----—
La convention utilisée est celle des aéronefs :
- X axe longitudinal (dans le sens de la marche), c'est l'axe du roulis (roll). Positif lorsque l'aile droite descend (virage droite)
- Y axe transversal, c'est l'axe du tangage ou piqué (pitch). Positif à monter.
- Z axe normal au plan XY (vertical), c'est l'axe de lacel (yaw) Positif vers la droite (dans le sens horaire).
En ce qui converne l'accélaration, la convention est que tout axe aligné sur la gravité terrestre vers le bas aura une valeur de +1g. Ainsi les accélérations en g seront :
- à l'horizontal {0,0,1}
- en piqué à descendre {1,0,0}
- en virage sur l'aile droite {0,1,0)
int iGyro3dAttitude |
( |
float * |
xAtt, |
|
|
const float * |
xRate, |
|
|
ticks_t |
xRateTime, |
|
|
float |
fA |
|
) |
| |
Calcul des angles à partir des vitesses angulaires.
Requiert le module task et donc un timer kernel (AVRIO_TASK_ENABLE).
- Paramètres
-
- Renvoie
- 0 en cas de succès, négatif en cas d'erreur
int iGyro3dCalibrate |
( |
uint16_t |
usNumOfSamples | ) |
|
Calibration du gyro.
Calcul la valeur du zéro par moyennage d'un certains nombre de mesures et stocke le résultat en EEPROM
- Paramètres
-
usNumOfSamples | Nombre d'échantillons de mesure utilisés pour le calcul |
- Renvoie
- 0 en cas de succès, une valeur négative sur erreur.
Initialise le module Gyro.
Le circuit est initialisé et la valeur du zéro est chargée de l'EEPROM. Si la valeur stockée en EEPROM est corrompue, la valeur du zéro est remise à zéro et stockée en EEPROM et la fonction retourne GYRO3D_NOT_CALIBRATED.
- Renvoie
- 0 en cas de succès, GYRO3D_NOT_CALIBRATED si une calibration est nécessaire, une valeur négative sur erreur.
int iGyro3dRead |
( |
float * |
xRate | ) |
|
Lecture des vitesses angulaires d'un Gyro.
- Paramètres
-
[out] | xRate | Pointeur sur le vecteur dans lequel seront stockées les vitesses d'angle (en °/s) |
- Renvoie
- 0 en cas de succès, une valeur négative sur erreur.
int iGyro3dReadRaw |
( |
int * |
xRate | ) |
|
Lecture des vitesses angulaires brutes d'un Gyro.
- Paramètres
-
[out] | xRate | Pointeur sur le vecteur dans lequel seront stockées les vitesses d'angle en LSB |
- Renvoie
- 0 en cas de succès, une valeur négative sur erreur.
void vGyro3dAttidudeClear |
( |
float * |
xAtt | ) |
|
Réinitialise le calcul d'attitude.
Réinitialise le vecteur passé en arguments et les filtres passe-bas et d'intégration de la fonction iGyro3dAttitude()
- Paramètres
-
[in,out] | xAtt | Pointeur sur le vecteur dans lequel seront stockées les angles (x: roulis, y: piqué ou tangage, z: lacet). |
void vGyro3dSetZero |
( |
const int * |
xZero | ) |
|
Modification du calage du zéro.
La valeur est aussu stockée en EEPROM afin d'être rechargée lors de l'initialisation.
- Paramètres
-
[in] | xZero | Pointeur sur le vecteur de zéro |
void vGyro3dZero |
( |
int * |
xZero | ) |
|
Lecture du calage du zéro.
- Paramètres
-
[out] | xZero | Pointeur sur le vecteur dans lequel sont stockées les vitesses calculées lors du calibrage (en LSB) |