Supprimer la gravité de premières données d'accélérométrie de l'IMU--> veuillez approuver mathématiques et en algo
Je suis à l'aide de cet appareil (http://www.sparkfun.com/products/10724) et ont mis en œuvre avec succès un assez bien de travail de l'orientation de l'estimation basée sur une fusion de magnétomètre, l'accéléromètre et le gyroscope des données basées sur ce http://www.x-io.co.uk/node/8#open_source_imu_and_ahrs_algorithms mise en œuvre. Maintenant, je veux calculer la dynamique d'accélération (mesures d'accélération sans statique accélération de gravité). Pour ce faire, je suis venu à l'idée suivante.
Calculer une moyenne sur des premières données d'accélérométrie de l'. Si les premières accélération est stable pendant un certain temps (une petite différence entre la moyenne et le courant mesuré données brutes), nous supposons que l'appareil ne bouge pas, et à mesurer la crue de la gravité. Maintenant, sauvegardez le vecteur gravité et aussi de l'orientation actuelle comme les quaternions. Cette approche suppose que notre dispositif ne pouvait pas être accéléré en permanence, sans gravité.
Pour le calcul de l'accélération sans gravité je suis en train de faire la suite de quaternions de calcul:
RA = Quaternion with current x,y,z raw acceleration values
GA = Quaternion with x,y,z raw acceleration values of estimated gravity
CO = Quaternion of current orientation
GO = saved gravity orientation
DQ = GO^-1 * CO //difference of orientation between last gravity estimation and current orientation
DQ = DQ^-1 //get the inverse of the difference
SQ = DQ * GA * DQ^1 //rotate gravity vector
DA = RA - SQ //get the dynamic acceleration by subtracting the rotated gravity from the raw acceleration
Quelqu'un pourrait-il vérifier si c'est correct? Je ne suis pas sûr, parce que sur le test-je obtenir de haut de l'accélération de la rotation de ma carte de capteur, mais je suis en mesure d'obtenir certaines données d'accélération (mais est beaucoup plus petite que l'accelration lors de la rotation) si l'appareil est déplacé sans retournement.
En plus, j'ai la question de savoir si l'accéléromètre est également mesurer l'accélération si il est tourné sur place ou pas!
Je n'ai que l'orientation relative de l'appareil vu de l'arbitraire d'un point de départ, je ne sais pas la position courante dans le monde de l'espace. C'est pourquoi je suis de l'estimation de la gravité avec l'algorithme ci-dessus.
OriginalL'auteur chris LB | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Une autre façon est de se différencier accel pour donner jerk (en utilisant les différences finies, j = (a2 - a1) /dt). Exécutez le branler à travers une décomposition/fuite de fonction (utilisez une demi-vie de décroissance calc valeur plutôt qu'un simple multiplicateur). Ensuite intégrer le jerk (trapézoïdale de la règle, a = dt * (j1 + j2) * 0.5) et de supprimer l'offset DC (gravité). Exécutez à nouveau ce signal par une décroissance de la fonction.
La décroissance éviter de la valeur cercle vicieux, mais aussi de réduire l'ampleur de la dynamique des valeurs de l'accélération que vous voyez et présentera certains de lissage du signal. Afin de ne pas obtenir des valeurs qui sont "exactes" m/s/s lectures plus longtemps. Mais il est utile pour les temps courts mouvements.
Bien sûr, vous pouvez simplement utiliser un filtre passe-haut à la place, mais qui nécessite généralement un taux d'échantillonnage fixe et est probablement plus coûteuse en termes de calcul si vous êtes en utilisant la convolution à réponse impulsionnelle finie (filtre).
OriginalL'auteur Pete
Il est plus facile que vous le pensez. Vous pouvez vouloir avoir un coup d'oeil à mon post ici:
http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus
Que faire si vous avez seulement 6dof l'IMU (pas de magnétomètre) - puis-je encore utiliser ce en quelque sorte? Je reçois le quaternion de Filtre de Kalman Étendu qui est mis en œuvre par quelqu'un d'autre.
Ce qui est
q[3]
censé être dans votre code? Autant que je sache, la 3D, les vecteurs ont 3 coordonnées...q est le quaternion, un 4 dimensions vecteur
Avez-vous une bonne référence pour ce code mis en œuvre dans n'importe quel ouvrage?
OriginalL'auteur Fabio Varesano