Précision de l'accéléromètre androïde (navigation inertielle))

je cherchais à mettre en œuvre un système de Navigation inertielle pour un téléphone Android, qui je me rends compte est difficile compte tenu de la précision de l'accéléromètre, et la fluctuation constante des lectures.

pour commencer, j'ai placé le téléphone sur une surface plane et j'ai échantillonné 1000 lectures d'accéléromètres dans les directions X et Y (parallèle à la table, donc pas de pesanteur agissant dans ces directions). J'ai ensuite fait la moyenne de ces lectures et utilisé cette valeur pour calibrer le téléphone (en soustrayant ceci la valeur de chaque lecture).

j'ai ensuite testé le système en le mettant sur la table et d'échantillonnage 5000 accéléromètre lectures dans les directions X et Y. Je m'attendrais, compte tenu de l'étalonnage, à ce que ces accélérations s'additionnent jusqu'à 0 (approximativement) dans chaque direction. Cependant, ce n'est pas le cas, et l'accélération totale sur 5000 itérations est loin d'être nulle (moyenne d'environ 10 sur chaque axe).

je réalise sans voir mon code cela peut être difficile à répondre, mais dans un sens plus général...

est-ce simplement un exemple de l'inexactitude des lectures de l'accéléromètre sur un téléphone mobile (HTC Desire S), ou est-il plus probable que j'ai fait des erreurs dans mon codage?

96

6 réponses

vous obtenez la position en intégrant l'accélération linéaire deux fois, mais l'erreur est horrible. Il est inutile dans la pratique.

Voici une explication pourquoi (Google Tech Talk) à 23:20 . Je recommande fortement cette vidéo.

ce n'est pas le bruit de l'accéléromètre qui cause le problème , mais le bruit blanc du gyro , voir la sous-section 6.2.3 Propagation de Erreur. (Au fait, vous aurez aussi besoin des gyroscopes.)

comme pour le positionnement intérieur, j'ai trouvé ces utiles:

Localization and Tracking Indoor RSSI-Based Using Sigma-Point Kalman Smoothers

suivi des piétons au moyen de capteurs inertiels montés sur les chaussures

amélioration de la Performance des podomètres à L'aide d'un seul accéléromètre

je n'ai aucune idée de comment ces méthodes pourraient effectuer dans des applications réelles, ou comment transformer en une belle application Android.

une question similaire est this .

mise à jour:

apparemment, il existe une version plus récente que Oliver J. Woodman, "An introduction to inertial navigation", sa thèse de doctorat:

Localisation des piétons pour les environnements intérieurs

119
répondu Ali 2017-05-23 12:18:22

je pense juste à haute voix, et je n'ai pas encore joué avec une API d'accéléromètre android, alors soyez indulgents.

tout d'abord, traditionnellement, pour obtenir la navigation à partir des accéléromètres, vous auriez besoin d'un accéléromètre à 6 axes. Vous avez besoin d'accélérations en X, Y, et Z, mais aussi des rotations Xr, Yr, et Zr. Sans les données de rotation, vous n'avez pas assez de données pour établir un vecteur sauf si vous supposez que l'appareil ne change jamais son attitude, ce qui serait assez limite. Aucun on lit la TOS quand même.

oh, Et tu sais que L'INS dérive avec la rotation de la terre, n'est-ce pas? Donc il n'y a que trop. Une heure plus tard, vous grimpez mystérieusement sur une pente de 15° dans l'espace. En supposant que vous ayez un INS capable de maintenir l'emplacement aussi longtemps, ce qu'un téléphone ne peut pas faire pour l'instant.

une meilleure façon d'utiliser les accéléromètres-même avec un accéléromètre à trois axes - pour la navigation serait de se raccorder au GPS pour calibrer L'INS à chaque fois possible. Là où le GPS n'est pas à la hauteur, L'INS fait de beaux compliments. Le GPS peut soudainement vous tirer dessus à 3 pâtés de maison parce que vous étiez trop près d'un arbre. L'INS n'est pas génial, mais au moins il sait que tu n'as pas été touché par un météore.

ce que vous pouvez faire, c'est enregistrer les données de l'accéléromètre des téléphones, et beaucoup d'entre elles. Comme les semaines. Comparez - le avec de bonnes données GPS (je veux dire vraiment bonnes) et utilisez le datamining pour établir la corrélation des tendances entre les données d'accéléromètre et les données GPS connues. (Pro tip: Vous aurez envie pour vérifier L'Almanach GPS pendant des jours avec une bonne géométrie et beaucoup de satellites. Certains jours, vous pouvez n'avoir que 4 satellites et ce n'est pas suffisant) ce que vous pourriez être en mesure de faire est de constater que lorsqu'une personne marche avec son téléphone dans sa poche, les données de l'accéléromètre enregistre un modèle très spécifique. Basé sur le datamining, vous établissez un profil pour cet appareil, avec cet utilisateur, et quelle sorte de vitesse Ce modèle représente quand il avait des données GPS pour aller avec elle. Vous devriez être en mesure de détecter virages, monter des escaliers, s'asseoir (calibration à 0 Temps de vitesse!) et diverses autres tâches. Comment le téléphone est détenu doivent être considérées comme des entrées de données entièrement. Je sens un réseau neuronal utilisé pour l'exploration de données. Quelque chose qui ignore ce que les entrées signifient, en d'autres termes. L'algorithme ne chercherait que des tendances dans les modèles, et ne prêterait pas vraiment attention aux mesures réelles de L'INS. Tout ce qu'il connaîtrait est historically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now. et il ferait avancer la pièce conséquent. Il est important qu'il soit complètement aveugle, parce que juste mettre un téléphone dans votre poche pourrait être orientée dans l'une des 4 orientations différentes, et 8 Si vous changez de poche. Et il y a plusieurs façons de tenir votre téléphone. Nous parlons beaucoup de données ici.

vous aurez évidemment encore beaucoup de dérive, mais je pense que vous auriez plus de chance de cette façon parce que l'appareil saura quand vous avez arrêté de marcher, et la dérive de position ne sera pas une perpétuation. Il sait que vous êtes immobile basée sur des données historiques. Les systèmes INS traditionnels ne possèdent pas cette caractéristique. La dérive se perpétue à toutes les mesures et composés futurs exponentiellement. Une précision anormale, ou avoir une navigation secondaire à vérifier à intervalles réguliers, est absolument essentielle avec les INS traditionnels.

Chaque appareil et chaque personne devrait avoir leur propre profil. C'est beaucoup de données et beaucoup de calculs. Tout le monde marche à des vitesses différentes, avec les différentes étapes, et met leurs téléphones dans différentes poches, etc. Sûrement à mettre en œuvre dans le monde réel nécessiterait arithmétique être géré côté serveur.

si vous avez utilisé le GPS pour la ligne de base initiale, une partie du problème est que le GPS a tendance à avoir ses propres migrations au fil du temps, mais ce sont des erreurs qui ne se perpétuent pas. Installez un récepteur à un endroit et enregistrez les données. S'il n'y a pas de corrections WAAS, vous pouvez facilement obtenir des correctifs de localisation dérivant au hasard instructions 100 pieds autour de vous. Avec WAAS, peut-être à 6 pieds. Vous pourriez en fait avoir plus de chance avec un sous-mètre système RTK sur un sac à dos pour au moins obtenir L'algorithme de L'ANN.

vous aurez toujours une dérive angulaire avec L'INS en utilisant ma méthode. C'est un problème. Mais, si vous êtes allé si loin pour construire une ANN pour verser plus de semaines de données GPS et INS parmi les utilisateurs de n, et effectivement obtenu il fonctionne à ce point, vous évidemment ne vous souciez pas big data jusqu'à présent. Continuez à descendre ce chemin et utiliser plus de données pour aider à résoudre la dérive angulaire: Les gens sont des créatures de l'habitude. Nous faisons à peu près les mêmes choses comme marcher sur les trottoirs, passer par des portes, monter des escaliers, et ne pas faire des choses folles comme marcher à travers les autoroutes, à travers les murs, ou hors des balcons.

alors disons que vous prenez une page de Big Brother et commencez à stocker des données sur l'endroit où les gens vont. Vous pouvez commencer à cartographier où les gens devraient marcher. C'est un pari assez sûr que si l'utilisateur elle monte les escaliers, elle est à la même base que la personne avant elle. Après 1000 itérations et quelques ajustements des moindres carrés, votre base de données sait à peu près où ces escaliers sont avec une grande précision. Maintenant, vous pouvez corriger la dérive angulaire et l'emplacement que la personne commence à marcher. Quand elle atteint ces escaliers, ou tourne le long de ce hall, ou descend un trottoir, toute dérive peut être corrigée. Votre base de données contiendrait des secteurs qui sont pondérés par la probabilité qu'un personne ne marcherait là, ou que cet utilisateur a marché là dans le passé. Les bases de données spatiales sont optimisées pour cela en utilisant divide and conquer pour allouer seulement les secteurs qui sont significatifs. Ce serait un peu comme ces projets du MIT où le robot équipé d'un laser commence avec une image noire, et peint le labyrinthe en mémoire en prenant chaque tour, illuminant où tous les murs sont.

zones de trafic élevé obtiendraient des poids plus élevés, et les zones où personne n'a jamais été Obtenir 0 poids. Les zones les plus fréquentées ont une résolution plus élevée. Vous finiriez essentiellement avec une carte de partout où quelqu'un a été et l'utiliser comme un modèle de prédiction.

Je ne serais pas surpris si vous pouviez déterminer quel siège une personne a pris dans un théâtre en utilisant cette méthode. Avec suffisamment d'utilisateurs allant au théâtre, et assez de résolution, vous auriez la cartographie de données chaque ligne du théâtre, et la largeur de chaque ligne est. Plus de gens visitent un endroit, plus grande est la fidélité avec laquelle vous pouvez prédire que cette personne se trouve.

aussi, je vous recommande fortement d'obtenir un abonnement (gratuit) au magazine GPS World si vous êtes intéressé par les recherches en cours sur ce genre de choses. Chaque mois, je geek.

17
répondu RyanJMcGowan 2015-05-01 19:15:15

Je ne suis pas sûr à quel point votre offset est grand, parce que vous avez oublié d'inclure des unités. ("Environ 10 sur chaque axe" ne dit pas grand chose. : P) cela dit, il est encore probable en raison de l'inexactitude dans le matériel.

l'accéléromètre est parfait pour des choses comme déterminer l'orientation du téléphone par rapport à la gravité, ou détecter des gestes (secouer ou cogner le téléphone, etc.)

cependant, essayer de faire Dead reckoning en utilisant l'accéléromètre va vous soumettre pour beaucoup d'composé d'erreur. L'accéléromètre devrait être incroyablement précis sinon, et ce n'est pas un cas d'usage courant, donc je doute que les fabricants de matériel optimisent pour cela.

8
répondu Trevor Johns 2011-10-19 23:22:12

accéléromètre Android est numérique, il échantillonne l'accélération en utilisant le même nombre de "seaux", disons qu'il ya 256 seaux et l'accéléromètre est capable de détecter de-2g à +2g. Cela signifie que votre sortie serait quantifiée en termes de ces "seaux" et sauterait autour d'un certain ensemble de valeurs.

pour calibrer un accéléromètre android, vous devez échantillonner beaucoup plus de 1000 points et trouver le" mode " autour duquel l'accéléromètre est fluctuer. Ensuite, trouvez le nombre de points numériques par combien la sortie fluctue et utilisez cela pour votre filtrage.

je recommande le filtrage Kalman une fois que vous obtenez le mode et +/- fluctuation.

7
répondu Alex Stone 2012-05-31 12:31:46

je sais que c'est assez vieux, mais la question n'est pas abordée dans AUCUNE des réponses fournies.

Ce que vous voyez est l'accélération linéaire de l'appareil, y compris l'effet de la gravité. Si vous posez le téléphone sur une surface plane , le capteur signalera l'accélération due à la pesanteur qui est d'environ 9.80665 m/s2 , donnant ainsi les 10 que vous voyez. Les capteurs sont inexacts, mais pas à ce point! Voir ici pour certains liens utiles et des informations sur le capteur que vous peut-être après.

5
répondu Simon O'Hanlon 2017-05-23 11:54:57

vous êtes en train de faire l'hypothèse que les lectures de l'accéléromètre dans les directions X et Y, qui dans ce cas est entièrement bruit matériel, formeraient une distribution normale autour de votre moyenne. Apparemment ce n'est pas le cas.

une chose que vous pouvez essayer est de tracer ces valeurs sur un graphique et voir si un modèle émerge. Si non, alors le bruit est statistiquement aléatoire et ne peut pas être étalonné contre--au moins pour votre matériel téléphonique.

0
répondu Hai Phan 2018-04-17 04:14:35