web-dev-qa-db-fra.com

calcul des distances à l'aide d'un accéléromètre

Après avoir lu de nombreuses recherches et articles à côté de nombreux forums sur la façon de mesurer la distance en fonction des données d'accélération, j'ai trouvé la méthode de la double intégration, mais l'erreur liée à cette méthode est importante et augmente avec le temps. J'ai trouvé des gens qui suggéraient le filtre de Kalman, mais j'ai lu quelques références à ce sujet, mais je ne savais pas comment l'utiliser. Quelques autres parlaient aussi des capteurs de fusion ... mais après les avoir lus, je n'ai pas obtenu de nouveau Idées… .. alors je suis encore confus et je n’ai pas trouvé la bonne réponse à suivre… .. désolé pour cette longue introduction.


Question  

Considérons que je tiens un capteur à 9 axes dans ma main et que je déplace ma main dans une direction. Comment puis-je trouver la nouvelle position de ma main dans l'espace? Comment obtenir un vecteur de mouvement du point initial au nouveau point? Comment connaître les distances parcourues sur trois axes?

S'il n'y a pas de réponse directe ... certains conseils ou références seraient utiles ou certains algorithmes donnent des réponses précises et je peux les étudier et les utiliser par moi-même ... Merci beaucoup

18
steelkassel

La réponse courte à votre question est que vous ne pouvez pas le faire. 

La méthode de la double intégration est vraiment le seul moyen d’obtenir les informations que vous recherchez en utilisant uniquement un accéléromètre. Vous avez trouvé le problème avec cette méthode. L'erreur augmente avec le temps et ne donne généralement pas la précision que beaucoup recherchent.

Le filtrage de Kalman nécessite généralement 2 périphériques. Il prend essentiellement le meilleur des deux et filtre le mauvais. Voir exemple ci-dessous.

Le filtrage de Kalman est un sujet très difficile dans lequel j'ai essayé de plonger dans la conception senior, mais je n'ai jamais trouvé de résultat significatif avec mes tests limités. Un excellent endroit pour commencer à comprendre ce sujet est avec cette série de vidéos youtube .

C'est le gars qui a remporté le défi DARPA avec Stanford et explique le sujet d'une manière facile à comprendre. L'ensemble du cours est une série vidéo de 6 unités sur la programmation des robots afin qu'ils puissent se déplacer et comprendre leur emplacement dans un environnement inconnu. Vaut le détour si vous avez le temps et l’intérêt.

On dirait que vous essayez de faire quelque chose de similaire à ce que j'ai fait pour la conception senior en donnant des informations de localisation relatives vraiment spécifiques.

Un autre excellent filtre de Kalman lisez ceci (si ce lien ne fonctionne pas, cliquez sur le lien du blog Google Kalman et cliquez sur le lien du blog TKJ). Ce type utilise essentiellement un accéléromètre et un gyroscope pour suivre l’orientation dans le monde réel. 

Autre chose à examiner dans wiki Real Time Kinematic. Cela se passe sur les tracteurs et se combine pour fournir des informations de localisation vraiment précises. John Deere vend un système, mais cela équivaut à 20 000 $. Voici la version du pauvre utilisant GPS et beagleboard

16
Khamey

Par un capteur à 9 axes, je suppose que cela signifie:

  • Gyroscope à 3 axes (mesure le taux de rotation)
  • Accéléromètre 3 axes (mesure l'accélération)
  • Magnétomètre à 3 axes (en-tête de mesure)

Obtenir une estimation de position pratique à partir de ce type de capteur à 9 axes n'est pas possible sans l'utilisation d'un autre capteur utilisant une référence external telle que GPS. 

Théoriquement, si vous connaissez les accélérations d’un objet dans l’espace, ainsi que sa position et sa vitesse initiales, vous pourrez calculer la nouvelle position de l’objet en propageant les informations sur son accélération et sa vitesse sur sa position initiale (c’est-à-dire en intégrant deux fois l’accélération). . La raison pour laquelle ce n'est pas possible dans la pratique est que l'accéléromètre a du bruit. Ce bruit aura une moyenne non nulle. Ainsi, lors de l'intégration du signal d'accélération, le bruit moyen non nul est ajouté en permanence et s'accumule dans le signal de vitesse résultant. Ceci est vu comme une dérive de capteur. L'estimation de la vitesse de départ est assez correcte mais s'éloigne rapidement du fait du bruit accumulé. Intégrer une seconde fois pour obtenir le poste ne fait qu'aggraver la situation en répétant le processus. 

En utilisant une référence externe telle qu'un GPS, le filtre de Kalman peut être utilisé pour combiner le signal GPS à mise à jour lente et le signal d'accélération à mise à jour rapide afin de produire une estimation fiable de la position. Le GPS a pour effet de mettre à zéro la dérive qui serait accumulée en effectuant l'intégration sur le signal d'accélération.

Je suggérerais de regarder les vidéos Udacity Youtube proposées par Khamey. En apprenant le filtre de Kalman, il est utile d’obtenir un aperçu général clair de l’objectif et de ce que fait le filtre de Kalman. Les calculs et les étapes de l’algorithme seront alors beaucoup plus faciles à comprendre. Une autre chose utile lors de l’apprentissage du filtre de Kalman est de le faire pour une variable d’état à la fois au lieu d’un vecteur d’état complet. Cela aide simplement à concentrer votre attention sur ce que le filtre de Kalman est en train de faire afin que vous ne soyez pas embourbé par l'algèbre matricielle. 

4
ddevaz

Sans tenir compte de la rotation:

Considérons qu'au moment t=t0 vous êtes à la position [ x0 , y0 , z0 ] et à un vecteur vitesse de [ vx0 , vy0 , vz0 ].

En t=t1, vous lisez un vecteur d’accélération de [ ax1 , ay1 , az1 ] (accélération moyenne de t0 et t1).

Ensuite, le vecteur de vitesse à t=t1 sera: 

[ vx1 , vy1 , vz1 ] = [ vx0 + ax1 * (t1 - t0) , vy0 + ay1 * (t1 - t0) , vz0 + az1 * (t1 - t0) ] 

La vitesse moyenne entre t0 et t1 sera de 

[ vx01 , vy01 , vz01 ] = [ (vx0 + vx1) / 2 , (vy0 + vy1) / 2 , (vz0 + vz1) / 2 ]

Et la position à t=t1 sera: 

[ x1 , y1 , z1 ] = [x0 + vx01 * (t1 - t0), y0 + vy01 * (t1 - t0), y0 + vy01 * (t1 - t0) ]

Comme vous pouvez le constater, l’erreur se propage avec t^2, c’est pourquoi les systèmes inertiels doivent être compensés par une référence externe, telle qu’un GPS.

4
jbaylina

S'il existe une carte de base et que vous êtes assuré que le capteur suit une trajectoire connue (une route par exemple), vous pouvez utiliser la carte de base pour corriger les lectures bruitées. Voir Jun Han, Emmanuel Owusu, Thanh-Le Nguyen, Adrian Perrig et Joy Zhang "Complice: localisation avec des accéléromètres sur smartphones" dans le compte rendu de la 4e Conférence internationale sur les systèmes et réseaux de communication (COMSNETS 2012), Bangalore, Inde, janvier 3-7 2012.

http://www.netsec.ethz.ch/publications/papers/han_ACComplice_comsnets12.pdf

0
vy32