Para esta semana se pidió utilizar el algoritmo de geolocalización por triangulación para encontrar la localización de un punto receptor entre tres transmisores.
Esto lo realicé mediante una simulación gráfica, en Python. En la simulación, los receptores suponen ser 3 antenas fijas con posición conocida, y del receptor solo se conoce la señal que obtiene de dichos transmisores, que está medida en función de su distancia a los transmisores.
Pero para simular el desplazamiento de la señal, esta distancia no se calcula directamente con la fórmula para distancias entre dos puntos, sino que se expande el área del círculo hasta detectar un receptor, es decir cuando la circunferencia toque el punto.
La arquitectura de la simulación se ve así:
En este caso, todas las posiciones se miden en referencia a pixeles de la ventana, por lo cual los transmisores están localizados como sigue:
- Rojo: 263, 485
- Verde = 708, 393
- Azul = 512, 81
En base a estas coordenadas, al dar click en una parte de la pantalla, se busca calcular la posición en la cual se dio click, utilizando el algoritmo básico de trilateración.
Éste algoritmo calcula tres coordenadas $x, y, z$ de un punto que es la intersección entre tres círculos, que en este caso son las señales de los transmisores. Cabe destacar que dependiendo de la posición donde se de click, y dependiendo de las señales máximas de las antenas, es posible que un punto no pueda ser calculado de forma exacta, porque solo dos transmisores están al alcance.
Si solo un transmisor esta a alcance, la posición no se puede calcular correctamente.
Aquí algunos ejemplos:
Al alcance de tres transmisores:
En este caso el receptor se encuentra cerca de la mitad de la ventana, por lo que está en buen alcance con los tres transmisores. Calculando con 3 transmisores los resultados son exactos, proporcionando las mismas coordenadas donde se coloco el receptor.
Al alcance de dos transmisores:
Como se puede observar, el receptor (con el icono del smartphone) esta fuera de alcance del transmisor número 2 (verde). Por lo tanto solo se puede calcular su posición usando el transmisor 1 y 3, lo cual es hecho con un ligero error. La captura de la terminal muestra que el verdadero punto fue 198, 180, mientras que el detectado usando dos transmisores fue: 191.99999619, 216.99999619.
Al alcance de uno o ningún transmisor
Al alcance de un receptor como se puede observar aquí, estando el receptor localizado al pie de un transmisor y por lo tanto fuera del alcance de los otros dos, es imposible calcular el punto, por lo cual el programa imprime que no existe una solución para determinar la posición de ese receptor.
En este caso el receptor está en una esquina, opuesta a los otros 3 transmisores, por lo que no existen suficientes datos para poder calcular su posición.
Ejemplo de animación:
Código:
Referencias:
- wwnick, John Austen; en respuesta a "Trilateration using 3 latitude and longitude points, and 3 distances", Fecha última de modificación: 26 de Junio de 2012 a las 21:04.
Muy bien; 10 pts.
ResponderEliminar