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:
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.
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)
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.
la source
Réponses:
Tout d'abord, assurez-vous de comprendre deux points clés ici:
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.
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.
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:
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.
la source