Question

Je construis un robot d'équilibrage en utilisant le système NXT de Lego Mindstorm. J'utilise deux capteurs de HiTechnic, le premier étant un Accéléromètre et le second étant un Gyroscope. J'ai réussi filtré le bruit des deux capteurs et angles obtenus aussi bien pour dans une fourchette comprise entre -90 et 90 degrés, avec 0 degrés étant parfaitement équilibré.

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

entrer image description ici

L'approche la plus couramment utilisée, je l'ai vu faire la combinaison de ces capteurs rock solide est à l'aide d'un filtre de Kalman. Cependant, je ne suis pas un expert en calcul et je ne comprends vraiment pas les symboles mathématiques, je comprends les mathématiques dans le code source bien.

J'utilise RobotC (qui est comme tout autre dérivé C) et apprécierais vraiment si quelqu'un peut me donner des exemples de la façon d'y parvenir en C.

Merci pour votre aide!

Résultats SOLUTION:

D'accord, kersny résolu mon problème en me présentant à des filtres complémentaires. Ce graphique illustrant mes résultats:

Résultat # 1

entrer image description ici

Résultat # 2

entrer image description ici

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

Modifier Depuis que je fixais les images brouillées de toute façon, je pensais que ce serait amusant de montrer la plate-forme que j'utilisé pour générer ces données:

entrer image description ici

Était-ce utile?

La solution

Filtres de Kalman sont grands et tout, mais je trouve le filtre complémentaire beaucoup plus facile à mettre en œuvre avec des résultats similaires. Les meilleurs articles que j'ai trouvé pour coder un filtre complémentaire sont ce wiki (ainsi que cet article sur la conversion des capteurs aux unités d'ingénierie) et un PDF dans le fichier zip sur cette page ( sous Documentation technique, je crois que le nom du fichier dans le zip est filter.pdf);

PS. Si votre coincé sur un filtre de Kalman, est un code C-syntaxe pour la Arduino qui l'implémente.

Autres conseils

Gamasutra.com couru un article sur l'utilisation de filtres de Kalman pour de filtrage WiiMote.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top