2010-04-19 8 views
5

J'ai besoin d'obtenir la vitesse d'un appareil Android, basée sur les valeurs de l'accéléromètre. J'ai fait un code qui me permet d'obtenir les valeurs de l'accéléromètre, puis je calcule la vitesse, en utilisant la formule: v = v0 + at. (calcul vectoriel)Android Vitesse basée sur les valeurs de l'accéléromètre

Mon problème est que ma vitesse augmente seulement et ne diminue jamais. Je pense que le problème est que l'appareil n'obtient jamais une accélération négative.

Pouvez-vous m'aider avec ceci?

Répondre

6

L'obtention de la vitesse des accéléromètres pourrait ne pas être possible (oublier fiable) car à vitesse constante il n'y aura pas d'accélération (autre que la gravité). Vous pourriez être mieux d'obtenir des données de localisation GPS et leurs échantillons de temps associés et la vitesse de calcul par la distance au fil du temps.

+1

Eh bien, le problème est que j'essaie d'appliquer une technique de navigation à l'estime pour compenser une défaillance GPS temporaire. Donc, quand je commence à obtenir les valeurs de l'accéléromètre, je n'ai pas de connexion GPS. Je sais que j'aurai une erreur cumulative, et je sais que les valeurs ne sont pas fiables, mais c'est un travail académique, juste pour vérifier que c'est possible. – nunolourenco

+0

Voici mon exemple http://maephv.blogspot.com/2011/10/android-computing-speed-and-distance.html – Maep

4

Soustrayez-vous la force de gravité? L'appareil accélère toujours - même s'il est juste assis sur votre bureau, il accélère à 9,8 m/s^2 loin du centre de la Terre.

+0

Oui, je le fais. et je pense que c'est le 9,8 m/s^2 sont appliqués à la composante Z. – nunolourenco

+0

Cela ne sera vrai que si l'appareil est assis sur un bureau ou une autre surface complètement horizontale. – CommonsWare

+0

Oui, vous avez raison. Comme je considérais seulement que le téléphone était horizontal, j'ai oublié ça. Merci;) – nunolourenco

1

Vous pouvez utiliser une combinaison de l'accéléromètre et de la boussole numérique, dans les téléphones qui en sont dotés, pour déterminer la vitesse et la direction, comme indiqué dans cette section post.

Si tout ce que vous devez faire est de déterminer si la personne marche, tout ce dont vous avez besoin est l'accéléromètre. Il suffit de traiter sa sortie pour les étapes du pied.

Il existe de nombreux didacticiels sur le Web pour détecter les pas avec un accéléromètre.

Il ya une note d'application ici: http://www.analog.com/library/analogDialogue/archives/41-03/pedometer.html qui donne un arrière-plan mathématique décent et un exemple d'algorithme. C'est bien sûr à vous d'en extraire le calcul et de le réécrire pour Android (l'exemple de code est écrit en C). Je ne connais pas actuellement une bibliothèque android open source avec un algorithme de détection de pas.

Si vous implémentez quelque chose, je voudrais obtenir le code, n'oubliez pas de poster les résultats.

Questions connexes