Algorithme AHRS sous accélérations linéaires continues


9

J'ai essayé plusieurs algorithmes pour obtenir le tangage, le roulis et le lacet sous des accélérations et vibrations linéaires continues (inférieures à 0,4 g, fréquence inférieure à 10 Hz). Aucun d'entre eux ne donne de bons résultats car les relevés dérivent ou sont trop affectés par les accélérations linéaires. Ce que je veux atteindre, c'est lorsque l'accélération externe est inférieure à + -0,4 g, l'erreur sur le tangage et le roulis doit être inférieure à + -1 degré.

J'ai essayé ces algorithmes:

  1. L'algorithme de Madgwick . Lorsque le gain bêta est réglé très haut, la convergence est rapide mais les angles sont plus sensibles aux accélérations linéaires. Je l'ai réduit et réduit l'erreur sous accélérations linéaires à + -0,5deg. Cependant, si la vibration est continue, les lectures dériveront et il faudra une éternité pour converger vers les vraies valeurs. Cela a du sens car sous des accélérations linéaires, le gyroscope est plus fiable et les angles calculés dérivent lorsque l'intégration du gyroscope dérive.

  2. L'algorithme de Mahony . Contrairement à Madgwick, il ne dérive pas du tout quelles que soient les valeurs que j'utilise pour Ki et Kp. Cependant, il est toujours affecté par des accélérations linéaires. (Erreurs supérieures à + -6deg)

  3. Filtre Kalman traditionnel . Beaucoup de temps a été consacré au réglage de ces énormes vecteurs R et Q. Jusqu'à présent, il a les mêmes performances que Mahony.

J'utilise le rasoir IMU . Je sais qu'avec des capteurs bon marché, il est impossible d'obtenir le même résultat que celui-ci .

Il existe quelques autres options comme UKF, mais c'est difficile à comprendre ou à mettre en œuvre.

Toute suggestion est la bienvenue.


Comment vous intégrez-vous pour Kalman?
C.Towne Springer

Utilisation de l'intégration d'Euler mais les rotations sont strictement un axe afin d'éviter les DCM. @ C.TowneSpringer
Timtianyang

Est-ce censé fonctionner correctement? La dernière fois que j'ai fait ça (ALCM), Euler ne convenait pas. Euler est une méthode de premier ordre avec une erreur locale proportionnelle au carré de la taille du pas et une erreur brute proportionnelle à la taille du pas. Nous avons utilisé Runge-Kutta de 4e ordre avec un filtre de Kalman. Je pense que Newton-Feynman ou Euler pour obtenir une estimation initiale pour démarrer Runge-Kutta. Avez-vous le traitement pour gérer cela à un bon taux de mise à jour?
C.Towne Springer

Merci pour la suggestion. L'erreur locale de la méthode d'intégration euler a été ignorée. Nous prévoyons de faire le filtrage en post, donc nous n'avons pas de contraintes majeures sur la complexité du calcul. @ C.TowneSpringer
Timtianyang

Réponses:


3

Tout d'abord, assurez-vous de comprendre deux points clés ici:

  1. La détermination de l'attitude à partir des seules données IMU est intrinsèquement ambiguë en présence d'une accélération linéaire . Sans connaissances supplémentaires sur la nature des accélérations, il y aura toujours une limite supérieure à la précision que vous pouvez atteindre.

  2. La précision est limitée par la dérive des mesures du gyroscope intégré . Avec des données gyroscopiques et une intégration parfaites, les données de l'accéléromètre ne seraient pas du tout nécessaires. Plus vous vous rapprochez de la perfection, plus vous pouvez ignorer les accélérations.

La sélection de l'algorithme d'orientation est ici largement hors de propos. Tous fonctionnent sur le même principe: utiliser la direction de l'accélération gravitationnelle pour corriger la dérive des données gyroscopiques intégrées, avec une pondération variable entre les deux. Si vous avez essayé de régler les paramètres sans obtenir les résultats souhaités, il est peu probable que vous fassiez mieux avec un algorithme différent.

Il y a donc essentiellement deux choses que vous pouvez faire.

  1. Améliorez la précision de votre intégration gyroscopique.
  2. Modélisez en quelque sorte la nature des accélérations linéaires.

La deuxième option est difficile à discuter car elle dépend des détails de la motion que vous étudiez. Il existe quelques astuces simples comme les accélérations de rejet ou de pondération en dehors d'une plage donnée. Essentiellement, cela revient à modéliser les accélérations linéaires comme étant de brèves occurrences uniquement. Si votre système est en mouvement continu, ils ne sont pas d'une grande aide.

Il y a plusieurs choses que vous pouvez faire pour améliorer votre intégration gyroscopique:

  1. Obtenez la meilleure estimation possible du biais gyroscopique . Prenez des lectures statiques du gyroscope pendant plusieurs secondes immédiatement avant utilisation, et faites la moyenne de celles-ci pour obtenir vos valeurs de décalage. Ne vous fiez pas à un étalonnage préalable unique.
  2. Essayez de minimiser la dérive due à la température. Laissez l'IMU se réchauffer jusqu'à une température de fonctionnement stable avant l'étalonnage / l'utilisation. Essayez de le garder à une température constante pendant le fonctionnement.
  3. Améliorez votre modèle d'étalonnage. Envisagez d'inclure les effets d'axe transversal et la non-linéarité ainsi que l'échelle et le décalage.
  4. Utilisez une meilleure méthode d'intégration. Il y a déjà quelques idées dans les commentaires sur votre question.
  5. Voyez si vous pouvez suivre la dérive du gyroscope. Si l'algorithme d'orientation doit constamment corriger la dérive dans une direction particulière, cela peut être détecté et utilisé pour ajuster doucement les valeurs de biais.

Vous avez raison de dire que les capteurs que vous utilisez ne sont pas de la meilleure qualité disponible. Cependant, il est possible d'obtenir de très bons résultats des capteurs grand public s'ils sont suffisamment bien caractérisés et calibrés.


Des capteurs grand public recommandés?
Timtianyang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.