Bonjour à tous,
Est-ce que certains d'entre vous ont de l'expérience dans le traitement de données issues d'unités de mesure inertielle (IMU) ?
Discussion :
Bonjour à tous,
Est-ce que certains d'entre vous ont de l'expérience dans le traitement de données issues d'unités de mesure inertielle (IMU) ?
Sûrement, mais cette expérience est-elle utile pour toi ? (J'en ai un peu, mais ça s'arrête là.) Quelle est ta question ? Tu ne pourras qu'augmenter le nombre de gens qui s'intéressent à cette discussion.
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Bonjour
Alors j'aimerais déduire des données brutes de mon IMU (accéléromètres, gyroscopes, quaternions) la position de celui-ci en fonction du temps. Mais je ne sais pas du tout comment m'y prendre...
Je sais qu'il faut déjà "nettoyer" les données pour éliminer les bruits de mesure, puis qu'il faut réaliser un algorithme de fusion de données (type filtre de Kalman) pour pouvoir obtenir l'orientation du capteur et ensuite la position.
Au plaisir d'échanger sur le sujet![]()
Bonjour,
Obtenir une position à partir d'une dérivée seconde (accélération) est possible mais la moindre erreur sera intégrée 2 fois (accélération -> vitesse -> position). Non seulement cela donne de la surface aux erreurs, mais les erreurs restent car aucun mécanisme de correction automatique n'est possible.
Il faudrait coupler le dispositif avec un autre qui de temps en temps donne une référence de position. Si cet ajout peut donner la position en permanence, l'intérêt d'accéléromètre est nul.
Il y a quand même un point qui peut être très intéressant : il donne l'orientation (si gyro) dans les trois axes, c'est un super joystickmais il est sensible à la position du support (même si cela peut être réglé en retirant une moyenne sur un temps long pour identifier la position de repos).
Salutations
Oui c'est ça le problème, la gestion des erreurs de mesure et de la dérive. Une calibration et des filtres devraient pouvoir éliminer ces bruits.
Le capteur donne l'accélération et la vitesse angulaire selon les 3 axes, il faut construire un algorithme de fusion de données pour en sortir la vitesse, l'orientation et au final la position.
Bonjour,
Il y aura toujours une dérive. Un bon calibrage et un bon filtrage la limitera mais ne le fera pas disparaître.
Il suffit d'imaginer sur une accélération a constante un petit bruit u suivi, à l'échantillon suivant, de -u. La vitesse passe V+(a+u)dT puis à V+(a+u)dT+(a-u)dT = V + 2.a.dT. Tout semble être revenu dans la norme.
Mais la position est passée à P + (V+(a+u)dT)dT puis à P + (V+(a+u)dT)dT + (V+2.a.dT)dT soit P + (2V+3a.dT)dT + u.dT² au lieu de P + (V+a.dT)dT puis P + (2V+3a.dT)dT. La moindre erreur reste.
Il y a un autre problème : la vitesse et la position ne dépendent pas nécessairement de l'accélération. Surprenant ? En fait non. Un objet qui ne bouge pas (relativement à la terre, on ne va complexifier avec les mouvement dans l'univers) subit une accélération (la gravitation) compensée par la force opposée du sol mais parfaitement perçue par l'accéléromètre (par exemple, c'est comme cela qu'un smartphone peut servir de niveau).
Ainsi un objet qui tombe en chute libre ne semblera, pour l'accéléromètre, soumis à aucune force (d'où la sensation de voler). Il ne sait même pas dans quel sens il tombe. Bien sûr, l'air finit par exercer une résistance qui rendra l'objet à nouveau sensible à une part de la pesanteur.
On pourrait se dire qu'un véhicule qui roule sur une route n'a pas ce problème. Oui, si la route est plate mais la moindre montée ou descente verra se combiner l'accélération moteur avec la pesanteur dans un joyeux mélange. Et je ne parle pas des virages relevés.
Je suis désolé de jouer les Cassandres mais cela fait parti des fausses bonnes idées.
C'est comme vouloir se déplacer en fermant les yeux en connaissant bien les lieux et en ayant soigneusement repéré position et orientation de départ. Combien de temps avant un choc ?
Salutations
Merci pour votre avis détaillé et honnête.
Avant d'enterrer complètement mon projet, j'ai trouvé ce code Python sur GitHub (https://github.com/daehwa/Gait-Track...h-x-IMU-Python) qui fait ce que je cherche à obtenir.
Il est fait pour un autre IMU que le mien mais je voulais apprendre Python de tout façon donc je vais essayer de l'adapter à mes données![]()
Bonjour;
Sauf erreur de ma part, le lien renvoie sur un odomètre. L'accéléromètre ne mesure pas l'accélération de déplacement mais simplement les impacts des pieds sur le sol. Après un filtrage le programme récupère les foulées. Si on connaît la foulées moyenne du coureur on peut en déduire une approximation de la distance parcourue. Il ne me semble pas que ce soit l'idée initiale du post, me trompé je ?
Comme les accéléromètres ne coûtent plus grand chose, même si les utiliser en lieu et place d'une bille dans un tube paraît disproportionné, économiquement cela peut se défendre.
Ceci étant, peut être faut il aller jusqu'au bout de l'idée. Edison, assez peu recommandable par ailleurs, donnait au dernier stagiaire embauché le problème que tout ses ingénieurs considéraient comme sans solution. Son argument était : "Lui, il ne sait pas que c'est impossible ! ". L'histoire ne dit pas si certains ont trouvé des solutions mais, en terme de management, Edison obtenait mécaniquement une certaine humilité de l'impétrant.
Salutations
Partager