Question

Je regardais dans la mise en œuvre d'un système de navigation inertielle pour un téléphone Android, qui est difficile réalises que je donne la précision de l'accéléromètre, et la fluctuation constante de lectures.

Pour commencer, je le téléphone sur une surface plane et échantillonné 1000 mesures de l'accéléromètre dans les directions X et Y (parallèle à la table, donc pas de gravité agissant dans ces directions). Je puis ces lectures fait la moyenne et utilisé cette valeur pour étalonner le téléphone (en soustrayant cette valeur de chaque lecture ultérieure).

J'ai ensuite testé le système en plaçant à nouveau sur la table et l'échantillonnage 5000 lectures accéléromètre dans les directions X et Y. J'attendre, compte tenu de l'étalonnage, que ces accélérations devraient ajouter jusqu'à 0 (à peu près) dans chaque direction. Cependant, ce n'est pas le cas, et l'accélération totale de plus de 5000 itérations est loin d'être 0 (en moyenne autour de 10 sur chaque axe).

Je me rends compte sans voir mon code cela pourrait être difficile de répondre, mais dans un sens plus général ...

Est-ce simplement un exemple de la façon dont les lectures inexactes de l'accéléromètre sont sur un téléphone mobile (HTC Desire S), ou est-il plus probable que je l'ai fait quelques erreurs dans mon codage?

Était-ce utile?

La solution

Vous obtenez la position en intégrant l'accélération linéaire deux fois, mais l'erreur est horrible. Il ne sert à rien dans la pratique.

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

Il est pas le bruit de l'accéléromètre qui provoque le problème, mais le bruit blanc gyro , voir paragraphe 6.2.3 propagation des erreurs. (Soit dit en passant, vous aurez besoin des gyroscopes aussi.)

En ce qui concerne le positionnement à l'intérieur, j'ai trouvé ces documents utiles:

RSSI Basé intérieur Localisation et suivi à l'aide Sigma points Kalman Smoothers

Suivi des piétons avec inertiels chaussures à montage Capteurs

Amélioration de la performance des pédomètres L'utilisation d'un Accéléromètre unique

Je ne sais pas comment ces méthodes exécuteraient dans les applications de la vie réelle ou comment les transformer en une belle application Android.

Une question similaire est cette .

Mise à jour:

Apparemment, il y a une version plus récente que ce qui précède Oliver J. Woodman, "Une introduction à la navigation inertielle", sa thèse de doctorat:

Localisation des piétons pour un environnement intérieur

Autres conseils

Je suis en train de penser à haute voix, et je n'ai pas joué avec une API de l'accéléromètre Android encore, si l'ours avec moi.

Tout d'abord, traditionnellement, pour obtenir la navigation à partir 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 à moins que vous assumez l'appareil change jamais son attitude, ce qui serait assez limitatif. Personne ne lit le TOS de toute façon.

Oh, et vous savez que l'INS avec la rotation dérive de la terre, non? Donc, il y a ça aussi. Une heure plus tard et vous grimpez mystérieusement sur une pente de 15 ° dans l'espace. Cela suppose que vous aviez un INS capable de maintenir l'emplacement si longtemps, un téléphone qui ne peut pas encore.

Une meilleure façon d'utiliser les accéléromètres -Même avec un 3 axes accelerometer- pour la navigation serait d'attacher au GPS pour étalonner l'INS lorsque cela est possible. Où GPS est loin, INS compliments bien. GPS peut soudainement vous tirer dans 3 pâtés de maisons parce que vous avez trop près d'un arbre. INS n'est pas grande, mais au moins il sait que vous ne frappé par un météore.

Ce que vous pouvez faire est connecter les téléphones accéléromètres données, et beaucoup de celui-ci. Comme semaine vaut la peine. Comparez-le avec un bon (je veux dire vraiment bon) les données GPS et l'utilisation datamining pour établir la corrélation entre les données des tendances de l'accéléromètre et les données GPS connus. (Astuce Pro: Vous voulez vérifier l'almanach GPS pendant des jours avec une bonne géométrie et beaucoup de satellites Certains jours, vous ne pouvez avoir 4 satellites et cela ne suffit pas.) Ce que vous pourriez être en mesure de faire est de constater que, lorsqu'une personne marche avec leur téléphone dans leur poche, les données de l'accéléromètre enregistre un modèle très spécifique. Basé sur le datamining, vous créez un profil pour ce périphérique, avec cet utilisateur et quel genre 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 les virages, monter les escaliers, assis (calibration à 0 temps de vitesse!) Et diverses autres tâches. Comment le téléphone est tenu aurait besoin d'être traités comme des entrées de données distinctes entièrement. Je sens un réseau neuronal étant utilisé pour faire l'extraction de données. aveugle Quelque chose à ce que les entrées signifient, en d'autres termes. L'algorithme serait seulement rechercher les tendances dans les modèles, et non 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 serait déplacer la pièce vers l'avant en conséquence. Il est important qu'il est aveugle complètement, parce que mettre un téléphone dans votre poche pourrait être orienté dans l'une des 4 orientations différentes, et 8 si vous changez de poches. Et il y a plusieurs façons de tenir votre téléphone, ainsi. 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, car l'appareil saura quand vous avez arrêté la marche, et la dérive de position ne sera pas une perpétuant. Il sait que vous êtes toujours debout à partir de données historiques. Les systèmes traditionnels INS n'ont pas cette fonctionnalité. Les pérennise la dérive à toutes les mesures futures et composés de façon exponentielle. précision Ungodly, ou ayant une navigation secondaire à vérifier avec à intervalles réguliers, est absolument vital avec INS traditionnel.

Chaque appareil et chaque personne doivent avoir leur propre profil. Il y a beaucoup de données et beaucoup de calculs. Tout le monde marche des vitesses différentes, avec différentes étapes et met leurs téléphones dans différentes poches, etc. Certes, pour mettre en œuvre ce dans le monde réel, il faudrait crissement nombre à traiter côté serveur.

Si vous avez GPS utilisé pour la ligne de base initiale, une partie du problème il y a GPS a tendance à avoir ses propres migrations au fil du temps, mais ils sont des erreurs non-perpétuant. Installez-vous un récepteur dans un endroit et enregistrer les données. S'il n'y a aucune correction WAAS, vous pouvez facilement obtenir l'emplacement fixe à la dérive dans des directions aléatoires 100 pieds autour de vous. Avec WAAS, peut-être jusqu'à 6 pieds. vous MIGHt ont en fait plus de chance avec un système sous-TKP mètres sur un sac à dos pour au moins obtenir le bas de l'algorithme de ANN.

Vous avez encore la 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 un ANN à verser sur semaines de données GPS et INS parmi les utilisateurs n, et en fait obtenu ce travail à ce point, vous ne me dérange pas de toute évidence de grandes données jusqu'à présent. Continuez dans cette voie et utiliser davantage de données pour aider à résoudre la dérive angulaire: Les gens sont des créatures d'habitude. Nous faisons à peu près les mêmes choses comme marcher sur les trottoirs, à travers les portes, les escaliers, et ne pas faire des choses folles comme promenade à travers les autoroutes, à travers les murs, ou de balcons.

Alors disons que vous prenez une page de Big Brother et de commencer à stocker des données sur l'endroit où les gens vont. Vous pouvez commencer la cartographie où les gens seraient censés marcher. Il est un pari assez sûr que si le début de l'utilisateur à monter les escaliers, elle est à la base des escaliers que la personne devant elle se promenait. Après 1000 itérations et quelques ajustements des moindres carrés, la base de données connaît à 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 frappe ces escaliers, ou REFUSE cette salle, ou se déplace sur 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'une personne y marcher, ou que cet utilisateur a marché là-bas dans le passé. bases de données spatiales sont optimisées pour cela en utilisant divide and conquer d'allouer uniquement les secteurs qui ont un sens. Ce serait un peu comme les projets du MIT où le robot laser équipé commence avec une image en noir et peint le labyrinthe en mémoire en prenant chaque tour, illuminant où tous les murs sont.

Domaines de trafic élevé obtiendrait un poids plus élevé, et les zones où personne n'a jamais été get 0 poids. La hausse des zones de circulation sont ont une résolution plus élevée. Vous finiriez essentiellement avec une carte de partout quelqu'un a été et l'utiliser comme un modèle de prédiction.

Je ne serais pas surpris si vous pouvez déterminer ce que une personne a asseoir dans un théâtre en utilisant cette méthode. assez donné aux utilisateurs d'aller au théâtre, et une résolution suffisante, vous auriez des données cartographie chaque ligne du théâtre, et la largeur de chaque ligne est. Plus les gens visitent un lieu, la plus grande fidélité avec laquelle vous pouvez prédire que cette personne se trouve.

recommande également, je vous obtenez un très abonnement (gratuit) au magazine World GPS si vous êtes intéressé par la recherche actuelle dans ce genre de choses. Chaque mois, je geek avec.

Je ne sais pas à quel point votre décalage est, parce que vous avez oublié d'inclure des unités. ( « Autour de 10 sur chaque axe » ne dit pas grand-chose. P). Cela dit, il est encore probablement en raison de l'inexactitude dans le matériel

L'accéléromètre est très bien pour des choses telles que la détermination de l'orientation du téléphone par rapport à la gravité, ou la détection des gestes (secouer ou de cogner le téléphone, etc.)

Cependant, en essayant de faire l'estime en utilisant l'accéléromètre va vous soumettre à un grand nombre d'erreurs composé. L'accéléromètre aurait besoin d'être incroyablement précis autrement, et ce n'est pas un cas d'utilisation commune, donc je doute les fabricants de matériel sont l'optimisation pour elle.

accéléromètre applications est l'accélération numérique, il échantillons en utilisant le même nombre de « seaux », permet de dire il y a 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 serait sautiller une série de valeurs.

Pour calibrer un accéléromètre Android, vous devez goûter beaucoup plus de 1000 points et trouver le « mode » autour duquel l'accéléromètre est fluctuante. Ensuite, trouver le nombre de points numériques de combien la production et l'utilisation que fluctuante pour votre filtrage.

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

Je sais que c'est assez vieux, mais la question à n'est pas abordée dans aucune des réponses.

Ce que vous voyez est l'accélération linéaire du dispositif, y compris l'effet de la gravité. Si vous posez le téléphone sur une surface plane du capteur rapportera l'accélération due à la pesanteur qui est d'environ 9.80665 m/s2, donnant ainsi 10 que vous voyez. Les capteurs sont inexactes, mais ils ne sont pas inexact! Voir pour quelques liens utiles et des informations sur le capteur, vous pouvez être après.

Vous faites l'hypothèse que les lectures de l'accéléromètre dans les directions X et Y, qui dans ce cas est tout à fait du bruit matériel, formeraient une distribution normale autour de votre moyenne. Apparemment, ce n'est pas le cas.

Une chose que vous pouvez essayer de tracer ces valeurs sur un graphique et voir si une tendance se dégage. Sinon, le bruit est statistiquement aléatoire et ne peut pas être calibrée contre -. Au moins pour votre matériel de téléphone particulier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top