Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Capteurs de position > Boussole CMPS10 avec cap corrigé

Boussole CMPS10 avec cap corrigé

samedi 8 février 2014, par Julien H.

Faisons simple : la boussole électronique CMPS10 contient des accéléromètres et des magnétomètres en technologie MEMS.

Cela permet d’avoir un cap (nord magnétique) mais également l’orientation. Contrairement à d’autres modèles que nous avions utilisé (HMC6343), la valeur lue par la liaison I2C pour la direction ("bearing" en anglais) n’est pas directement compensée.

Il est donc nécessaire de faire un petit algorithme que voici :

int angle(void)
{
  int bear = compass.bearing();
  int pitc = compass.pitch();
  int rol = compass.roll();

  if (bear >= 180) {
    return bear - pitc - (rol / 4);
  } 
  else {
    return bear + pitc + (rol / 4); 
  }
}

L’angle est alors compensé et plus proche de la valeur de cap à l’horizontal.

Mise à jour

Voici un extrait de la console :

Bearing: 45.90 Pitch: -13 Roll: 1 Direction: 32
Bearing: 48.10 Pitch: -16 Roll: 1 Direction: 32
Bearing: 50.60 Pitch: -20 Roll: 1 Direction: 30
Bearing: 54.30 Pitch: -23 Roll: 0 Direction: 31
Bearing: 57.50 Pitch: -27 Roll: 1 Direction: 30
Bearing: 61.90 Pitch: -31 Roll: 1 Direction: 30
Bearing: 65.10 Pitch: -34 Roll: 1 Direction: 31
Bearing: 68.10 Pitch: -37 Roll: 0 Direction: 31
Bearing: 71.60 Pitch: -40 Roll: 0 Direction: 31
Bearing: 74.40 Pitch: -43 Roll: 0 Direction: 31
Bearing: 76.80 Pitch: -45 Roll: 0 Direction: 31
Bearing: 71.70 Pitch: -41 Roll: 0 Direction: 30
Bearing: 60.30 Pitch: -30 Roll: 0 Direction: 30
Bearing: 49.90 Pitch: -18 Roll: 0 Direction: 31

Vos commentaires

  • Le 8 février 2014 à 11:54, par Eric P. En réponse à : Boussole CMPS10 avec cap corrigé

    Comment est établie la formule de compensation ? C’est fourni par le constructeur ou bien un résultat expérimental ?

    • Le 8 février 2014 à 13:34, par Julien H. En réponse à : Boussole CMPS10 avec cap corrigé

      Totalement expérimental. En fait il était tard hier quand j’ai fini de câbler et mes premiers tests m’ont dérouté, puisque le cap n’était pas compensé comme peut l’être celui de la HMS (qui n’est plus en vente et coûtait plus de 100 euros).

      C’est en regardant les valeurs passer dans le terminal et en faisant tourner le capteur que je me suis dit qu’on pouvait corriger en combinant les trois valeurs. J’ai donc essayé d’abord d’associer le cap et le tangage, car c’est lui qui fait varier le plus. C’est d’ailleurs en testant que je me suis aperçu qu’il fallait changer le signe de la compensation au dessus de 180. Puis j’ai voulu affiner avec le roulis.

      Comme je n’avais lu aucune formule sur ce sujet, je me suis dit qu’il fallait que je la note avant d’oublier. Maintenant il faudrait refaire des tests pour affiner les coefficients, ou relire les documents techniques.

    • Le 9 février 2014 à 10:30, par Eric P. En réponse à : Boussole CMPS10 avec cap corrigé

      Si les valeurs fournies pour tous les axes donnent directement la mesure angulaire correspondante à une fonction affine près, la formule de compensation doit correspondre à la projection 3D des vecteurs unitaires du repère associé à la boussole dans le repère de référence (i.e. dont deux des axes sont situés dans le plan horizontal). En d’autres termes, il s’agit d’un simple changement de repère du vecteur Nord retourné par la boussole, qui est exprimé dans son repère local.

      Ce qui me surprend c’est qu’elle est dite compensée et que ce calcul ne soit pas effectué directement en interne.

    • Le 9 février 2014 à 10:46, par Julien H. En réponse à : Boussole CMPS10 avec cap corrigé

      Oui, il faudrait vérifier si "tilt-compensated" ne veut pas simplement dire qu’elle fonctionne tête en bas ou tête en haut ! En tout cas je me demande dans quelle mesure la boussole que j’avais utilisée auparavant (celle à 125$) n’avait pas le même problème 🙁

      J’ai mis à jour l’article avec un extrait de la console : on voit que les corrections sont importantes ! Les tests sont faits "avec les doigts", il faudrait la mettre sur une structure fixe permettant de faire varier précisément les angles... mais ce n’est pas forcément la peine d’investiguer du temps si la formule expérimentale convient.

    • Le 9 février 2014 à 11:07, par Eric P. En réponse à : Boussole CMPS10 avec cap corrigé

      Ou bien si "tilt compensated" ne veut pas dire "on vous donne les autres mesures d’angles et vous vous débrouillez" :)

      Pour ce qui est de savoir si la formule expérimentale convient, le problème est que le constat d’adéquation est purement qualitatif si je comprends bien (manip "avec les doigts" comme tu le dis). Comment peut-on donc évaluer l’erreur de mesure fournie et savoir si elle acceptable ? Une erreur de cap de 5 ou 10 degrés peut sembler acceptable à vue de nez (surtout si on ne fait pas de mesure de la position de la boussole mais qu’on se contente de l’aligner avec un bord de la table par exemple) mais sera catastrophique si on utilise la mesure pour du contrôle de trajectoire.

      Des volontaires pour monter une manip plus avancée ? Ce sera l’occasion d’exposer un autre exemple de ce qu’est la démarche scientifique : réfléchir à ce qu’on veut montrer, concevoir le dispositif expérimental approprié, réaliser l’expérience, en tirer les conclusions et enseignements. Un beau projet, non ?

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.