Bonsoir à tous ![]()
Confinement oblige, on a pas mal de temps libre, du coup je me suis replongé dans un projet même si peu motivant au vu de mes résultats, m'a beaucoup donné envie de m'investir.
Ce projet, peut-être que certains s'en souviennent (J'ai posté pas mal de messages à ce sujet il y a ~ 8 mois ?), c'est celui de faire un drone stabilisé sous Arduino (quasiment pour tout, du moins la partie stabilisation, commande, etc...). Et vous m'avez déjà énormément aidé sur des sujets qui n'étaient pas vraiment à ma portée, enfin bref rien que pour ça, MERCI ! ![]()
Enfin bref, Pour la mesure de l'angle, j'utilise un gyro/accelero/mag MPU9250.
En me replongeant dans ce projet, j'ai bien sûr eu d'autres idées qu'il y a quelques mois, et j'ai choisi de prendre une librairie de filtre Kalman pour le calcul de l'angle.
J'utilise donc cette librairie qui est SimpleKalmanFilter.
Avec, en entrée, l'angle en sortie d'accéléromètre, j'ai une mesure qui est très rapide, mais fortement bruitée par les vibrations mécaniques des moteurs brushless qui faussent totalement la valeur de l'ange (+-5degrés, c'est pas fou) et donc la boucle PID.
Maintenant, j'ai choisi d'intégrer avant le filtre Kalman, un filtre complémentaire.
Je fais donc ceci:
oldTime = currentTime;
xFin = 0.98*(xFin + gyroX * deltaTime) + 0.02*(xAcc);
yFin = 0.98*(yFin + gyroY * deltaTime) + 0.02*(yAcc);
currentTime = millis();
deltaTime = (currentTime - oldTime)/1000;
kalAngleX = simpleKalmanFilter.updateEstimate(xFin);
kalAngleY = simpleKalmanFilter2.updateEstimate(yFin);
J'ai maintenant une mesure d'angle très précise, non bruitée par les moteurs, mais ... Très lente... à cause de la dérive du gyro???
Je pense que choisir la deuxième option est quand même beaucoup plus fiable pour ma stabilisation PID si je règle les coeff de façon à ce que ne soit pas trop répondant. Mais une meilleure solution encore, serait d'avoir une mesure d'angle précise, non dérangée, et surtout: RAPIDE ! ;D
A ce moment là, je me demande si mon code est trop lent ? Dans ce cas je le mets en pièce jointe pour ceux qui veulent bien y jeter un petit coup d'oeil (Mais c'est plutôt optimisé en vrai)
Ou deuxième option, le capteur n'est pas assez performant et dans ce cas, j'en appelle à votre expérience pour me conseiller un bon truc, pas trop cher (pas + de 30e même si ça fait beaucoup déjà pour un gyro).
Merci beaucoup à ceux qui m'ont lu jusque là, passez une très bonne soirée ![]()
ps: voici une vidéo du vieux coucou qui préfère quand même avoir le pied au sol ![]()
Programme_drone_3.ino (11.2 KB)