Go Down

Topic: yaaap, un pilote automatique pour bateau (Read 4275 times) previous topic - next topic

vincenthure

Je me dois d'apporter une correction concernant mon précédant post.
J'ai vanté les mérites du BNO055 en tant IMU car il intégre un processeur qui est capable de faire le calcul pour délivrer un cap compensé par le gite ( mode fusion ).
J'ai fais fabriquer un circuit imprimé pour intégrer tout ce petit monde et faire des essais plus précis. Je mes suis rapidement aperçu que les résultats n'était pas à la hauteur de mes espérances.
1/ le BNO055 dispose d'un système de calibration automatique et cela pose des problèmes car il ne fonctionne pas correctement. Il est impossible de le débrayer car il tourne en tache de fond et envoi des messages indiquant que la calibration n'est pas stable.
2/ Quand la calibration est bonne il faut sauver les datas dans les eprom de l'Arduino et les récupérer quand on rallume l'appareil pour éviter un long process de calibration. Je n'ai pas réussi à faire fonctionner cela correctement.
3/ d'après des discussions sur des forums il semble que le BNO055 ne soit pas adapté au mesure en mouvement, car la vitesse de déplacement du capteur degrade la precision du cap en mode fusion!
Bref, j'abandonne et je me tourne vers Adafruit Precision NXP 9-DOF Breakout Board - FXOS8700 + FXAS21002. Il ne dispose pas de processeur pour faire de calcul c'est donc Arduino qui doit s'en charger. l'avantage c'est que l'on a la main sur programme.
Adafruit propose cela : Adafruit_AHRS
Je vous tiens au courant
Vincent

LizaVal

Bonjour,

Bien lu le pb de BN 00 55.
De mon coté, je n'arrive pas à faire fonctionner mon MPU 6050, alors je ne suis pas prêt de vous rejoindre !
Au moins je sais envoyer un message sur le forum !
Saluts et Bonne Année.
Joël

ozolli

Bonjour,

Je ne suis pas sur un projet de pilote auto mais sur celui d'une centrale de navigation que je fais évoluer cette année après 3 ans sans y toucher.

J'ai testé le BNO055 et je confirme, comme beaucoup, qu'il souffre de son auto-calibrage très perfectible.
En l'état, sur un voilier, c'est inutilisable !

J'attends un Adafruit Precision NXP et un Adafruit Feather M0 pour tester ce 9-DOF. J'ai l'intention de l'utiliser avec la librairie NXPMotionSense de Paul Stoffregen et pas celles d'Adafruit.

https://github.com/PaulStoffregen/NXPMotionSense

Mon projet original : https://github.com/ozolli
Il n'est pas à jour avec les développements actuels mais je le ferai quand j'aurai avancé sur le NXP.

vincenthure

Je continue mes tests et la programmation avec le capteur NXP FXOS8700 / FXAS21002C.
J'ai rencontré pas mal de difficultés mais maintenant ça avance bien.
Voici comment j'ai résolu mes problémes:
le capteur est connecté avec un arduino (un mini)
j'utilise les librairies Adafruit correspondante aux capteurs et le Adafruit_Sensor-master
j'utilise le filtre   Madgwick contenu dans la librairie Adafruit_AHRS_master
J'ai effectué la calibration avec le logiciel MotionCal ( mettre le serial à 115200 )
J'ai reporté les valeurs dans mon sketch
Et ça fonctionne correctement
Une loop prends environ 7 millisecondes ce qui donne une fréquence de rafraichissement d'environ 140 hz, qu'il ne faut oublier de spécifier dans le filtre.begin() du setup.
Le systéme est très réactif et très fluide mais en valeur absolu la précision du compas n'est pas terrible.
C'est pour ça que je compte vérifier mon COS ( course over ground ) avec un capteur GPS qui calcul le cap entre 2 points successifs.
Les autres fonctions du pilote sont gérés par un autre arduino ( PID, bouton, affichage ).
La communication entre les deux arduino se fait ainsi:
une impulsion "low" est envoyé sur la pin 2 de l'arduino qui s'occupe du capteur.
Il génere alors une interruption qui envoie sur le port serie (soft)  la valeur du "yaw" en faisant une conversion float to bytes.
J'éspere que j'ai été clair
Vincent

ozolli

J'ai effectué la calibration avec le logiciel MotionCal ( mettre le serial à 115200 )
(...)
Le systéme est très réactif et très fluide mais en valeur absolu la précision du compas n'est pas terrible.
Est-ce que tu as effectué le calibrage avec le capteur en position définitive dans le bateau ?

Les masses métalliques environnantes (soft iron, hard iron) ont une influence primordiale dans le calibrage.
Pendant le calibrage c'est le bateau qui doit tourner, pas le capteur dans le bateau.

D'autre part, les librairies Adafruit ne tiennent pas compte des corrections à apporter à l'accéléromètre. C'est la raison pour laquelle j'opte pour la librairie NXPMotionSense.

Une autre alternative est d'utiliser la méthode de Merlin avec son logiciel Magneto. Voir ici : https://thecavepearlproject.org/2015/05/22/calibrating-any-compass-or-accelerometer-for-arduino/
C'est la méthode que j'ai utilisé jusqu'à maintenant

Go Up