Aller au contenu


Photo
- - - - -

Je suis "déboussolé"


7 réponses à ce sujet

#1 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 10 février 2022 - 09:34

Bonsoir à tous,

 

J'essaye depuis pas mal de temps à optimiser mon Rover en extérieur en utilisant un Gps et une boussole (compas).

 

Mais, je n'arrive pas à avoir des informations fiables, et ceci avec plusieurs cartes compas.

 

Digilent pmodCMPS 2

BMM150 compass V2.0

Groove Accelerometer & compas

Compass  2 Click

MPU 6050, 9250.... Etc etc.

 

Tous m'affichent des valeurs (juste à certains moments et très loin de la vérité à d'autres), j'ai en premier pensé à des bugs dans mon code, mais avec le code proposé par les exemples des fournisseurs c'est pareil.

 

Ensuite que des éléments internes me faussaient les données, j'ai donc fait des essais moteurs allumés, éteints, dans un champ, partout mais toujours pareil !!!

 

Vu que sans boussole, je n'arrive pas à cartographier mon environnement, et à guider mon Rover cela me bloque (et surtout me GONFLE)

 

Je viens donc vous demander des conseils. Soit un compas sérieux et  un code du fournisseur du compas juste, soit un conseil d'approche de correction de code.

 

Avez-vous les même problèmes ????

 

Salutations à tous.

 



#2 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 261 messages
  • Gender:Male

Posté 11 février 2022 - 12:26

Bonsoir,

pas simple à utiliser les magnétomètres (boussoles).

 

Je dirais que le premier test à faire, c'est vérifier si une petite boussole "mécanique" (celle avec l'aiguille qui tourne) se comporte bien placée juste à coté du magnétomètre. Si ce n'est pas le cas, alors tu sais que le problème vient d'un champ magnétique perturbé (ça peut avoir plein de raisons : ferraille à proximité, courant électrique dans un câble à proximité, aimants des moteurs, bobines, transfos, ...). NB : le fait de placer la boussole à proximité du magnétomètre risque de perturber celui-ci, c'est normal, vu que la boussole contient un aimant (par contre, le magnétomètre devrait avoir un effet négligeable sur la boussole mécanique).

 

Deuxième test : est-ce que la boussole fonctionne bien dehors (en plein champ), si elle n'est pas montée dans le robot (et à au moins 40cm de l'ordinateur)?

 

3 : est-ce que ta boussole est bien horizontale (ou est-ce que tu prends en compte l'inclinaison)?


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#3 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 965 messages
  • Gender:Male
  • Location:Anglet

Posté 11 février 2022 - 02:35

Personnellement je n'utilise jamais les boussole ( magnétomètre ) des imu... Surtout par ce que je suis essentiellement en intérieur, et qu'en intérieur les champs magnétique sont très perturbés. 

Je suppose qu'en extérieur cependant cela devrait mieux marcher. 

Pour pouvoir t'aider il faudrait avoir une meilleur idée de ton problème. Juste nous dire " j'ai des valeurs, parfois c'est bon et parfois pas " c'est pas suffisant. 
Comment est ce que tu sais que parfois les données sont justes et parfois non ?
Cela semble " aléatoire" selon ta description de la chose, mais tu nous dits que c'est "toujours pareil" .  Quelle est ta référence ? Comment tu fais tes tests? Quels sont les résultats de manière concrets / chiffrés ? 

Le mieux pour ce genre de chose c'est de te faire un banc de test, tu mets tous les compas que tu veux tester dessus , avec tes codes puis tu définis un protocole de test et tu logs les données. 
Ensuite on pourra comparer les données entre elles par rapport au protocole de test. Sans cela, il sera difficile de concrêtement t'aider ... La plus part du temps le problème c'est pas de le résoudre, mais de le comprendre. Les 3/4 du temps, quand le problème est compris, il est rapidement résolu. Faire le protocole de test te permettra de comprendre le problème rencontré. 

Exemple de problèmes possible : 

  • Les données indiquent quelques chose de correcte et paf d'un coup ça saute, avec un gros décalage genre 180° , les variations continuent correctement mais le décalage " reste"  => Problème de logique du capteur liés aux représentation des angles
  • Les données oscillent beaucoup autour de la vrai valeur mais +-10° d'écarts c'est pas exploitable  => Bruits parasite
  • Les données se décalent au fur et à mesure progressivement. => Problème de dérive, température ? 
  • Dans certains cas ça marche bien, dans d'autre ça marche plus, mais c'est " répétable" => Problème de parasitage du genre " moteurs" ou position particulière ( robot près d'une table en métal => Oui pour du magnétomètre c'est du vécu... )
  • Les données sont bonnes dans l'ensemble, mais de temps en temps il y a des données complètement aberrantes ponctuellement et la valeur suivante et bonne ( en plus souvent c'est le même ordre de grandeur de fausse valeur qu'on voit ) => Problème de corruption de données lors de la communication avec le capteur
  • ... 

Bref des types de problèmes de ce genre il y a des dizaines ... Sans savoir quel type de problème tu rencontres on ne pourra pas te guider. 

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#4 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 11 février 2022 - 02:51

Merci Sandro,

 

Mais comme je l'ai dis, j'ai tout essayé.

 

1) A l'intérieur et près des ordi ni la boussole standard ni les cartes ne sont juste. (Mais ça je le savais)

2) Oui, comme je l'ai dis quelques fois les données sont juste 180 SUD, je tourne de 90° EST affiche 270. J'enlève l'alimentation sans bougé la table de test affiche 360 N, je recommence et autres chose. Plusieurs boussoles, plusieurs codes sans modifications.

3) Je ne gère pas l'inclinaison, car tant que je ne trouve pas tout est à plat.



#5 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 11 février 2022 - 03:32

Mike,

 

C'est ce que je fait, sur une planche de bois j'installe mon compas et je test.

 

Toutes les valeurs sont affichées sur un LCD et stockés sur une carte SD afin de tracer mon parcours.

 

Je vais refaire des logs et vous les montrer. (J'ai jeter tous les anciens la semaine dernière car j'ai laissé tomber.)

 

Les problèmes de table métal, etc je connais, même ma main pose des problèmes des fois. J'ai isolé le compas, je les ais mis sur un mat, rien de concluant.

Peut être les fils, la PDB, l'arduino ? Mais mon téléphone posé à côté affiche juste.

 

Si les soucis était répétables, j'aurais peut être trouvé, mais aléatoires, c'est difficile est frustrant.

 

Je vais faire autre chose, puis je réessaye.

 

Merci quant même.



#6 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 12 février 2022 - 06:39

Bonsoir,

 

J'ai refait toutes les batteries de tests que j'avais déjà fait il y a quelque mois, mais cette fois en ne prenant que 2 cartes compas.

 

Les résultats sont toujours pareils, tests effectués à l'extérieur 1, 2, 3, 4 (sans métal, sans presque tout ...) test 5 à l'intérieur.

Je précise même code.

 

J'ai beau essayé d'analyser, mais il y à quelque mois et maintenant je suis toujours "déboussolé". Une petite précision curieuse (aujourd'hui, j'ai voulu aligner mon banc de test avec la boussole de mon téléphone, impossible 35° de différence avec les autres fois....)

 

Alignement Réel Test 1 Test 2 Test 3 Test 4 Test 5   Compas BMM150, bmm150.h & bmm150_defs.h   Planche de test avec le compas à 25 cm. De l'Arduino N 360° 2.41 2.46 2.26 2.40 92.00 E  90° 137.00 137.00 137.00 137.00 137.00 S 180° 182.00 227.00 182.00 227.00 182.00 W 270° 272.00 317.00 317.00 318.00 272.00   Compas DIGILENT CMPS2       Mon Rover avec le compas sur un mât de 12 cm. N 360° 322.00 330.00 335.00 333.00   E  90° 198.00 205.00 209.00 200.00   S 180° 236.00 250.00 251.00 250.00   W 270° 285.00 292.00 294.00 294.00  

 

Bonne soirée



#7 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 12 février 2022 - 06:43

Alignement Réel   Test 1    Test 2    Test 3    Test 4    Test 5

Compas BMM150, bmm150.h & bmm150_defs.h
Planche de test avec le compas à 25 cm. De l'Arduino

N 360°    2.41    2.46    2.26    2.40    92.00
E  90°    137.00    137.00    137.00    137.00    137.00
S 180°    182.00    227.00    182.00    227.00    182.00
W 270°    272.00    317.00    317.00    318.00    272.00

Compas DIGILENT CMPS2
Mon Rover avec le compas sur un mât de 12 cm.

N 360°    322.00    330.00    335.00    333.00
E  90°    198.00    205.00    209.00    200.00    
S 180°    236.00    250.00    251.00    250.00    
W 270°    285.00    292.00    294.00    294.00
 



#8 quadmean

quadmean

    Membre

  • Membres
  • 27 messages

Posté 14 février 2022 - 10:29

Bonjour,

tout à fait d'accord avec les précédents posts. Le résultat de mes précédentes expériences:

Je ne pense pas qu'il soit possible d'utiliser "tel quel" les valeurs d'un IMU ou les valeurs de son compas.

Il y a au moins deux raisons à cela:

1/ Du fait de la sensibilité des capteurs, nécessite de la fusion de données (cf AHRS sur google).

2/ Cela implique la calibration des instruments le nécessitant.

 

Je sais que j'avais promis de faire un tuto la dessus, mais j'avoue avoir pas mal de trucs en cours.

 

En tout cas, une chose est certaine, il est nécessaire d'avoir à minima un CPU type STM32 (ou équivalent) qui permet des opérations sur des nombres flottants 32 bits en natif, et dédié à l'IMU (donc plusieurs choses à la fois= 1 CPU min 32 bits + 1 autre CPU).

un capteur non paramétré en DMP (le DMP est le code embarqué dans les capteurs devant faire la fusion de données mais aucun code n'est bon.)

Deux autres raisons qui militent pour les STM32:

Il est préférable à mon sens d'utiliser le SPI et non le I2C, car c'est plus rapide, donc moins de risque de drift... Donc qui dit plus rapide, dit besoin d'avoir un processeur plus rapide.

Il est également pertinent d'utiliser le pin d'interruption. Et donc là aussi, il est donc nécessaire d'avoir un CPU plus rapide.

 

=> Si de base, ton processeur est un ATMEGA 8bits, il faut oublier l'utilisation des MPU. Trop peu de ressources. A minima, il faut soit un MPU + CPU sur la même carte (ca existe sur Aliexpress) soit un MPU et 2 CPU, dont l'un au moins est 32 bits.

Voilà, je sais que c'est pas les meilleurs nouvelles, mais les MPU, c'est pas simple.





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users