Wifi position de la triangulation
J'ai besoin de comprendre comment triangulation Wifi fonctionne. La scène est tel qu'illustré dans le diagramme ci-dessus. Afin de mettre en œuvre wifi triangulation, j'ai besoin d'un minimum de 3 hotspots Wifi et de leurs positions. Le programme d'installation:
1. Pour des raisons de simplicité, supposons que j'ai un 1 sq Km par 1 sq Km zone, et j'ai 3 hotspots Wifi dans ce domaine. Le système de coordonnées est comme suit: 1 angle de la place de la zone est (0,0,0), et la diagonale coin le plus éloigné aura coordonnées (1,1,1). Toutes détermination de la position est à faire par rapport à ce système de coordonnées seul (pour des raisons de simplicité, je ne veux pas global coordonnées xyz). Dans ce cadre, j'ai 3 hotspots wifi à (x1,y1,z1) , (x2,y2,z2), (x3,y3,z3).
2. Nous avons une personne avec un appareil capable de recevoir des signaux wifi et le calcul de la puissance du signal à la position (x,y,z). Le périphérique peut être un téléphone, une tablette, etc.
Le problème: Calculer la position (x,y,z) de la personne de manière dynamique, comme ils se déplacent autour de quand vous avez maintenant entrées suivantes:
1. La force du Signal des signaux reçus de chacun des hotspots wifi
2. Coordonnées de la hotspots wifi précédemment stockées dans des variables ou une base de données.
Première Question: Comment puis-je calculer la position à partir de ci-dessus les entrées? Je suppose que la force du signal est directement proportionnelle à la distance du routeur, mais quelle est la relation exacte? Comment Skyhook le faire avec autant de précision?
Deuxième Question: je crois que ce qui précède entrées sont suffisantes. Est-il quelque chose?
Merci!
- Déterminer la distance entre le point de connexion de l'utilisateur en fonction de l'intensité du signal. C'est le rayon d'un cercle centré au point d'accès. Où tous les trois cercles se coupent, c'est l'emplacement de l'utilisateur.
Vous devez vous connecter pour publier un commentaire.
C'est assez facile. C'est juste des mathématiques de base. De le décomposer en 2 parties:
1) de Trouver votre emplacement horizontal (pas de hauteur).
Pour trouver votre emplacement, vous avez besoin de 3 points, mais il suffit de se concentrer sur 2 points par seconde. à l'aide de 2 points, vous pouvez créer un triangle avec vous-même, et de trouver votre position en fonction de la puissance du signal entre deux points. Cela permettra de savoir où vous êtes entre deux routeurs. Par exemple, si vous êtes entre les routeurs 3 et 4, et la puissance de votre signal en comparaison à 3 est -89 et la puissance de votre signal à 4 est -54, vous savez que vous êtes plus proche de 3 que vous êtes à 4. Si vous faites une approximation de la distance vs force du signal, vous pouvez venir avec une jolie lecture précise de l'endroit où vous êtes entre les routeurs 3 et 4. Le problème de gauche, alors, est de déterminer de quel côté vous êtes sur entre 3 et 4, car vous pourriez avoir le même signal, les valeurs de la résistance (-89, -54) soit au-dessus ou au-dessous de l'routeurs (voir schéma)
Ensuite, il suffit de trouver un autre routeur, et de l'avis de la puissance de votre signal. Vous devriez être en mesure de déterminer de quel côté vous êtes sur assez facilement juste en prenant un coup d'oeil à la force du signal des relations entre le 5 et le 6 routeurs (dans le diagramme).
2) Vous pouvez faire la même chose avec la hauteur.
À faire tout ce qui précède, vous avez vraiment besoin d'une approximation de la distance vs force du signal, et les distances entre les routeurs. De mon test (j'ai écrit mon propre WiFi triangulation de code), la force du signal est assez uniforme sur l'ensemble des appareils mobiles, si un appareil doit avoir les mêmes résultats que l'appareil à côté d'elle.
skyhook fait ce que je pense soit à travers le système de positionnement GPS (il peut être codé en dur), ou fondamentalement le même principe que ce. Skyhook est le seul service que apple est approuvé pour cela, Apple a essentiellement fait la même chose et a ensuite fait certain que les autres applications ne pouvait pas l'utiliser (tout iPhone app qui utilise le restreint 80211 bibliothèque qui contient les fonctions dans l'ordre pour ce faire sera refusé à partir de l'app store).
Edit: Comment trouver la distance:
Vous avez besoin de faire quelques simples approximations. Ces approximations ne sera pas toutes les mêmes en fonction de votre environnement, afin de -89 pieds peut dire que vous êtes 15 pieds de Routeur 3, mais -89 de routeur 4 peut dire que vous êtes de 13 mètres. Peu importe ce que vous faites, cela ne va pas être précis à 100%, mais c'est correct, parce que vous pouvez obtenir dans un délai de 5 pieds pour vous.
donc ce que vous faire est de vous trouver un tas de points où vous obtenez une lecture de -89 de routeur 3, et vous prenez ce que votre distance. Ensuite, vous prenez une moyenne, et que vous utilisez ce moyen pour mettre vers le bas dans votre base de données (qui dit quand vous êtes -89 de routeur 3, vous êtes à 15 pieds). Vous avez alors le faire pour d'autres valeurs, comme -50 ou que ce soit, et vous notez vos valeurs et de trouver un moyen. Maintenant, si -89 signifie que vous êtes à 15 pieds de distance, et -50 signifie que vous êtes à distance de 25 pieds (juste un exemple), vous devez vous rapprocher de votre distance lorsque vous êtes -75 du routeur 3, sauf si vous voulez aller obtenir une approximation par la main pour -75. Ce serait gênant pour des tonnes de valeurs, mais vous devrez faire des essais pour voir comment précis, vous pouvez être avec peu de points de données que vous pouvez obtenir. Vous pouvez approximative entre les deux de la force du signal moyennes en se rendant compte que la force du signal est logarithmique, de sorte que vous pouvez estimer que, depuis -89 est de 15 pieds, puis -75 serait logarithmique (base 10 ou base 2, je ne me souviens pas, mais je suis penchée vers la base 10) plus loin que -89 par un facteur de 14/100.
Edit: en Demandant le code
J'ai le code quelque part, mais c'était il y a quelques années si je dois creuser à travers un tas de choses à trouver. Je pense que sur le plan conceptuel, il devrait être facile à reproduire sans code. Il m'a fallu environ 50 lignes de code java pour les appareils android j'ai été le tester.
En fait, j'ai pris un téléphone android et créé une application qui me permet à tout moment d'afficher le courant ID de connexion wifi de l'appareil, la force du signal, à proximité, wifi ID et la force du signal, et ensuite de localisation GPS. Tout ceci est accessible via android api. Je pense que vous avez besoin d'un appareil android sur l'API de 4 ou plus, ou quelque chose. C'était comme 3 ou 4 ans donc je suis juste de lancer ceci à partir de ce que je me souviens.
La position GPS a été de faire le mapping entre le physique et le wifi de la force plus facile, plutôt que d'avoir à créer un modèle de carte de mon installation d'une autre façon, je pourrais juste avoir google maps le faire pour moi au même moment, puisque je peux superposer la carte et les coordonnées GPS en substance, tout en créant de la distance de map. Vous auriez encore besoin d'une carte de profondeur à la carte des niveaux de sol que nous pouvons faire à la main assez facilement en trouver si vous êtes dans le milieu de deux routeurs. Nous savons que la force du signal est la plus forte à la wifi des centres sur le même étage, et puis pouvez vérifier par vous assurer que vous disposez des signaux plus faibles pour wifi des centres sur les différents étages. Cette carte de profondeur est essentiellement une liste de wifi hubs, et leurs étages respectifs. Nous n'avons pas besoin de leurs positions, puisque l'on peut le mieux s'adapter à la force du signal pour les localisations GPS nous avons pris lors de la marche autour de l'installation et de l'accaparement de la puissance du signal à certains carrefours. C'est quelques calculs simples. Donc pour plan 2D position, regardant vers le bas à partir du haut, nous avons un tas d'objets comme tels:
Et puis, quand nous avons un ping sur le périphérique client et souhaitez de meilleur ajustement, il renvoie un objet comme celui-ci:
Alors nous pouvons facilement adaptée ClientPosition de la carte en 2D que nous avons créé, avec les deux objets.
Ci-dessus est assez simple, et la carte de profondeur est encore plus simple À mon avis.
Idéalement, vous voulez essayer et frapper un couple de différents appareils qui englobent un couple de différentes sans fil techniciens (certains dispositifs, certains dispositifs, n, g, etc) juste pour obtenir des résultats plus précis. Ce que j'ai trouvé, cependant, était que la précision n'est pas que les grandes d'un accord, et vous serez à moins de 5 pieds ou plus. C'était la précision est suffisante pour mes besoins. Idéalement, tous les wifi les moyeux sont le même modèle, et ils sont généralement dans de grandes installations/entreprises, mais même alors, ce n'est pas que les grandes d'un accord. La variabilité est si petite, et si vous n'avez pas besoin fou d'exactitude, il ne sera pas question.
Bien, c'est un signal, de sorte que son l'intensité de la chute de l'au carré de la distance. Voir La Loi Du Carré Inverse
Android va vous donner de la force du signal dans dBm. Je suis familier avec cette unité, mais si c'est quelque chose comme audio décibels, ce n'est pas une échelle linéaire. Vous aurez envie de facteur dans.
Dans un monde parfait, les champs seront uniforme de la assez pour de la pure mesures pour vous donner la distance, mais si vous faites cela par quelque métal que ce soit, les choses pourraient mal tourner. En outre, la configuration interne de votre appareil radio wifi peut rendre plus sensible dans certaines directions. Je ne suis pas ingénieur ou quoi que ce soit, donc je ne sais pas à quel degré ces éléments auront une incidence sur le résultat final. Il peut être sans conséquence.
Enfin, pour les trois dimensions de l'emplacement, je crois que vous avez besoin de quatre points de référence. Si tous les hotspots wifi sont à la même hauteur, vous pouvez toujours trouver votre position horizontale. Si ils ne le sont pas, vous allez être de trouver votre position sur le plan ils sont, ce qui peut ne pas être assez exact pour vous en fonction de la pente de l'avion est.
Ne vous inquiétez pas au sujet de la conversion de la DBm à distance. Des signaux Radio de voyage à la vitesse de la lumière (ou presque) a l'exception de quelques atténuation due à des facteurs environnementaux. Donc, si vous pouvez "ping" de l'appareil, vous pouvez obtenir une idée générale de sa distance. Donné une antenne omnidirectionnelle d'un endroit connu vous pouvez ensuite utiliser le temps qu'il faut pour recevoir la réponse à tracer un rayon et dessiner un cercle. Maintenant, si vous faites cela à partir de plusieurs appareils, les cercles s'entrecroisent, ce qui doit vous guider. Bien sûr, tout cela est de la 2d. On pourrait faire la même chose en 3d, mais vous auriez du traçage des sphères de la place. Les plus périphériques que vous avez le plus précis de l'emplacement peut être.