Je lis actuellement sur des robots à équilibrage automatique qui utilisent un IMU (gyroscopes + accéléromètres) pour estimer leur angle d'inclinaison actuel.
La plupart des documents que j'ai trouvés disent la même chose:
- Vous ne pouvez pas simplement prendre l'arc tangente des données des accéléromètres pour trouver la direction de la gravité car elles sont affectées par des "bruits inertiels".
- Vous ne pouvez pas simplement intégrer la sortie du gyroscope au fil du temps car il dérive.
- Il existe deux solutions généralement acceptées pour fusionner ces données:
- Un filtre de Kalman estimant l'inclinaison actuelle avec le biais du gyroscope actuel .
- Un filtre complémentaire appliquant un filtre passe-bas sur les données de l'accéléromètre (on peut leur faire confiance à long terme) et un filtre passe-haut sur les données du gyroscope (on peut faire confiance à court terme).
Toutes les sources que j'ai trouvées semblent utiliser les données brutes des accéléromètres de ces filtres, sans tenir compte du fait que, dans un robot auto-équilibré, nous pouvons avoir une très bonne estimation du "bruit inertiel" mentionné ci-dessus.
Voici mon bien
Modélisons notre robot avec un pendule inversé avec un point d'appui mobile et utilisons ce pauvre dessin comme référence.
Les forces d'inertie ressenties par les accéléromètres à C peuvent être dérivées de (si je n'ai fait aucune erreur)
En admettant que
- Notre robot roule sans glisser
- Nous pouvons mesurer x (soit en utilisant des moteurs pas à pas ou des moteurs à courant continu avec codeurs)
Ensuite, nous pouvons avoir une bonne estimation de toutes ces variables:
- : différences finies sur nos mesures actuelles et précédentes de
- : La lecture actuelle du gyroscope
- : estimation précédente de plus l'intégration de et sur un
- : différences finies sur et
Une fois que nous avons cela, nous pouvons annuler l'effet des forces d'inertie dans les accéléromètres, ne laissant qu'une bien meilleure mesure de la gravité.
C'est probablement toujours une bonne idée de l'utiliser comme entrée du filtre Kalman habituel comme dans 1. ci-dessus.
Peut-être que nous pouvons même construire un filtre de Kalman qui pourrait estimer toutes ces variables à la fois? Je vais essayer ça.
Qu'est-ce que tu penses? Est-ce que j'ai râté quelque chose?
Je pense que le robot auto-équilibrant pourrait être une bonne étiquette, mais je ne peux pas le créer
la source
Réponses:
Si vous construisez correctement un filtre Kalman avec une entrée «x», alors oui, ce sera mieux. Notamment, le capteur inertiel ne peut en aucun cas vous donner une valeur absolue pour x, car vous essayez (essentiellement) de double-intégrer un signal d'accéléromètre dans une position, et qui est extrêmement sensible au bruit dans la sortie de l'accéléromètre.
Certaines choses que vous voudrez peut-être considérer lors de vos voyages:
la source
Bien que ce ne soit pas une réponse complète à votre question, je veux laisser certaines de mes réflexions. Je pense que vous avez manqué:
Un modèle de filtre de Kalman est une bonne approche. Plus vous en saurez sur le modèle de mouvement que vous mettez dans le modèle, mieux cela fonctionnera. Vous devez également connaître les (co-) variances de toutes les variables ... Dans quelle mesure pensez-vous que les mesures de chaque capteur sont.
la source