11
votes

Quelle est la précision du monde réel des accéléromètres du téléphone lorsqu'il est utilisé pour le positionnement?

Je travaille sur une application où j'aimerais suivre la position d'un utilisateur mobile à l'intérieur d'un bâtiment où GPS n'est pas disponible. L'utilisateur commence à un emplacement fixe bien connu (précis à moins de 5 centimètres), à quel point l'accéléromètre du téléphone doit être activé pour suivre tous les mouvements supplémentaires par rapport à cet emplacement fixe. Ma question se pose, dans les téléphones intelligents de génération de courant (iPhones, téléphones Android, etc.), à quel point peut-on s'attendre à pouvoir suivre la position des anbodies en fonction de l'accéléromètre. Ces téléphones sont-ils généralement équipés d'accès?

Des exemples spécifiques seraient bons, tels que "Si je déplace 50 mètres x du point de départ, 35 mètres y du point de départ et 5 mètres Z du point de départ, je peux m'attendre à ce que mon emplacement soit approché à l'intérieur de + / - 80 centimètres sur la plupart des téléphones intelligents actuels ", ou autre.

Je n'ai qu'une compréhension superficielle des techniques telles que Kalman Filtres pour corriger la dérive, si si de telles techniques sont pertinentes pour ma demande et que quelqu'un souhaite décrire la qualité des corrections, je pourrais obtenir de telles techniques, ce serait un plus .


2 commentaires

Je n'ai pas de données, mais je peux imaginer que cela diffère beaucoup pour chaque modèle. Cela pourrait même être que la façon dont vous tenez le téléphone fait une différence.


Pas exactement la même chose, mais combinant la triangulation de la tour radio, le GPS et la mesure et ajuste les erreurs d'accéléromètre au fil du temps - vous devriez pouvoir améliorer les données de position.


4 Réponses :


14
votes

Si vous intégrez les valeurs d'accéléromètre deux fois, vous obtenez la position mais l'erreur est horrible. Il est inutile dans la pratique.

Voici Une explication Pourquoi (Google Tech Talk) 23:20.

J'ai répondu une question similaire.


3 commentaires

Où avez-vous répondu à cela? Vos réponses semblent être un ensemble cyclique de «c'est possible, mais très erroné, voyez ici» et rond et rond ......


@ user1423133 J'ai corrigé le lien. Désolé pour le mélange. Ceci est bizarre que vous êtes le premier à le remarquer. Merci pour l'avertissement!


Si vous en avez besoin pour une double vérification dans la fusion du capteur, ce n'est pas une chose horrible. C'est relativement inutile pour un emplacement absolu, mais de donner un indice à un autre algorithme, c'est une chose merveilleuse d'avoir. Utilisez un filtre Kalman



7
votes

Je ne sais pas si ce fil est toujours ouvert ou même si vous essayez toujours cette approche, mais je pouvais au moins donner une contribution à cela, en considérant que j'ai essayé la même chose.

Comme dit Ali ... c'est horrible! La plus petite erreur de mesure des accéléromètres s'avère être rétraculée après une double intégration. Et en raison d'une augmentation constante et d'une diminution de l'accélération tout en marchant (avec chaque étape de pied), cette erreur s'accumule rapidement au fil du temps.

Désolé pour la mauvaise nouvelle. Je ne voulais pas non plus le croire, jusqu'à ce que je t'essaye ... Filtrer les mesures indésirables ne fonctionne pas non plus.

J'ai une autre approche éventuellement plausible, si vous êtes intéressé par votre projet. (Approche que j'ai suivi pour ma thèse pour mon diplôme d'ingénierie informatique) ... à travers le traitement de l'image!

Vous suivez essentiellement la théorie des souris optiques. Flux optique, ou appelé par une vue, ego-motion. Les algorithmes de traitement d'image implémentés dans Androids NDK. Même implémenté OPENCV via le NDK pour simplifier les algorithmes. Vous convertissez des images en niveaux de gris (compensation pour différentes entrées de lumière), puis implémentez le seuil, l'amélioration de l'image, sur les images (pour compenser les images qui se prostituées en marchant), puis la détection de coin (augmentation de la précision des estimations de résultats total), puis de la correspondance de gabarit. Est-ce que la comparaison réelle entre les cadres d'image et l'estimation du déplacement réel en quantité de pixels.

Vous passez ensuite sur l'essai et l'erreur pour estimer quelle quantité de pixels représente quelle distance et multiplie avec cette valeur pour convertir le déplacement de pixels en déplacement réel. Cela fonctionne jusqu'à une certaine vitesse de mouvement, le problème réel étant des images de caméra devient toujours trop flou pour des comparaisons précises en raison de la marche. Cela peut être amélioré en définissant les repères de caméra ou l'ISO (je joue toujours avec cela).

J'espère que cela aide ... sinon Google pour Egomotion pour des applications en temps réel. Finalement, vous obtiendrez les bonnes choses et trouverez la Jibberish que je vous ai vint expliquer. Profitez:)


2 commentaires

J'avais considéré la possibilité d'un traitement d'image. Quel est l'état de la technique en ce moment en termes de précision? Je suppose que l'on ne peut pas simplement marcher dans une pièce inconnue et obtenir des mesures de distance de manière fiable de la distance parcourue, du moins pas de rien n'approchant une bibliothèque de code Drop-in?


J'ai fait quelques tests en marchant une certaine distance (avec une vitesse de marche lente et régulière, pour annuler les effets de flou de la vidéo, mais pour voir la précision réelle avec les calculs de déplacement de pixels) et en comparant les résultats de déplacement de pixels de chaque test. C'est sur un tapis de couleur uniformément. Les résultats ont produit une erreur moyenne moyenne de 6% au sein de la valeur de résultat nominale (sur la courbe gause). Dans autrement, environ 94% de précision. Test précédent sur la surface de tuile produite autour d'environ 90,8% de précision. L'ensemble de "astuce dans le code" est de perfectionner votre implémentation de seuil (pour la correspondance de modèle)



1
votes

L'approche optique est bonne, mais OpenCV fournit quelques transformations de fonctionnalités. Vous avez ensuite fonctionnalités (OpenCV l'offre).

sans avoir un deuxième point de référence (2 caméras), vous ne pouvez pas reconstruire où vous êtes directement en raison de la profondeur. Au mieux, vous pouvez estimer une profondeur par point, supposer une motion, marquer l'hypothèse basée sur quelques cadres et réinserve à chaque profondeur et à chaque mouvement jusqu'à ce qu'il ait du sens. Ce qui n'est pas si difficile à coder mais ce n'est pas stable, de petites motions de choses dans la scène le visent. J'ai essayé:)

avec une deuxième caméra cependant, ce n'est pas si difficile du tout. Mais les téléphones portables ne les ont pas.


1 commentaires

De nos jours, certains téléphones ont deux caméras.



1
votes

Les puces d'accéléromètre de téléphone typiques résolvent +/- 2G @ 12 bits fournissant 1024 bits sur une plage complète ou 0,0643 ft / sec ^ 2 LSB. Le taux d'échantillonnage dépend des vitesses d'horloge et de la configuration globale. Les taux typiques permettent entre un et 400 échantillons par seconde, avec des taux plus rapides offrant une précision plus faible. Sauf si vous montez le téléphone sur un escargot, la mesure de déplacement ne fonctionnera probablement pas pour vous. Vous pouvez envisager d'utiliser une mesure de distance optique au lieu d'un accéléromètre de téléphone. Découvrez Panasonic Device EKMB1191111.


0 commentaires