70 votes

Combinaison de données de gyroscope et d'accéléromètre

Je suis la construction d'un équilibrage de robot à l'aide des Lego Mindstorm du NXT du système. Je suis l'aide de deux capteurs de HiTechnic, le premier étant un Accéléromètre et le second, un Gyroscope. J'ai réussi à filtrés de bruit à partir de deux capteurs et dérivés angles dans une fourchette comprise entre -90 et 90 degrés, avec 0 degrés étant parfaitement équilibré.

Mon prochain défi est de combiner à la fois des valeurs de capteur pour corriger pour le Gyroscope de la dérive dans le temps. Ci-dessous est un exemple de graphique que j'ai créé à partir de données réelles, afin de démontrer la dérive du gyroscope:

enter image description here

La plus couramment utilisée, je l'ai vu faire la combinaison de ces capteurs solide comme le roc est en utilisant un filtre de Kalman. Cependant, je ne suis pas un expert en calcul différentiel et intégral et je ne comprends vraiment pas les symboles mathématiques, je ne comprends mathématiques dans le code source.

Je suis l'aide de RobotC (qui est comme tous les autres dérivés C) et serait vraiment reconnaissant si quelqu'un peut me donner des exemples de la façon de le faire en C.

Merci pour votre aide!

LES RÉSULTATS DE LA SOLUTION:

Bon, kersny résolu mon problème en me présenter à des filtres. C'est un graphique illustrant les résultats de ma recherche:

Résultat #1

enter image description here

Résultat #2

enter image description here

Comme vous pouvez le voir, le filtre corrige la dérive gyroscopique et combine à la fois les signaux en un seul lisse signal.

Edit: Depuis que j'ai réparer le images, de toute façon, j'ai pensé qu'il serait amusant de montrer la plate-forme que j'ai utilisé pour générer des données:

enter image description here

44voto

kersny Points 1735

Filtres de Kalman sont super et tout, mais je trouve que les Complémentaires Filtre beaucoup plus facile à mettre en œuvre avec des résultats similaires. Les meilleurs articles que j'ai trouvé pour le codage Complémentaire Filtre sont ce wiki (avec cet article sur la conversion des capteurs pour les unités d'Ingénierie) et un fichier PDF dans le fichier zip sur cette page (en Vertu de la Documentation Technique, je crois que le nom de fichier dans le zip, c'est de filtrer.pdf);

PS. Si votre coincé sur un Filtre de Kalman, ici est quelque syntaxe C code pour l'Arduino qui l'implémente.

5voto

Vatine Points 8884

Gamasutra.com a publié un article sur l’utilisation des filtres de Kalman pour le filtrage WiiMote .

Il existe des liens vers le code source C ++ à la fin de l'article.

1voto

unwind Points 181987

Cela semble être une excellente explication. Cependant, il utilise des symboles mathématiques. Il se termine par la mise en œuvre d'un filtre de Kalman dans Matlab; peut-être que vous trouvez cela plus acceptable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X