2017-03-03 11 views
0

J'essaie de combiner les données d'un accéléromètre et d'un gyroscope pour mesurer avec précision les angles de tangage et de lacet d'un objet. Après avoir recherché le filtre complémentaire et essayé de l'implémenter, j'ai quelques questions sur son fonctionnement. J'ai lu que le filtre "approuve" les données du gyroscope s'il y a beaucoup de mouvement angulaire et qu'il "approuve" les données de l'accéléromètre si l'objet est stable.Comment fonctionne le filtre complémentaire?

http://www.pieter-jan.com/node/11 Dans cet article, le filtre complémentaire est décrit ainsi:

* Angle = 0,98 (angle + gyrData * dt) + 0,02 * (accData) *

Pour moi, ce, semble si les données du gyroscope sont favorisées. Dans l'image suivante, http://www.pieter-jan.com/images/resize/Complementary_Filter.png, que l'on trouve au bas de la page, les données filtrées semblent "rester proches" des données de l'accéléromètre, même si les données du gyroscope ont dérivé. Je ne comprends pas pourquoi cela se produit lorsque le calcul suggère que les données du gyroscope sont favorisées. J'ai observé cela dans d'autres photos aussi. Pendant mes propres tests, j'ai dû "échanger" les 0.98 et 0.02, suggérant que les données de l'accéléromètre sont favorisées, pour obtenir des résultats similaires. Ai-je complètement manqué de comprendre comment ce filtre fonctionne? Est-il normal de "favoriser" les données de l'accéléromètre?

En outre, lorsque l'angle d'un objet doit être surveillé pendant une longue période de temps, les données du gyroscope ne deviennent-elles pas inutiles car la dérive est si grande, comment le filtre compense-t-il?

Répondre

0

Je réalise où je me trompais. J'avais essentiellement calculé l'angle en utilisant seulement les données du gyroscope et utilisé cela dans le filtre. i.e.

GyroAngle += d°/s * time_between_cycles 
FilteredAngle = 0.98*GyroAngle + 0.02*AccelerometerAngle 

Au lieu de cela j'aurais fait cela:

FilteredAngle = 0.98*(FilteredAngle + d°/s * time_between_cycles) + 0.02*AccelerometerAngle 

faire ceci a donné de bien meilleurs résultats