Comment puis-je trouver la distance parcourue avec le gyroscope et l'accéléromètre?
Je veux créer une application qui calcule la Distance exacte parcourue par l'iPhone (pas de longue distance) à l'aide de Gyro+Accéléromètre. Pas besoin de GPS ici.
Comment dois-je aborder ce problème?
Vous devez vous connecter pour publier un commentaire.
Le calcul de base derrière ce problème est dans l'expression
(et d'autres expressions similaires pour les déplacements en y et z) et de la géométrie de base est le théorème de Pythagore
Donc, une fois que vous avez votre accéléromètre signaux transmis par l'intermédiaire d'un filtre passe-bas et mis en cellule dans le temps avec un intervalle d'échantillonnage dt, vous pouvez trouver le déplacement en x (pardon mon C...)
et de même pour dy et dz. Ici
contient x des valeurs de l'accélération du début à la fin de la mesure au temps 0, dt, 2*dt, 3*dt, ... (n-1)*dt.
Pour trouver le total des déplacements, vous venez de le faire
Gyroscope n'est pas nécessaire pour cela, mais si vous mesurez les distances linéaires, vous pouvez utiliser le gyroscope de la lecture pour contrôler la rotation de l'appareil n'était pas trop grande. Si la rotation est trop fort, faire de l'utilisateur de re-faire la mesure.
Vous obtenez la position par intégration de l'accélération linéaire à deux reprises, mais l'erreur est horrible. Il est inutile dans la pratique.
Ici est une explication de pourquoi (Google Tech Talk) à 23:20. Je recommande fortement cette vidéo.
Des questions similaires:
la piste des petits mouvements de l'iphone avec pas de GPS
Qu'est-ce que le monde réel de l'exactitude de téléphone accéléromètres lorsqu'il est utilisé pour le positionnement?
comment calculer le téléphone du mouvement dans la direction verticale de repos?
iOS: Précision du déplacement dans l'Espace 3D
Comment utiliser l'Accéléromètre pour mesurer la distance pour le Développement d'Applications Android
La Distance parcourue par l'Accéléromètre
Mise à jour (24 Février 2013): @Simon Oui, si vous en savez plus sur le mouvement, par exemple une personne qui marche et que le capteur est sur son pied, alors vous pouvez faire beaucoup plus. Ceux-ci sont appelés
domaine des hypothèses spécifiques.
Ils casser lamentablement si les hypothèses ne tiennent pas, et peut être assez lourde à mettre en œuvre. Néanmoins, si elles fonctionnent, vous pouvez faire des choses amusantes. Voir les liens dans ma réponse Android accéléromètre de la précision de navigation par Inertie) à l'intérieur de positionnement.
Vous devez utiliser la Base interface de Motion comme décrit dans Simple iPhone détection de mouvement. En particulier tous les rotations peuvent être suivis de façon très précise. Si vous envisagez de faire quelque chose lié à des mouvements linéaires c'est très dur de trucs. Jetez un oeil à L'obtention de déplacement de données d'accélérométrie avec le Noyau de Mouvement.
J'ai pris une fissure à ce et a donné (à la fin de la nuit, ne semble pas obtenir n'importe où). C'est pour un Unity3d projet.
Si quelqu'un veut le reprendre là où je l'ai laissée, je serais heureux d'élaborer sur ce que tout ça ne.
Fondamentalement, après que certains de ce qui s'est avéré être faux positifs, je pensais que je voudrais essayer et de les filtrer à l'aide d'un filtre passe-bas, puis la tentative de suppression rebondit en trouvant une tendance, alors (acc_x[i-1]+acc_x[i])/2.
Il ressemble à un faux positif est toujours en provenance de l'inclinaison, dont j'ai essayé de l'enlever..
Si ce code est utile ou vous mène quelque part, s'il vous plaît laissez-moi savoir!
Ici est la réponse. Quelqu'un a demandé avant.
Il y a une application appelée Télémètre faire la même chose ( disponible dans l'App Store ) .
(acc_x[i-1]+acc_x[i])/2 est un filtre passe-bas, c'est la valeur moyenne entre deux mesures dans le temps
aussi regarder ici : http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
pag :3