Pequeños programas que nos hacen la vida más fácil

Siguiendo con el tema GPS hoy os quería hablar sobre un programa que he encontrado dando vueltas por internet y que se complementa perfectamente con el receptor bluetooth del que os hablaba recientemente.

Teniendo en cuenta que el Woxter BT-100 no lleva ningún tipo de pantalla para saber nuestra posición o la señal de los satélites se necesita un aparato con pantalla y bluetooth (o puerto USB) para conocer estos datos “sobre el terreno”. No tengo un PDA con esas caracterísiticas, pero enseguida pensé que mi teléfono móvil (un Motorola RAZR V3) posee ambas cosas y es capaz de ejecutar aplicaciones en Java, por lo que “sólo” necesitaba un programa que fuera capaz de conectar con el receptor GPS y leer los datos que éste emite en el estandar NMEA.

Y como digo, buscando por la red di con un programa llamado “HamGPS” que ha echo una persona de forma completamente altruista y que posee exactamente las características que yo buscaba. No quiero descargar mapas en el teléfono por GPRS porque lo que pretendo con el BT-100 es ver luego en casa tranquilamente la ruta que he seguido, pero sí que me vendría muy bien saber cómo ando de nivel de señal de los satélites y algún que otro dato de interés.

Pues bien, HamGPS es un pequeño programa en Java que ocupa nada más que 9 Kb de memoria y que ahora os comentaré en detalle con ayuda de una captura que he sacado del programa funcionando en mi propio móvil:

Una vez que el programa ha enlazado con el repector GPS a través de bluetooth nos mostrará la siguiente información en la pantalla del teléfono (voy comentando las líneas de arriba a abajo y de izquierda a derecha):

  • En la línea superior se muestran el número de satélites de los que estamos recibiendo señal en ese momento, si el tipo de posicionamiento es 2D (sería con 3 satélites) o 3D (con 4 o más). El siguiente dígito es una muestra de la precisión de la medida; básicamente cuanto más bajo sea, más precisa será la medida de los parámetros.
  • A continuación, en las dos siguientes líneas se nos muestra nuestra posición en grados minutos, segundos y décimas de segundo, tanto en latitud como en longitud. Un dato completamente inútil sin ayuda de un mapa, pero que ahí está para que nos situemos sobre el mundo 😉
  • En la línea siguiente aparecen los datos de la altura sobre el nivel del mar y a su derecha el llamado “locator” (tengo que investigar sobre eso).
  • A continuación una línea que marca nuestra velocidad (en la foto marca 0.0 Km/h porque estaba parado para hacer la foto 😛 ) y si estamos en movimiento a la derecha aparecerá el rumbo que llevamos en grados.
  • En la siguiente línea vemos la fecha y la hora en formato GMT (Greenwich Mean Time) a la que hay que sumar dos horas si estamos en Madrid.
  • Por último tenemos una representación de barras en la que se muestra la intensidad de señal de cada satélite. El programa muestra como máximo 8 barras, pero el BT-100 puede trabajar hasta con 12 al mismo tiempo, por lo que puede que alguno se quede fuera de la representación.

Ese punto rojo es el lugar aproximado desde donde hice la fotografía que tenéis un poco más arriba. La posición de la línea y el lugar en el que me encontraba no coinciden exactamente por la altura de los edificios que me rodeaban (se pierde intensidad de señal) y estaba completamente parado (se pierde precisión); en realidad la foto está hecha unos 5 metros más a la izquierda (donde están los coches aparcados).

En definitiva, un programa que me ha sorprendido gratamente porque así puedo saber “sobre el terreno” una serie de datos útiles como la altitud a la que me encuentro, la velocidad a la que me estoy moviendo o la intensidad de señal de los satélites. Y lo mejor de todo esto es que es un programa completamente gratuíto, que funciona con la práctica totalidad de teléfonos móviles que acepten programas en J2ME (y lleven bluetooth, claro) y que no ocupa absolutamente nada en la memoria del teléfono. Parece mentira que quien ha hecho esto lo haya programado por amor al arte. ¡Qué gran labor!

¡Un saludo!

Explicación básica del funcionamiento de un sistema GPS

Hoy voy a intentar explicaros cómo funciona “a groso modo” el sistema de orientación que todos conocemos como GPS. Creo que puede ser un tema de interés y que mucha gente se habrá preguntado alguna vez. Ya os advierto que no voy a entrar en datos técnicos ni nada que se le parezca, ya que lo que pretendo es que se capte de manera global la idea de cómo funciona este complejo sistema.

GPS son las siglas de Global Positioning System; es decir “Sistema de Posicionamiento Global” y consiste en una red de 24 satélites que emiten una serie de señales simultáneamente las cuales una vez interpretadas por un receptor nos dan nuestra posición en tres dimensiones en cualquier punto del globo terráqueo, nuestra velocidad y nuestra orientación. Obviamente, el sistema GPS quedará sin cobertura en aquellos lugares a los que no lleguen las señales de los satélites, por lo que no tendrá utilidad alguna bajo tierra, dentro de edificios y similares; sin embargo, en todo lugar que tenga visibilidad del cielo podremos ser capaces de orientarnos sin problemas gracias a este sistema.

Para comprender cómo funciona el sistema debemos saber que la red de satélites GPS se encuentran repartidos por la órbita terrestre a unos 20200 Km de altura y que hay aproximadamente unos 30 de ellos (se necesitan 24, pero hay varios “de reserva”) dando vueltas a la tierra sin descanso. Pues bien, el principio básico que sigue un receptor GPS para saber dónde se encuentra es la triangulación de las señales que recibe de tres o más de esos satélites: al recibir la señal de un satélite el receptor conoce el tiempo que tarda en llegar dicha señal, y por tanto la distancia a la que se encuentra ese satélite. Ese dato por sí sólo no nos va a dar muchas pistas sobre dónde nos encontramos, ya que el área que cubre es grande. Sin embargo, si conseguimos recibir la señal de tres satélites el receptor ya será capaz de saber en qué posición se encuentra en latitud y longitud; y en el caso de que las señales provengan de cuatro o más satélites también podremos conocer la altura a la que nos encontramos.

Simplificando un poco el tema, podemos decir que el problema se reduce a un cálculo de superficies esféricas (cuyo centro es la posición del satélite y radio la distancia a la que nos encontramos) que interseccionan entre sí, el cual se resuelve con cuatro esferas para obtener un punto exacto; aunque el GPS sólo necesita tres de ellos para posicionarse en la superficie terrestre gracias a un “truco” que emplea y que consiste en descartar uno de los dos puntos obtenidos al hacer la intersección de tres esferas.

Obviamente el sistema no es tan simple como leer las señales, triangular y ya está, ya que el receptor recibe el posicionamiento de los satélites para saber cuáles tiene sobre él en cada momento, hay que solventar el tema de la perfecta sincronización de los relojes del satélite y el receptor porque las señales viajan a la velocidad de la luz (un error de una milésima de segundo representaría un error de 300 Km). Del mismo modo, hay que aplicar correcciones en las posiciones de los satélites porque sus órbitas pueden tener ligeras variaciones, tener en cuenta los efectos atmosféricos sobre la señal cuando llega a la tierra… en definitiva, que aunque la idea principal parezca sencilla (en realidad lo es) lo verdaderamente complejo a la hora de desarrollar un sistema como este fue solventar todos esos problemas que se iban presentando a medida que surgían nuevas ideas.

El sistema GPS: un ejemplo de ingeniería a gran escala. A mí me parece increíble que recibiendo la señal de unos satélites situados a 20000 Km de altura seamos capaces de conocer nuestra precisión con escasos metros de error. ¿No os lo parece a vosotros también?

Bueno, con esto doy por concluida esta entrada esperando que os haya entretenido y os hayais dado cuenta de que realmente el ingenio del ser humano no tiene límites cuando se propone resolver algún problema.

¡Un saludo!