-[ 0x0E ]-------------------------------------------------------------------- -[ Sistemas de Posicionamiento: GPS ]---------------------------------------- -[ by Krip7iK ]-------------------------------------------------------SET-22- * * * * * * * _______ ______ ______ * * * d#######b d######b d######* * #% * #% % % * * * #% *#a. #%####*' `b####a. * * #% % #b' % * * * `a#%%%%*' % #& % *######*' % `"""""' " "" " `""""""' " * * * * ** * * * * * * * -=={ Sistemas de Posicionamiento : GPS }==- - Introduccion: =============== Como supongo que todos sabreis los sistemas de posicionamiento han sido siempre una de las metas mas buscadas por el hombre desde que se decidio a explorar su planeta (y el universo). Toda esta historia comenzo con los mapas, las brujulas y las estrellas, pero a medida que la civilizacion y la ciencia ha ido avanzando hemos ido buscando una mayor precision en todos nuestros logros, y del mismo modo en este caso. Con la aparicion de los aviones y demas medios de transporte la precision de dichos sistemas de posicionamiento se ha ido haciendo cada vez mas relevante y necesaria; de este modo surgen ya ideas como el piloto automatico en los automoviles, para los cuales se necesita una gran precision de posicionamiento del vehiculo sobre un mapa. En torno a todo este tema surgen en los 70 dos proyectos paralelos basados en navegacion por satelite: uno sovietico, GLONASS, y otro americano, GPS; ambos englobados bajo el nombre GNSS (Global Navigation Satelite System). Con la caida de el bloque sovietico parece que el que finalmente se ha impuesto de modo mas global es GPS, bajo control americano, nos centraremos en GPS que es el de mas alcance actualmente. Si bien, desde la Union Europea se esta intentando potenciar el sistema ex-sovietico para contar con un sistema propio y no depender de los Estados Unidos. - El Problema: ============== El problema que se plantea resolver en el dise~o de GPS es el siguiente: Supongamos que tenemos 3 satelites orbitando alrededor de la tierra y tenemos en cada instante su posicion con respecto a unos ejes coordenados situados en el centro de la tierra. Llamemos a los vectores posicion de los satelites s1, s2, y s3. Ahora ponemos sobre la superficie (o en general en cualquier punto, p.e. volando) de la tierra un punto, cuyas coordenadas llamamos p. "p" va ha ser la incognita a despejar, y para ello contamos con otra informacion que debemos apa~arnos para conseguir, esta informacion es la distancia entre el objeto a posicionar y los satelites, serian d1, d2, d3, las cuales ya no podran ser vectores, sino simplemente seran el modulo de la distancia entre cada satelite y el objeto. Asi nos quedaria expresado en un estilo muy matematico que: p> = f(r1>, r2>, r3>, d1, d2, d3) Donde pongo x> representa que se trata de un vector y no un escalar. El que haga falta usar tres satelites se impone como una razon geometrica clara (piensese en triangulacion). Aunque realmente es necesario al menos un satelite mas para corregir errores que surgen de orden practico debido a diferencias de temporizacion. Este problema es el que retraso hasta los 70 la creacion de estos sistemas. Veamos como son estos satelites en estos dos casos: Constelacion de GPS ------------------- Su constelacion de satelites recibe el nombre de NAVSTAR (controlados por el DoD de USA). Consta de 24 satelites, 21 activos + 3 de reserva. Con 4 satelites equiespaciados por orbita, en 6 orbitas de unos 20180 Km de radio. Con una inclinacion de 55 grados respecto al ecuador, y espaciadas 60 grados entre ellas. Constelacion de GLONASS ----------------------- Tambien de 24 satelites, pero con una distribucion diferente. 3 planos orbitales con 8 satelites por plano orbital, cada uno con una inclinacion de 64,8 grados y espaciadas 120 grados entre ellas. Bueno, ya sabemos como estan distribuidos estos satelites alrededor de la tierra, ahora un punto realmente importante es saber como medir todos los parametros que veiamos que hacian falta para definir un sistema donde despejar la situacion del objeto a posicionar. Las posiciones de los satelites son informacion que se puede conocer de un modo directo. Los satelites son los que se encargaran de enviarnos la informacion necesaria para que el sistema de navegacion haye sus coordenadas. Los otros parametros fundamentales para el posicionamiento, esto es, las distancias de los satelites al receptor se obtienen mediante un juego de codigos que se explica mas adelante. - Posicionamiento de los Satelites: =================================== Uno de los puntos mas importantes es poder posicionar los satelites desde un sistema de coordenadas fijo en La Tierra. No vamos a contar las formulas que definen la posicion del satelite, pero si enunciar brevemente que parametros se tienen en cuenta. Sabemos por Kepler que las orbitas de los satelites van a ser elipticas. Una orbita eliptica se define por su excentricidad y longitud de un semieje. De modo que para situar al satelite en el plano de la orbita nos hace falta conocer estos dos parametros de la orbita (e y a) y uno mas dependiente del instante al que se llama anomalia media (M). La orbita no tiene por que ser concentrica con la linea del ecuador, de donde nos hacen falta mas parametros aun, estos son tres, l, i y w. Que nos definen el plano de la conica. En castellano: la inclinacion de la orbita respecto al ecuador y su desplazamiento respecto al meridiano 0. Parece que esto seria suficiente, pero no es del todo cierto, ya que estamos refiriendo todo al eje de rotacion terrestre el cual no se mantiene fijo, si no que sigue una variacion temporal que puede ser definida por una curva (POLODIA) que queda parametrizada con dos parametros (alfa y beta). A~adiendo estos dos ultimos parametros tenemos la posicion del satelite respecto de las coordenadas en el sistema geodesico llamado WGS-84. Todos estos parametros, mas algunos de correccion debidos a situaciones reales como es el rozamiento (en el vacio no tan vacio!), presion solar, variaciones gravitacionales, etc. Todos esos parametros son los que luego son enviados dentro del mensaje de navegacion que denominaremos NAVDATA y reciben el nombre de "efemerides". Si alguno esta especialmente interesado en que son cada uno de estos parametros, solo tiene que coger algun libro de dinamica orbital y echarle un ojo. - Se~ales: ========== Las se~ales que emiten los satelites no son iguales en GPS y GLONASS. Mientras que GLONASS opta por usar diferentes portadoras para cada satelite (FDMA), compartiendo un mismo codigo, GPS opta por una misma portadora y diferente codigo para cada satelite (CDMA). En este articulo, como indica su titulo, nos centraremos mas en GPS. Sobre "como" se envian los datos de navegacion al receptor, primero debemos hablar de como se hace la multiplexacion de los canales de cada uno de los satelites. Esto es como se hace para que cada satelite emita y en recepcion podamos diferenciarlos. En el articulo de SET 21 sobre Tempest enuncie algo sobre los diferentes tipos de multiplexaciones que se pueden hacer, y particularmente hubo uno del que dije poco por su complicacion en la idea que subyacia. Bien, esta es la multiplexacion por codigo o CDMA. Tratare de explicar un poco en que se basa. Supongamos que emitimos desde 3 puntos diferentes las tramas A, B y C. Todas ellas con la misma frecuencia de portadora y simultaneamente en el tiempo. Si solo digo esto, la diferenciacion de cada una de las tramas resultaria imposible. Ahora aparece la CDMA... si cada una de las tramas las codifico (en plan encriptacion) con una secuencia diferente, esto es A+a, B+b, C+c (sumas modulo 2), y en recepcion se cuales son las palabras a, b y c; si ademas conozco como es el principio de los mensajes A, B y C, en recepcion podria dedicarme a "correlar" (operacion que da un pico cuando la similitud entre las se~ales correladas es grande, en el fondo es comparar matematicamente) la señal que recibo con las que espero recibir, y teniendo en cuenta que la recepcion no sera en el mismo instante de cada transmision (retardos distintos, etc.) podria llegar a separar cada una de las transmisiones. Pues bien, esto es lo que se emplea en GPS, con la particularidad de que por cada satelite existen 2 codigos, y dos transmisiones independientes. Ya que es el codigo de encriptacion, y su longitud la que nos ayuda a determinar los tiempos que transcurren entre la emision y la recepcion, cuanto mas largo sea el codigo mejores prestaciones tendremos para dicho calculo. De este modo en GPS se emite con un codigo (C/A) de baja precision, que a su vez ayuda a detectar el otro con menos tiempo de computacion), y con otro (P), de mayor longitud que nos brinda una precision mayor. Es conocido por todo el mundo que tan solo el DoD de estados unidos tiene control sobre el codigo P por lo cual el resto de las personas solo podemos tener una precision menor, y si queremos mas tenemos que recurrir a diversas estrategias como se menciona al final del articulo. Ahora vamos a centrarnos en como es la modulacion, para luego entrar en "que es lo que se envia", y al final describir los codigos C/A y P. Como ya podiamos imaginarnos, para cada tipo de codigo (C/A o P), se utiliza una banda distinta, y una vez en cada banda de frecuencia se usa CDMA para diferenciar entre satelites. La modulacion en frecuencia usada es DPSK, esto es PSK diferencial, o modulacion de fase, en la que la fase es pi o -pi dependiendo de si se envia 1 o 0. En el caso de la se~al con codigo P, se modula la secuencia formada por P+"Mensaje de Navegacion", modulada con frecuencia 1227,6 Mhz; mientras que con frecuencia de portadora 1575,42 Mhz la cosa se complica un poco mas: La se~al se desdobla en fase y cuadratura (esto es dos se~ales DPSK desfasadas 90º), en fase se envia el "mensaje de navegacion"+P, y en cuadratura (90º) se envia el "mensaje de navegacion" + C/A. Ambos relojes de portadora provienen en el satelite de uno de 10,23 Mhz multiplicado por 120 o 154. De modo general queda la se~al como: S= S1(t) + S2(t) + S3(t) Si(t)=Ai*sen(wi*t + pi*(C(t)+D(t)) + dfi) w2=w3; df1=0; df2=0; df3=90º. siendo Ai una constante, wi la frecuencia de portadora, C(t) el codigo que proceda y D(t) el mensaje y df el desfase en el caso de la portadora de 1575,42 Mhz. - Las Tramas usadas: Mensaje NAVDATA ==================================== Cada trama que se transmite consta de 1500 bits, los cuales se organizan en grupos de 300 bits, y cada una de estas subtramas en palabras de 30 bits. Se transmite a una velocidad de 50 bps. TRAMA (1500 bits) => 5 Subtramas (300 bits) => 10 Palabras (30 bits) TRAMA TOTAL: SUBTRAMA 1 ____________________________________________________________________ | | | | | | | | | | | | TLM | HOW+Reserva| CORRECION DE RELOJ+CORREC.ATMOSFERICA+RESERVA | |_____|____________|______|_____|_____|_____|_____|_____|______|_____| SUBTRAMA 2 ____________________________________________________________________ | | | | | | | | | | | | TLM | HOW+Reserva| EFEMERIDES+AODE+RESERVA (14 bits) | |_____|____________|______|_____|_____|_____|_____|_____|______|_____| SUBTRAMA 3 ____________________________________________________________________ | | | | | | | | | | | | TLM | HOW+Reserva| EFEMERIDES+AODE+RESERVA (14 bits) | |_____|____________|______|_____|_____|_____|_____|_____|______|_____| SUBTRAMA 4 ____________________________________________________________________ | | | | | | | | | | | | TLM | HOW+Reserva| MENSAJES ESPECIALES MULTIPLEX en 25 tramas | |_____|____________|______|_____|_____|_____|_____|_____|______|_____| SUBTRAMA 5 ____________________________________________________________________ | | | | | | | | | | | | TLM | HOW+Reserva| ALMANAQUE + ESTADO d la CONSTELACION MUX en 25tr| |_____|____________|______|_____|_____|_____|_____|_____|______|_____| Expliquemos un poquito que es lo que contiene la trama en cada subtrama. Primero vemos que todas las subtramas contienen una palabra a la que se llama TLM y otra llamada HOW. La palabra TLM, telemetrica, contiene unos primeros 8 bits para facilitar el recojer los datos del mensaje y los otros 22 son de informacion sobre las correcciones del satelite, algo que al receptor de un usuario no incumbe, pero si interesa a los controles. La palabra HOW (30 bits) se encarga de permitir la transferencia del codigo C/A al P. Sus 17 primeros bits contienen la cuenta Z, que sirve de indicador de tiempo continuo a GPS. Cambia cada 1,5 s. haciendo referencia al instante de reset de los generadores de codigo P (Z=medianoche Sabado). Esta palabra si hacemos cuentas aparece en recepcion cada 6 seg. lo que produce un incremento de 4 en Z de subtrama a subtrama. El bit 18 indica si la posicion del satelite es precisa o no. El 19 indica si hay sincronizacion entre la palabra TLM y parte de la generacion de P; sirve para una correcta transferencia de C/A a P. De 20-22 identificacion de subtrama. El resto son de reserva. Sobre los bloques de datos solo mencionar unas ligeras notas: Los primeros bloques son bastante autoexplicativos, correcciones de derivas del reloj, de tiempos de propagacion atmosferica, y efemerides; aqui aparece AODE, que es Age Of Data Ephemerides, esto es el tiempo desde que se adquirieron dichas efemerides. Cada hora se renuevan estos datos. El bloque de Mensajes se utiliza para enviar mensajes especiales en caso de que se necesite, y se trocea enviandose en 25 subtramas; lo mismo ocurre con los datos de almanaque que son los utilizados para seleccionar los satelites mas favorables en recepcion. - Los Codigos ============= Como ya se ha comentado estos codigos son utilizados para hacer una CDMA y diferenciar la transmision de cada satelite, y ademas teniendo en cuenta sus retardos en recepcion son los que nos ayudaran a determinar en tiempo de vuelo de la se~al del satelite hasta el receptor y con ello las distancias. Se trata de ruido blanco, en el que la diferencia entre niveles 0 y 1 (o 1 y -1 usando NRZ) es exactamente 1 bit, y diversas particularidades mas que los hacen muy aptos para estas aplicaciones (resumiendo cumplen los postulados de Golomb, que MORTIIS muestra en su articulo). Se le llama a estos codigos PRN o Ruido pseudoaleatorio. Este ruido o codigos son generados por un metodo al que comunmente se conoce como LSFR (Linear Shift Registers), usados ampliamente en cuestiones de criptografia. Para mas informacion sobre LFSRs remitiros al articulo de esta misma SET escrito por MORTIIS. Solo hacer una nota a lo que alli encontrareis, que es particularmente util para entender los codigos de GPS. ----- NOTA: ------------------------------------------- Para generar secuencias retardadas respecto de la original en un LFSR se sigue el siguiente proceso: si tenemos un polinomio generador tal que: p=1+x^7 , sabemos que el bit realimentado sera la XOR de el bit 6 y el bit 1. Esto es: D0=D1 + D7 ;como estamos en modulo2... D7=D0 + D1 ; y generalizando... D[k+7]=D[k] + D[k+1] operando con esta ultima ecuacion podemos obtener replicas retrasadas (k+7)*T, por ejemplo: D9=D2+D3 , etc. ------------------------ FIN NOTA ---------------------------- Ahora comencemos con las particularidades de cada codigo, de los cuales solo dare las ideas de su generacion en base a los conceptos de LSFRs que aparecen en el articulo de MORTIIS sobre Numeros Aleatorios: * C/A ------ Es un codigo de longitud 1023, que se envia a una velocidad de 1023 Kbps. Resulta de la XOR de otras 2 secuencias G1 y G2. G1 es comun a todos los satelites, mientras que la G2 de cada satelite se obtiene retrasando una secuencia G2 dada, asi se obtienen 36 replicas retrasadas entre 5 y 950 periodos, y al combinar cada G2 con G1 obtenemos 36 secuencias mutuamente excluyentes; como vemos suficientes para la constelacion de satelites que usa GPS. G1 y G2 se generan en LFSRs de 10 bits con polinomios caracteristicos: G1: x^10 + x^3 + 1 G2: x^10 + x^9 + x^8 + x^6 + x^2 + 1 Con semillas iniciales de todos los bits a 1. Ademas estan sincronizados con el codigo P de modo que coinciden sus bits iniciales. Para conseguir los retrasos en las secuencias se aplica lo explicado algo mas arriba sobre LFSRs. * P ---- Este codigo es un codigo cuyo conocimiento es restringido a un grupo de usuarios muy particular, y con cuyo conocimiento se pueden conseguir precisiones mucho mayores en la localizacion. Ademas para garantizar aun mas su exclusividad se puede cambiar por otro P(Y), cuando se activan medidas "antispoofing". Ademas de todo lo que se cuenta a continuacion sobre su generacion se debe tener en cuenta que al final de cada semana se reinician todos los registros de generacion del codigo P. Para conseguir mayor precision se requieren codigos mas largos, en este caso el codigo P es generado a partir de otras dos subsecuencias como en C/A, pero estas, X1 y X2, de longitudes: X1 = 15.345.000 bits y X2 = 15.345.037 bits lo que transmitido con un regimen de 10,23 Mbps tarda unos 267 dias. Pero esto realmente queda reducida a 7 dias por satelite. Cada secuencia de cada satelite se genera retrasando X2 entre 1 y 37 periodos, lo que nos provee de 37 codigos excluyentes entre si. En este caso tambien X1 y X2 estan generados por suma(XOR) de otros dos: Son LFSRs de 12 bits, que por tanto generan una secuencia de 4095 bits. Para generar X1, X11 se reinicia cuando llega a su ciclo 4092 y X12 cuando va por 4093. Cuando X11 se ha repetido 3750 veces (1.5 seg.) se genera una marca de X1 que sincroniza este generador con C/A y reinicializa X11 y X12. X1: X11: x^12 + x^11 + x^8 + x^6 + 1 X12: x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + x + 1 con semillas x11=001001001000 y x12=010101010100 Debemos fijarnos en que al ser X12 de un bit mas de longitud que X11, y como 3750 veces 4092 no es multiplo de 4093, hay un tiempo durante el que hay que hacer un apa~o, esto es, durante el ciclo 3749 de X12, se esperara hasta que X11 acabe su ciclo 3750 (343 ciclos de reloj mas, instante en que se resetean), con X12 a un valor fijo igual al del ciclo 4093 de su secuencia. X2: La generacion de este es muy similar a la de X1, teniendo en cuenta que aqui debemos generar las 37 secuencias excluyentes, mediante el retraso de la secuencia X2 resultante de modo adecuado. Para generar la secuencia X2 generica se suman X21 y X22: X2: X21: x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^5 + x^4 + x^3 + x + 1 X22: x^12 + x^9 + x^8 + x^4 + x^3 + x^2 + 1 Las semillas iniciales en las reinicializaciones son: x21=100100100101 y x22=010101010100 el reset se produce tambien cuando la secuencia x21 se ha repetido 3750 veces, pero en lugar de reiniciarse justo en ese instante permanencen en su ultimo estado durante 37 ciclos mas para producir un decalage de X2 respecto a X1. - La Navegacion =============== Lo que en nuestro receptor podemos medir facilmente es el tiempo que debemos retrasar la replica de nuestro codigo para que al correlar con lo que recibamos esta comparacion nos de un maximo. De aqui que si el codigo es mas largo y rapido obtengamos precisiones mayores. Este retardo multiplicado por la velocidad de la luz seria en principio la distancia al satelite, pero esto solo es en principio, puesto que este retardo no solo se debe al viaje de la se~al desde el satelite hasta el receptor, sino que se deben tener en cuenta otros parametros que influyen como: - Offset del reloj del satelite respecto a la referencia GPS - Offset del reloj del receptor respecto a la referencia GPS - Retardo de propagacion en la Ionosfera. Si tenemos en cuenta que el offset del reloj del satelite y el de propagacion en la ionosfera los corregimos con la informacion del mensaje de Navegacion, solo nos queda como incognita el offset de NUESTRO reloj respecto a la referencia GPS. De modo que la distancia medida originalmente o pseudodistancia, seria la suma de la "distancia real", mas la distancia producida por el offset de nuestro reloj multiplicado por la velocidad de la luz (c). di=c*Ti=> di= Di + c*Tu di = pseudodistancia al satelite i Di = Distancia real a satelite i Tu = offset del reloj de usuario Ti = retardo de correlacion maxima De aqui que para resolver la posicion de el receptor en funcion de tres satelites sea imposible con precision, ya que nos queda una incognita extra que es precisamente esa distancia de error producida por el offset de nuestro reloj. Por eso se utiliza en el posicionamiento un cuarto satelite, quedandonos un sistema de 4 ecuaciones y 4 incognitas que a su vez introduce la dificultad de no ser lineal, con lo cual hay que recurrir a metodos de linealizacion para que sea mas facilmente resolubles mediante computacion, pero en esto no vamos a entrar en este articulo. Lo que si se deduce de todo esto es como un simple receptor de GPS usa al menos 4 correladores con sus correspondientes secuencias, y su entrada de un mismo demodulador. Con esto ya podemos hacernos una idea del funcionamiento de GPS. - Alternativas/mejoras: DGPS ============================= Como ya hemos visto, la precision de posicionamiento depende del codigo del que dispongamos. Pero si solo tenemos el codigo C/A, existe una alternativa para conseguir una precision mayor. Esta es DGPS, esto es GPS Diferencial. Su funcionamiento es bastante sencillo; sabiendo como funciona el GPS normal, deducimos que si conseguimos unos parametros de correccion mas precisos, conseguimos mayor precision en nuestra localizacion. Pues bien, como conseguir mayor precision sin el codigo P ???... pongamos una central recogiendo la se~al GPS en un punto geografico conocido, comparemos el posicionamiento que nos da GPS con nuestra posicion real conocida, y hayemos asi los parametros de correccion, y luego estos parametros se los enviamos a el movil a posicionar mediante GPS. Un ejemplo clasico es un avion, con su GPS de abordo y una central (por ejemplo en el aeropuerto) enviandole las correcciones mas precisas. Con esto terminamos este articulo, se puede profundizar bastante mas en este tema, y quien sabe... quiza en proximos numeros de SET profundicemos algo mas en ello!!. Espero que os haya resultado interesante y que a algun genio le sirva para idear algun metodo para usar o descubrir el codigo P. ;-) "Todo debe hacerse lo mas simple posible, pero no mas simple." Albert Einstein *EOF*