Je réfléchis simplement à voix haute et je n'ai pas encore joué avec une API d'accéléromètre Android, alors soyez patient.
Tout d'abord, traditionnellement, pour obtenir la navigation à partir d'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 de rotations Xr, Yr et Zr. Sans les données de rotation, vous ne disposez pas de suffisamment de données pour établir un vecteur à moins que vous ne supposiez que l'appareil ne change jamais d'attitude, ce qui serait assez limitant. Personne ne lit le TOS de toute façon.
Oh, et vous savez que l'INS dérive avec la rotation de la terre, non? Alors il y a ça aussi. Une heure plus tard, vous grimpez mystérieusement sur une pente de 15 ° dans l'espace. Cela suppose que vous disposiez d'un INS capable de maintenir l'emplacement aussi longtemps, ce qu'un téléphone ne peut pas encore faire.
Une meilleure façon d'utiliser des accéléromètres - même avec un accéléromètre à 3 axes - pour la navigation serait de se connecter au GPS pour étalonner l'INS chaque fois que possible. Là où le GPS n'est pas à la hauteur, l'INS complimente bien. Le GPS peut soudainement vous tirer à 3 pâtés de maisons parce que vous vous êtes trop près d'un arbre. INS n'est pas génial, mais au moins il sait que vous n'avez 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 du téléphone, et une grande partie. Comme des semaines. Comparez-les avec de bonnes données GPS (je veux dire vraiment bonnes) et utilisez l'exploration de données pour établir la corrélation des tendances entre les données de l'accéléromètre et les données GPS connues. (Conseil de pro: vous voudrez 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 faire est de trouver que quand une personne marche avec son téléphone dans sa poche, les données de l'accéléromètre enregistrent un schéma très spécifique. Sur la base de l'exploration de données, vous établissez un profil pour cet appareil, avec cet utilisateur, et quel type de vitesse ce modèle représente lorsqu'il disposait de données GPS pour l'accompagner. Vous devriez être capable de détecter les virages, monter les escaliers, s'asseoir (calibrage à 0 temps de vitesse! ) et diverses autres tâches. La façon dont le téléphone est tenu devrait être traitée comme des entrées de données entièrement séparées. Je sens un réseau neuronal utilisé pour faire le data mining. Quelque chose de aveugle à ce que signifient les entrées, en d'autres termes. L'algorithme ne rechercherait que les tendances des modèles et ne prêterait pas vraiment attention aux mesures réelles de l'INS. Tout ce qu'il saurait, c'esthistorically, 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 cela ferait avancer la pièce en conséquence. Il est important qu'il soit complètement aveugle, car le simple fait de mettre un téléphone dans votre poche peut être orienté dans l'une des 4 orientations différentes, et 8 si vous changez de poche. Et il existe également de nombreuses façons de tenir votre téléphone. Nous parlons ici de beaucoup de données.
Vous aurez évidemment encore beaucoup de dérive, mais je pense que vous aurez plus de chance de cette façon car l'appareil saura quand vous avez arrêté de marcher, et la dérive de position ne se perpétuera pas. Il sait que vous vous tenez immobile sur la base des données historiques. Les systèmes INS traditionnels n'ont pas cette fonctionnalité. La dérive se perpétue à toutes les mesures futures et se compose de manière exponentielle. Une précision impie, ou avoir une navigation secondaire à vérifier à intervalles réguliers, est absolument vitale avec les INS traditionnels.
Chaque appareil et chaque personne devrait avoir son propre profil. C'est beaucoup de données et beaucoup de calculs. Tout le monde marche à des vitesses différentes, avec des étapes différentes, et met son téléphone dans différentes poches, etc. Il est certain que la mise en œuvre de cela dans le monde réel nécessiterait une gestion des nombres 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 au même 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 dans des directions aléatoires à 100 pieds autour de vous. Avec WAAS, peut-être jusqu'à 6 pieds. Vous pourriez en fait avoir plus de chance avec un système RTK sous-mètre 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é aussi loin pour créer un ANN pour déverser pendant des semaines des données GPS et INS parmi n utilisateurs, et que vous l'avez fait fonctionner jusqu'à présent, cela ne vous dérange évidemment pas pour le moment. Continuez sur cette voie et utilisez plus 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, franchir les portes, monter les escaliers, et ne pas faire des choses folles comme traverser les autoroutes, traverser les murs ou sortir des balcons.
Supposons donc que vous preniez une page de Big Brother et que vous commenciez à stocker des données sur la destination des gens. Vous pouvez commencer à cartographier les endroits où les gens devraient marcher. Il y a fort à parier que si l'utilisateur commence à monter les escaliers, elle se trouve au même pied que la personne avant elle. Après 1000 itérations et quelques ajustements aux moindres carrés, votre base de données sait à peu près où se trouvent ces escaliers avec une grande précision. Vous pouvez maintenant corriger la dérive angulaire et l'emplacement lorsque la personne commence à marcher. Lorsqu'elle atteint ces escaliers, tourne dans ce couloir ou descend un trottoir, toute dérive peut être corrigée. Votre base de données contiendrait des secteurs pondérés par la probabilité qu'une personne s'y promène ou que cet utilisateur y ait marché dans le passé. Les bases de données spatiales sont optimisées pour cela en utilisantdivide and conquer
de n'allouer que des secteurs significatifs. Ce serait un peu comme ces projets du MIT où le robot équipé d'un laser commence par une image noire et peint le labyrinthe en mémoire en prenant chaque tour, éclairant où se trouvent tous les murs.
Les zones à fort trafic auraient des poids plus élevés, et les zones où personne n'a jamais été à 0 poids. Les zones à trafic élevé ont une résolution plus élevée. Vous vous retrouveriez essentiellement avec une carte de partout où quelqu'un a été et vous l'utiliserez comme 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 pour le cinéma et une résolution suffisante, vous auriez des données mappant chaque rangée du cinéma et la largeur de chaque rangée. Plus il y a de personnes qui visitent un lieu, plus la fidélité avec laquelle vous pouvez prédire que cette personne se trouve est élevée.
De plus, je vous recommande vivement de vous abonner (gratuitement) au magazine GPS World si vous êtes intéressé par les recherches actuelles sur ce genre de choses. Chaque mois, je me débrouille avec ça.