2017-08-25 6 views
0

Je suis arrivé à la conclusion qu'il est impossible de déterminer la vitesse donnée par l'accéléromètre dans un appareil Android. En supposant que ma vitesse initiale à zéro le schéma d'intégration utilisé pour obtenir la vitesse seraitVitesse de l'accéléromètre

v_ib_b = old_v_ib_b + f_ib_b * dt , 

où v_ib_b est la vitesse dans le cadre du corps d'inertie résolu le long des axes du corps et f_ib_b est la force mesurée par l'accéléromètre.
Si je veux calculer la vitesse du smartphone dans le cadre de navigation locale ENU la formule suivante peut être utilisée (équation Bortz simplifiée en négligeant coriolis/godille et la vitesse de transport):

v_eb_n = old_v_eb_n + (C_b_n * (f_ib_b + 0.5 * cross(omega_ib_b, f_ib_b)) - g) * dt 

où C_b_n est la matrice de rotation corps à ENU.
J'ai essayé d'utiliser le Sensor.TYPE_ROTATION_VECTOR, MadgwickAHRS et ma propre fusion de capteurs pour obtenir l'orientation et donc la matrice de rotation dans la trame ENU, respectivement. Peu importe que l'on a utilisé c'est un ouput d'intégrer la vitesse en quelques minutes alors qu'il circulait avec un vélo (téléphone intelligent a été monté sur le ciel en direction du guidon): enter image description here

et ce sont les données brutes intégrées: enter image description here

Je suppose que l'accéléromètre est médiocre, bruyant et annule toutes les mesures dans le temps, ce qui ne permet pas d'obtenir la vitesse. Des idées?

Répondre

0

Les changements d'accélération relativement petits seront mélangés avec le bruit. Est-ce que quelque chose bloque l'utilisation des données GPS? Une autre direction serait de combiner les données du gyroscope avec les données de l'accéléromètre pour une meilleure réduction du bruit, créant une IMU complète. Qu'entendez-vous par combinaison d'un gyroscope et d'un accéléromètre?

+0

Si vous parlez de fusion de capteurs, je l'ai déjà fait pour obtenir l'orientation. – optional