Intégration des lectures du gyro et de l'accéléromètre [dupliquer]

possibilité de dupliquer:

combiner les données du Gyroscope et de l'accéléromètre

j'ai lu un certain nombre de documents sur Kalman filters , mais il semble y avoir peu de bons exemples de travail accessibles au public d'obtenir du papier mathématique au code de travail réel.

j'ai un système contenant un accéléromètre à trois axes et un gyro simple mesure de la rotation autour d'un des axes de l'accéléromètre. Le système est conçu pour être tenu par un humain, et la plupart du temps le gyro mesurera la rotation autour du vecteur de gravité ou près de lui. (Les gens qui travaillent dans la même industrie reconnaîtront probablement de quoi je parle ;)) je me rends compte que c'est sous-tendu.

les gyros semblent avoir un biais quasi constant qui est légèrement différent pour chaque instance du système. Comment pourrais-je aller sur le codage d'un filtre pour utiliser les lectures de l'accéléromètre pour calibrer le gyro à des moments où le système est incliné de sorte que l'axe du gyro n'est pas collinéaire avec la gravité, et est en rotation autour de l'axe du gyro? Il semble qu'il devrait y avoir suffisamment d'informations pour le faire, mais on lui a dit qu'il n'y en a pas et pourquoi serait une réponse trop :)

14
demandé sur Community 2008-09-21 15:27:44

6 réponses

nBot, deux équilibrage des roues du robot

Un peu d'info et de liens sur la façon dont cet auteur a choisi de résoudre le problème d'équilibre pour son robot à deux roues.

3
répondu Louis Davis 2015-01-11 20:50:55

vous semblez avoir deux (ou trois) problèmes séparés ici.

1. Vous ne comprenez pas vraiment les filtres Kalman et / ou les mathématiques derrière eux. Cela va rendre très difficile la mise en œuvre correcte et l'utilisation d'un.

2. Vous ne semblez pas comprendre la physique de base impliqués dans le problème. (La physique de base signifie la physique sous-jacente, pas la physique simple, parce que ce n'est pas simple.)

Je suggère que vous essayez de utilisez un intégrateur beaucoup plus simple, comme un Runga-Kutta 4, pour lequel vous pouvez trouver de nombreux livres avec des exemples à la fois de l'implémentation et de l'utilisation. Il devrait être suffisant pour ce problème. (Si le client a spécifié Kalman, demandez pourquoi.)

pourquoi le problème est sous-contraintes, il me semble que c'est d'avoir aucun moyen de s'assurer que l'appareil est tenu verticalement et pas de moyen de mesurer la réelle orientation. Oubliez le gyro pour le moment et supposons que l'appareil ne peut pas être tourné sur un axe vertical. Vous avez trois accéléromètres, probablement pour estimer la position en 3D. Donc si vous voyez une accélération dans la direction X, vous augmentez l'estimation de l'endroit où vous êtes dans la direction X. De même, si vous voyez une accélération dans la direction Z (qui je suppose est "en haut"), vous augmentez l'estimation de l'endroit où vous êtes dans la direction Z. Maintenant, tournez légèrement l'appareil, disons 30 degrés autour de l'axe Y. Maintenant quand l'appareil pense que vous accélèrent le long de la direction X, le dispositif accélère en fait un peu moins que ce qui est indiqué dans X et il accélère également dans la direction Z. Donc votre estimation de position est maintenant incorrecte.

Les Rotations sont beaucoup plus difficiles à intégrer (les équations sont plus "rigides", nécessitant un pas de temps plus petit pour maintenir la précision). Mais ils souffrent de problèmes similaires de calcul de mauvaises réponses si l'appareil est incliné (car l'appareil ne peut pas dire que c'est de pourboire). Il pensera que la rotation autour de l'axe vertical est plus grande ou plus petite qu'elle ne l'est en réalité, parce qu'une partie de la rotation est en fait autour d'un axe différent (tout comme une partie de l'accélération était le long d'un axe différent).

peut-être avez-vous besoin d'embaucher un consultant (Non, Je ne cherche pas un emploi) pour vous aider à formuler les mathématiques.

6
répondu Mark T 2008-09-21 12:18:35

étant donné votre intérêt pour le filtre de kalman, peut-être avez-vous l'intention d'augmenter les données GPS avec des mesures inertielles. À propos de votre question:

"Comment pourrais-je aller sur le codage d'un filtre pour utiliser les lectures de l'accéléromètre calibrer le gyro à des moments où le le système est incliné de sorte que le gyroscope à axe pas colinéaire avec la gravité, et est tourner autour de l'axe du gyro? Il semble comme il devrait être assez informations pour ce faire "

cela ressemble à un alignement gyrocompas. En supposant que vous faites un étalonnage en usine, et sur un banc, vous serez en mesure de mesurer indépendamment de l'alignement. Ensuite, exécutez le code de mise à niveau que vous écrirez et supprimez l'erreur de distorsion du gyro de la différence entre la mesure et les alignements gyrocompasés.

Si vous voulez mettre à jour gyro dérive à la volée, alors vous aurez besoin du filtre de kalman.

pour autant que la mise en œuvre va je recommande le Chapitre 7, GPS et Inertiel Intégration de Système de positionnement Global de la Théorie et Applications, vol. 2 a d'excellentes fond sur le sujet. Il a la théorie et les maths, mais pas de code source.

4
répondu Steve Roe 2009-01-18 21:18:31

j'ai trouvé de bons articles sur l'utilisation des accéléromètres et des gyroscopes dans la navigation sur ce blog . La partie sur le filtrage de Kalman est un peu floue, mais il semble y avoir des échantillons de code.

vous trouverez également des ressources générales sur le filtrage Kalman à http://academic.csuohio.edu/simond/publications.html . L'article visé dans (8) est un bon, pas trop effrayant, introduction aux mathématiques derrière des filtres de Kalman.

3
répondu Kena 2008-10-15 13:51:58

un gentleman au Danemark vient de poster un exemple travaillé de la dérivation D'un filtre de Kalman pour résoudre presque exactement ce problème.

2
répondu moonshadow 2012-09-10 18:50:21

S'il se trouve que vous développez pour L'hélice uController, que L'échange D'objet de Parallax a un certain code. Grande question ; -)

1
répondu Chris O 2010-05-27 20:16:09