Gps

Share Embed Donate


Short Description

Download Gps...

Description

TRABAJO DE FIN DE CARRERA

TÍTULO: Software para procesamiento de datos GPS TITULACIÓN: Ingeniería Aeronavegación

Técnica

Aeronáutica,

AUTOR: Natalia Jiménez Vega DIRECTOR: Dagoberto José Salazar Hernández FECHA: 24 de febrero de 2006

especialidad

Título: Software para procesamiento de datos GPS Autor: Natalia Jiménez Director: Dagoberto José Salazar Hernández Fecha: 24 de febrero de 2005 Resumen Hoy en día el GPS es una tecnología casi indispensable en muchos campos de la vida civil y militar. No obstante, en sus orígenes fue concebido como un elemento puntero de aplicación al ámbito castrense. Dentro de las fronteras de su utilización como ayuda militar, se reveló como revolucionario, alterando la noción del campo de batalla. En su primera participación al servicio de un ejército, el estadounidense durante la Guerra del Golfo Pérsico (1991), fue empleado profusamente, convirtiéndose, en palabras de cierto importante general norteamericano, en lo más relevante en cuanto a equipamiento utilizado, junto con la tecnología de visión nocturna. Sin embargo, es desde hace menos tiempo, y será en especial en un futuro, cuando el GPS y sus equivalentes europeo (Galileo), ruso (Glonass), etc... desplieguen todo su potencial y lo pongan al servicio de toda la población. Este proyecto, apoyándose en el conocimiento del sistema que está disponible actualmente, el estadounidense GPS, culmina en la programación de un software de procesado de datos de posicionamiento, basado en GCAT (GPS Code Analysis Tool). GCAT es un paquete software desarrollado por el grupo de Astronomía y GEomática (gAGE) de la UPC que, a partir de ficheros RINEX de observaciones y efemérides, obtenidos vía FTP de servidores públicos (como el del Institut Cartogràfic de Catalunya) o bien de ficheros binarios capturados en sesiones de campo a través de un receptor GPS Novatel o Trimble, realiza este procesado. La implementación de GCAT y, por consiguiente, la del programa en C fr uto de este proyecto, realiza el cálculo de coordenadas de satélites en recepción y en emisión, las coordenadas del receptor, modelo Klobuchar de refracción ionosférica, modelo MOPS para la troposfera, plantea los oportunos sistemas de ecuaciones de navegación, que se resuelven mediante las técnicas de estimación por mínimos cuadrados y por el filtro de Kalman, etc. En la actualidad, GCAT es utilizado principalmente con fines docentes en el curso de postgrado Tratamiento Preciso de Datos GPS.

Title: Software for GPS data processing Author: Natalia Jiménez Vega Director: Dagoberto José Salazar Hernández Date: February, 24th 2006

Overview Nowadays, GPS is almost an essential technology in many fields of the civil and military life. Nevertheless, in its origins it was conceived as a leading element to be used in the military field. Within the limits of its use as military help, it was revealed as revolutionary, altering the notion of the battle field. In its first participation for the army’s service, this American item was profusely employed during the Gulf War (1991), becoming, as a certain important North  American general said, as the most outstanding thing as regards the equipment used, together with the technology of night vision. However, not much time ago, and it will especially be in a future, when the GPS and its equivalent ones such as the European (Galileo), Russian (Glonass), etc... deploy all their potential and they put it into the service of the whole population. This project, leaning on the present knowledge of the system that is available, the American GPS one culminates in the programming of positioning software data processing, based on GCAT (GPS Code Analysis Tool). GCAT is a software package developed by the Astronomy and Geomatics research group (gAGE) of the UPC that, from RINEX files of observations and ephemerides, obtained through FTP of public servers (as the one in Institut  fil es captured in field sessions through Cartogràfic de Catalunya) or from binary files a GPS Novatel or Trimble receiver, carries out this processing. The implementation of GCAT and, consequently, the software programmed in C resulting from this project, carries out the computation of satellite coordinates in reception time and in emission time, the receiver coordinates, Klobuchar  model of ionospheric refraction, MOPS model for the troposphere, considers the opportune set of navigation equations that are solved by means of the estimate techniques through minimum squares and through the Kalman filter, etc.  At present, GCAT is used mainly with an educational aim in the postgraduate course Precise Treatment of GPS Data.

ÍNDICE INTRODUCCIÓN......................................................................................................................................1 CAPÍTULO 1. EL SISTEMA DE POSICIONAMIENTO GLOBAL GPS........................................... 3

1.1. R ESEÑA HISTÓRICA ....................................................................................................................3 1.2. DESCRIPCIÓN DEL SISTEMA GPS................................................................................................4 1.2.1.  El segmento espacial ............................................................................................................ 4 1.2.2.  El segmento de control ......................................................................................................... 6  1.2.2.  El segmento usuario ............................................................................................................. 7  1.3. ESTRUCTURA DE LA SEÑAL GPS ................................................................................................ 9 1.3.1. Señal GPS actual..................................................................................................................9 1.3.2. Señal GPS futura ................................................................................................................ 12 1.4. OBSERVABLES GPS .................................................................................................................12 1.4.1.  Introducción ....................................................................................................................... 12 1.4.2.  Medidas de código..............................................................................................................13 1.4.2.  Medidas de fase .................................................................................................................. 14 1.5. CALIDAD Y BONDADES DE LAS OBSERVACIONES......................................................................15 1.5.1.  Introducción ....................................................................................................................... 15 1.5.2.  Errores relativos al satélite ................................................................................................16  1.5.3.  Errores relativos a la propagación de la señal .................................................................. 17  1.5.4.  Errores relativos al receptor ..............................................................................................21 1.5.5.  Dilución de la precisión ............................................................................................... ......22 CAPÍTULO 2. PROFUNDIZACIÓN EN EL SISTEMA GPS.............................................................24

2.1. ECUACIONES DE OBSERVACIÓN................................................................................................24 2.1.1.  Diferenciación de observables ...........................................................................................24 2.1.2. Combinación lineal de fase ................................................................................................25 2.2. ESTRUCTURA DEL MENSAJE DE NAVEGACIÓN ..........................................................................29 2.3. OBTENCIÓN DE LOS DATOS: FICHEROS RINEX........................................................................30 2.3.1.  Formato RINEX..................................................................................................................31 2.3.2.  Fichero de datos de observación........................................................................................ 32 2.3.3.  Fichero de mensaje de navegación..................................................................................... 33 2.3.4.  Fichero meteorológico ...................................................................................................... .33 2.4. PROCESAMIENTO DE DATOS GPS ............................................................................................. 34 2.4.1.  Ajuste por mínimos cuadrados ...........................................................................................35 2.4.2.  Filtro de Kalman ............................................................................................. ...................36  CAPÍTULO 3. ENTORNO DE TRABAJO ........................................................................................... 39

3.1. 3.2. 3.4.

SISTEMA OPERATIVO U NIX/LINUX ...........................................................................................39 E NTORNO DE DESARROLLO A NJUTA.........................................................................................40 DEPURADORES: SALFORD (FORTRAN), GDB O DDD (ANSI C)...............................................41

CAPÍTULO 4. DESARROLLO DE LA CONVERSIÓN DE GCAT .................................................. 45

4.1. IDEA GENERAL .........................................................................................................................45 4.1.1.  Declaración de variables....................................................................................................46  4.1.2.  Funciones propias .............................................................................................................. 47  4.1.3. Sentencia GOTO.................................................................................................................48 4.1.4.  Índice de los arrays ............................................................................................................ 48 4.1.4. Uso de punteros..................................................................................................................48 4.1.5. Utilización de librerías estándar de C................................................................................49 4.1.6.  Problemática de lectura de ficheros...................................................................................50 4.1.7.  División del código en métodos por bloques de funcionalidad .......................................... 50 CAPÍTULO 5. RESULTADOS OBTENIDOS ...................................................................................... 51 BIBLIOGRAFÍA......................................................................................................................................58

ANEXO 1. BLOQUES DE NAVSTAR.....................................................................................................1 ANEXO 2. FICHEROS UTILIZADOS POR GCAT..............................................................................3

R INEX.OBS................................................................................................................................................3 EPH.DAT ..................................................................................................................................................5 GCAT. NML................................................................................................................................................7 SP3.TXT ...................................................................................................................................................8 SP3.DAT ...................................................................................................................................................9 PRN2PHC.TXT ......................................................................................................................................10 STA.POS ..................................................................................................................................................11 ANEXO 3. PRUEBAS DE TRATAMIENTO DE FICHEROS............................................................12 ANEXO 4. CODIGO DE TRATAMIENTO DE FICHEROS.......................................................... ....14

1

Software para procesamiento de datos GPS

INTRODUCCIÓN El desarrollo y despliegue del sistema GPS ha supuesto un hito tecnológico que resulta ser de importancia creciente según se van sucediendo las aplicaciones en las que interviene en grado más o menos decisivo o determinante. Con esta perspectiva, y poniendo la vista en el horizonte del futuro, se puede afirmar que existe un brillante porvenir para éste y otros sistemas de navegación basados en satélite. Su finalidad primordial es simple, y no es otra más que el posicionamiento de un objeto en la superficie terrestre mediante las señales emitidas en forma de ondas de radio por los satélites de la constelación GPS. Dichas señales son procesadas por el objeto mencionado (que sería un receptor), determinando de este modo su posición con una precisión que se halla en función del tipo de información recibida, el tiempo de recepción y las condiciones de la emisión. La idea del GPS partió de los estamentos militares de EEUU, dado su inmenso e innegable potencial como sistema estratégico de alcance global. El resultado se reveló como un rotundo éxito que ha rebasado las fronteras del ámbito castrense, revolucionando muchas parcelas de la vida civil donde su uso aporta interesantes ventajas. Como era de prever, el GPS se ha transformado también en una valiosa herramienta científica para la investigación en numerosas áreas, a través del tratamiento de datos de posicionamiento en conjunción con otros recogidos de distintas formas. Como ejemplos claros de este punto cabe destacar: - El estudio de la atmósfera terrestre (las capas que alberga, los fenómenos que tienen lugar en su interior, etc.) y muy especialmente de una de sus regiones más importantes, pero a su vez más desconocidas en muchos aspectos: la ionosfera. - En geodesia y topografía, donde el GPS ha encontrado probablemente los campos en los cuales resulta más útil, calando por ello de forma muy profunda su uso. Esto ha podido ser una realidad gracias a que el sistema ha sido capaz de proporcionar una precisión acorde con los requerimientos de estas ciencias, lo cual ha posibilitado su desarrollo posterior a un ritmo más veloz, y su aplicación en el de infraestructuras, cartografía, dimensionamientos, sistemas de información geográfica (GIS), estudios de movimientos y deformaciones, etc. En último término además, el GPS ha logrado abrirse camino hasta alcanzar al consumidor de a pie, para llegar a emplearse con fines más generales, como la navegación y el ocio. Una vez comprendida la relevancia en la sociedad moderna de un sistema de posicionamiento global como el GPS, es posible vislumbrar con nitidez y entrar  a valorar convenientemente las motivaciones que llevaron a la creación del

Introducción

2

programa GCAT (GPS Code Analysis Tool), un software de análisis y procesado de datos GPS desarrollado por el grupo de Astronomía y GEomática (gAGE) de la UPC. En la actualidad, GCAT es utilizado principalmente con fines docentes en el curso de postgrado Tratamiento Preciso de Datos GPS. El programa GCAT original se hallaba escrito en FORTRAN, habiendo resultado de interés el adaptarlo a un lenguaje más moderno, versátil, flexible y potente, como es el el C. Además, de este modo se dota al código de un mayor  potencial de crecimiento, actualización, migración, soporte, etc., dada la posibilidad de emigrarlo fácilmente a un lenguaje orientado a objetos como es el C++, y por no mencionar las formidables dimensiones de la hipotética comunidad de desarrolladores que podría eventualmente colaborar en el proyecto.  Aprovechando la conversión a C del código, se añadieron a su vez nuevas funcionalidades que fructificaron en otra versión del software, GCAT2_03. Grosso modo, los objetivos primordiales inicialmente pretendidos han sido los de revisar el código FORTRAN del que se disponía, contrastar su funcionamiento con los algoritmos GPS utilizados y lograr, en la medida de lo posible, la construcción de un código fuente más fácilmente comprensible, mediante la adición de comentarios y ciertas modificaciones en la estructuración y organización. En cuanto a la memoria, al finalizar el proyecto ha quedado ajustada al siguiente esquema general: -

Un primer capítulo que expone conceptos generales sobre GPS. Un segundo capítulo que profundiza en el tratamiento de datos GPS como tales. Un tercer capítulo que versa sobre el entorno de trabajo que ha posibilitado el desempeño de la labor de realización del programa. Un cuarto capítulo donde se pasa a explicar minuciosamente el código del programa. Y, por último, un quinto capítulo final, en el cual se describen las pruebas llevadas a cabo a lo largo del proyecto, para de este modo poder  controlar con garantías el desarrollo y el avance en los resultados.

3

Software para procesamiento de datos GPS

CAPÍTULO 1. EL SISTEMA DE POSICIONAMIENTO GLOBAL GPS 1.1. Reseña histórica  A principios de los años 60 los departamentos de Defensa y Transporte de los EEUU, conjuntamente con la Agencia Espacial (DoD, DoT y NASA respectivamente), pusieron en marcha una iniciativa para desarrollar un sistema de localización basado en satélites. Su motivación era obtener un sistema que cumpliese los requisitos de globalidad , abarcando toda la superficie del globo; continuidad , funcionamiento continuo sin afectarle las condiciones atmosféricas; altamente dinámico, para posibilitar su uso en aviación y precisión; y ser de bajo coste. El sistema entonces existente, el LORAN, basado en radiofrecuencia, no cumplía de forma satisfactoria estos requisitos. Fue así como los EEUU desarrollaron el sistema antecesor del NAVSTAR-GPS (NAVigation Satellite Timing And Ranging – Global Positioning System), el TRANSIT. El sistema TRANSIT, formado por cuatro satélites, no disponía de una gran precisión (debido a su número limitado de satélites) y su margen de error era aproximadamente de 250 m. Su gran aplicación fue la navegación de submarinos y de barcos. La URSS por aquel entonces también tenía un sistema muy parecido, denominado TSICADA. El entorno de la guerra fría empujó el desarrollo de este tipo de sistemas en ambos bandos. El sistema TRANSIT evolucionó al sistema NAVSTAR-GPS y en el caso de la URSS, el sistema TSICADA evolucionó al sistema GLONASS. Sin embargo, ambos sistemas, dado la época de la historia en que fueron desarrollados, sólo podían ser utilizados por el ejército. En 1984 un vuelo civil de Korean Airlines fue derribado por la Unión Soviética al invadir por error su espacio aéreo. Aquello llevó a la administración del presidente de los EEUU Ronald Reagan a ofrecer a los usuarios civiles cierto nivel de uso de GPS, llegando finalmente, en el 2000, y de manos del entonces presidente de los EEUU Bill Clinton, a eliminar esta restricción. Actualmente se logran precisiones de hasta 15 metros en usos civiles. Dado que el sistema está bajo el control, entre otros, del Departamento de Defensa de EEUU, el servicio puede verse sometido a restricciones temporales.  Actualmente su constelación está formada por 29 satélites. El último fue lanzado el 26 de septiembre de 2005 y es el primero perteneciente al bloque IIR-M.

El sistema de posicionamiento global GPS

4

1.2. Descripción del sistema GPS 1.2.1. El segmento espacial Los objetivos principales del segmento espacial son, a partir de las instrucciones que reciben del segmento de control: proporcionar una referencia de tiempo atómico, generar las señales de RF pseudoaleatorias y almacenar y reenviar el mensaje de navegación. Está formado por una constelación de 29 satélites, uniformemente dispersados alrededor de la Tierra en 6 órbitas aproximadamente circulares a una altitud media de 20.200 Km. Los 6 planos orbitales están inclinados 55º sobre el plano del ecuador y la separación entre las órbitas es de 60º. Las órbitas son casi circulares, tienen una excentricidad menor a 0,02, con un semieje mayor  de unos 26.000 Km. y un periodo de 12 horas sidéreas (11h 58min 2seg). Este sistema permite la posibilidad, por parte de los usuarios debidamente equipados, de recibir globalmente señales de radio conteniendo información de alta precisión acerca de su posición, velocidad y tiempo.

Fig. 1.1 Constelación de 29 satélites GPS El principio de funcionamiento en el que se basa es el de triangulación. Para ello se necesita la medida simultánea de la distancia entre el receptor y al menos 4 satélites (ya que se necesita determinar también el error debido al sincronismo entre el reloj del receptor y la escala de tiempo GPS). Esta constelación proporciona al usuario entre 6 y 11 satélites o vehículos espaciales (SVs) a la vista desde cualquier punto en la Tierra por encima del horizonte y con un ángulo superior a los 15º. Los satélites disponen de estructuras y mecanismos para poder mantenerse en órbita, comunicarse con el segmento de control y emitir las señales a los

5

Software para procesamiento de datos GPS

receptores. Uno de los puntos críticos del sistema GPS son los relojes de los satélites. Por este motivo los satélites están equipados con relojes atómicos (rubidio, cesio) de muy alta estabilidad.

Tabla 1.1. Estabilidad de los relojes Tipo de reloj Cristal de cuarzo Rubidio Cesio Hidrógeno

Estabilidad diaria ( ∆f  / f ) 10-9 10-12 10-13 10-15

Tiempo que tarda en desviarse un segundo 30 años 30.000 años 300.000 años 30.000.000 años

Los satélites GPS se identifican de diferentes maneras: por su posición en el plano orbital (cada satélite ocupa un lugar (1, 2, 3,…), dentro de las seis órbitas  – A, B, C, D, E ó F), por el número de catalogación de la NASA, por el número internacional de identificación, por el código PRN (código pseudoaleatorio de ruido) y por el número de la secuencia de lanzamiento (SVN). Se pueden clasificar en 6 categorías diferentes: Bloque I (ya no existe ningún satélite operativo de este tipo), Bloque II, Bloque IIA, Bloque IIR, Bloque IIR-M, Bloque IIF. Puede encontrarse una explicación detallada de estos satélites así como una tabla con el actual bloque en el Anexo 1. 1.2.1.1.

El sistema de referencia. Datum WGS-84

Las coordenadas, tanto de los satélites como de los usuarios que se posicionan con el sistema GPS, están referidas al sistema de referencia WGS84 ( World  Geodetic System de 1984). Estas coordenadas pueden ser cartesianas en el espacio respecto al centro de masas de la Tierra ( x , y , z ) o geodésicas (φ,  λ, h). El sistema tiene las siguientes características: • Origen en el Centro de Masas de la Tierra. • El eje z  es paralelo al polo medio, coincide con la dirección del eje de

rotación de la Tierra definido por el CIO ( Conventional International  Origin). • El eje  x  es la intersección del meridiano de Greenwich y el plano del ecuador (o plano ortogonal al eje z , plano fundamental). • El eje y  es perpendicular a los ejes z  y  x , y coincidente con ellos en el Centro de Masas terrestre. • Las coordenadas geodésicas están referidas a un elipsoide de revolución con las siguientes características:

El sistema de posicionamiento global GPS

Tabla 1.2.

6

Parámetros del elipsoide WGS-84

Semieje mayor de la elipse Semieje menor de la elipse Factor de achatamiento Velocidad angular Tierra Constante Gravitación

a b f ωE   µ 

6.378,137 Km 6.356,752 Km 1/298,257223563 7.292.115 · 10-11 rad/s 3.986.005 · 108 m3/ s2

La transformación de las coordenadas WGS84 a otro sistema de referencia, y viceversa, es posible con transformaciones tridimensionales de siete parámetros, ya sean calculadas (donde deberemos conocer al menos las coordenadas de tres puntos en ambos sistemas) o establecidas por algún organismo con una gran base de datos. Para realizar una transformación correcta debemos definir el elipsoide al que queremos referir nuestras coordenadas, la proyección y la zona.

1.2.2. El segmento de control El segmento de control, a grandes rasgos, está formado por estaciones de tierra que se encargan del control y mantenimiento del estado y la configuración de la constelación de satélites. También es el encargado de predecir las efemérides y el comportamiento de los relojes de los satélites, mantener la escala de tiempo GPS ( mediante relojes atómicos), y actualizar periódicamente el mensaje de navegación de cada uno de los satélites. Además, es el responsable de activar la disponibilidad selectiva (S/A), en la transmisión de señales. Está compuesto por 3 componentes físicos diferentes: •

Master control station (MCS). Está localizada en Colorado Springs,

Colorado. Su función es recoger y almacenar los datos de seguimiento procedentes de las Estaciones Monitoras para utilizarlos posteriormente para el cálculo de las órbitas de los satélites y los parámetros del reloj. Estos resultados son transmitidos a una de las 3 Estaciones de Control de Tierra para eventualmente subirlos a los satélites. •

Monitor stations. Hay 5 Estaciones Monitoras localizadas por todo el

globo (Fig. 1.2). Cada una de estas estaciones está equipada con un reloj estándar de cesio y receptores que continuamente miden pseudodistancias de todos los satélites que tienen a la vista. •

Ground control stations. Las Estaciones de Control de Tierra, ubicadas

en las Estaciones Monitoras de la isla de Ascensión, de Diego García, y de Kwajalein, consisten en antenas con la capacidad de transmitir  datos a los satélites. En concreto, la información de efemérides y de

7

Software para procesamiento de datos GPS

reloj, calculada por la Estación Maestra de Control, es subida a cada satélite GPS por banda S.

Fig. 1.2 Red de estaciones terrestres GPS La necesidad de esta constante actualización de las órbitas de los satélites se debe a que se ven afectadas por diferentes perturbaciones. Para corregir la desviación que estas perturbaciones hayan podido causar se realizan cálculos de corrección cada cierto intervalo de tiempo, lo cual origina un nuevo mensaje de navegación que se envía a las Estaciones de Control de Tierra para ser  transmitido a los satélites. Esto se efectúa a través de las antenas de tierra vía radio por la banda S. Cada satélite puede ser “refrescado” tres veces al día, es decir, cada 8 horas; no obstante, normalmente se recarga una vez al día.  Además del nuevo mensaje de navegación, también es posible enviar  correcciones de reloj, comandos de telemetría y otros mensajes. Aunque esta información puede ser enviada desde cualquiera de las Estaciones de Control de Tierra, la activación de los sistemas de maniobra de los satélites para realizar modificaciones orbitales, por motivos de seguridad, es una función exclusiva de la CSOC (Consolidated Space Operations Center). Existen además otras estaciones de seguimiento (láser, radar y ópticas), cuyo fin es la obtención de efemérides que no estén afectadas por la disponibilidad selectiva, denominadas precisas, y que están al alcance del usuario a través de organismos científicos como el IGS (International Geodinamic Service) o el NGS (National Geodetic Survey). Con ellas, tenemos la seguridad de posicionarnos en el sistema WGS84 con los errores típicos del sistema.

1.2.2. El segmento usuario Este sector lo compone el instrumental que deben utilizar los usuarios para la recepción, lectura, tratamiento y configuración de las señales, con el fin de alcanzar los objetivos de su trabajo. Los elementos son el equipo de

El sistema de posicionamiento global GPS

8

observación y el software de cálculo, que puede ser objeto de uso tras la campaña de observación, o bien realizable en tiempo real, donde se obtienen los resultados in situ.

Equipo de observación : Lo componen la antena, el sensor y la unidad de control o controlador: • La antena de recepción tiene la misión de recibir las radiaciones

electromagnéticas que emiten los satélites y transformarlas en impulsos eléctricos, los cuales conservan la información modulada en las portadoras. Se denomina centro radioeléctrico de la antena al punto que se posiciona en nuestra observación. Dado que éste no suele coincidir  con el centro físico, es conveniente orientar todas las antenas de una misma observación en la misma dirección con el fin de que el error se elimine. • El sensor  recibe los impulsos de la antena receptora, y reconstruye e

interpreta los componentes de la señal, es decir, las portadoras, los códigos y el mensaje de navegación. En definitiva, lo que hace es demodular la señal original. El sensor tiene unos canales de recepción, de doble señal si es un receptor bifrecuencia y de señal única si es monofrecuencia. Cada canal recibe las señales de un satélite diferente, y dependiendo del número de canales obtendremos mayor o menor información en un momento dado. Es muy frecuente encontrar equipos de observación en los cuales el sensor y la antena forman un elemento único, lo que facilita el paso de información y agiliza el proceso, evitando los retardos que se producen en la transmisión por  cable. • El controlador realiza las siguientes tareas: ― Controlar el sensor. ― Gestionar la observación. ― Almacenar los datos.

El buen manejo del controlador es fundamental en los procesos de observación, así como el conocimiento y aplicación de los parámetros adecuados en cada situación o necesidad. Tras la observación se obtienen los siguientes datos: ― ― ― ― ―

Mensaje de navegación. Efemérides radiodifundidas por los satélites. Datos meteorológicos. Almanaque de estado de los satélites. Fichero de observación.

Estos datos pueden ser volcados en un ordenador para ser tratados con un software de post-proceso, o bien tratados “in situ” por el mismo controlador si

9

Software para procesamiento de datos GPS

éste dispone de un software de proceso y así obtener los resultados en tiempo real. El usuario debe saber que los datos citados anteriormente pueden ser  transformados a un formato estándar independiente en modo ASCII para insertarlos y ser tratados por cualquier software de proceso de datos GPS. Este formato es el denominado RINEX.

1.3. Estructura de la señal GPS 1.3.1. Señal GPS actual Los satélites de la constelación NAVSTAR constan de un oscilador que genera una frecuencia fundamental f 0  de 10,23 MHz. A partir de esta frecuencia fundamental se generan dos portadoras en la banda L de radiofrecuencia, denominadas L1 y L2. El hecho de que los satélites emitan en dos frecuencias distintas, permite al usuario cancelar una de las principales fuentes de error, la refracción ionosférica. Esto es debido a que la ionosfera se comporta como un medio dispersivo para la señal GPS, afectando de manera diferente a cada frecuencia. Sobre las dos portadoras se modulan unos códigos pseudoaleatorios, los códigos C/A y P, además de un mensaje, que da la información de los parámetros orbitales del satélite y del estado del reloj. Los códigos son una secuencia de +1 y -1, correspondientes a los valores binarios de 0 y 1, respectivamente. Las principales características de estas tres señales utilizadas en las observaciones GPS, son:

Tabla 1.3. Estructura de la señal GPS Frecuencia reloj atómico Portadora señal L1 Frecuencia L1 Longitud de onda L1 Portadora señal L2 Frecuencia L2 Longitud de onda L2 Frecuencia código P (chipping rate) Longitud de onda código P Periodo código P Frecuencia código C/A (chipping rate) Longitud de onda código C/A Periodo código C/A Frecuencia mensaje de navegación Longitud de una trama

Estabilidad diaria 154 x f 0  1575,42 MHz 19,05 cm 120 x f 0  1227,60 MHz 24,45 cm f 0  = 10,23 MHz (Mbps) 29,31 m 266 días, 7 días/satélite f 0  /10 = 1,023 MHz (Mbps) 293,1 m 1 milisegundo 50 bps 30 segundos

El sistema de posicionamiento global GPS

10

• Coarse/Acquisition code [C/A(t)] , también llamado código civil o Standard-code. La secuencia se repite cada milisegundo y su velocidad

es de 1 Mbps, lo que supone una longitud de onda equivalente de 293,1 m. Se modula únicamente sobre L1. • Precision code [P(t)] , reservado para uso militar y usuarios civiles autorizados. La secuencia se repite cada 266 días y a cada satélite se le asigna una porción semanal de este código que se denomina secuencia PRN. Así se consigue que todos los satélites puedan utilizar la misma frecuencia, siendo identificados a través de su segmento semanal de código (CDMA). Los segmentos de los códigos se inicializan cada semana en la medianoche (0h UT) del sábado al domingo. Su velocidad es de 10 Mbps, lo que supone una longitud de onda equivalente de 29,31 m y se modula sobre ambas portadoras L1 y L2. Cuando está activado el Anti-Spoofing, este código es encriptado con una clave resultando el Y-code. • Broadcast message [D(t)] , también llamado mensaje de navegación se

modula sobre ambas portadoras a 50bps e incluye información sobre efemérides y derivas de relojes de los satélites, coeficientes del modelo ionosférico, información sobre el status de la constelación, etc. Los códigos sirven fundamentalmente para posicionamiento absoluto y son usados principalmente en navegación. Son generados mediante un sistema llamado Tapped Feedback Shift Registers (TFSR), usando desarrollos polinómicos. La modulación de las portadoras con los códigos y el mensaje genera un ruido que aparentemente no sigue ninguna ley y parece aleatorio, pero como en realidad la secuencia está establecida mediante un desarrollo polinómico el ruido se llama pseudoaleatorio (Pseudo Random Noise, PRN ) y puede correlarse con una réplica generada por el receptor en tierra. Cada código tiene una configuración propia para cada satélite en particular y constituye el PRN característico con que éste es identificado. La transmisión se realiza utilizando técnicas de espectro ensanchado de ahí que todos los satélites transmitan con las mismas portadoras. La técnica de espectro ensanchado ( spread-spectrum) consiste en la transformación reversible de una señal de forma que su energía se disperse entre una banda de frecuencias mayor que la que ocupaba originalmente fruto de su multiplicación por una determinada secuencia de chip pseudoaleatoria. Las principales ventajas de esta técnica son que la señal es muy resistente a las interferencias de banda estrecha, difícilmente detectable (el nivel de señal puede situarse por debajo del nivel de ruido), resistente a las interferencias multicamino y posibilita la transmisión simultánea (tanto en frecuencia como en tiempo) de varias señales. Existen dos técnicas principales de espectro ensanchado: espectro ensanchado por secuencia directa (direct sequence), que es la que emplea el sistema GPS, y espectro ensanchado por saltos de frecuencia (frequency  hopping ).

11

Software para procesamiento de datos GPS

Fig. 1.3 Técnica de espectro ensanchado por secuencia directa Para poder distinguir la modulación correspondiente al código C/A del correspondiente al P (recordemos que se envían 10 chips o bits del P por cada uno del C/A), se decala 90 grados una modulación de la otra. En realidad una modula en función seno y la otra en coseno. La filosofía es que cuando hay un cambio a medio camino entre los previstos para el P, corresponde al C/A. Por  supuesto ello sólo puede ocurrir cada 10 oportunidades de cambio del P. Si en ese momento no ha habido cambio, es que el C/A sigue transmitiendo el mismo valor. Durante la transmisión de un bit del mensaje se ha transmitido 20 veces el código C/A. Para determinar el tiempo de propagación de la señal se suele utilizar la técnica de observación de la fase del código para la cual el usuario necesita una réplica de la secuencia del código en su receptor. Esta secuencia se desplaza temporalmente y se compara con la señal recibida hasta que se obtiene una correlación máxima. El desplazamiento obtenido será el tiempo de propagación de la señal medida con los relojes del satélite y del receptor y proporciona el observable pseudodistancia. Para restringir el acceso de usuarios civiles a la completa precisión del sistema, se han desarrollado las siguientes técnicas: • S/A(Selective Availability) o Disponibilidad Selectiva : Se trata de la

degradación intencionada del reloj del satélite (proceso- δ) y la manipulación de las efemérides (proceso- ε). El efecto sobre el posicionamiento horizontal supone pasar de unos 10 m (S/A = off) a unos 100 m (S/A = on) (2σ-error). El proceso δ actúa directamente sobre la frecuencia fundamental del reloj del satélite, lo cual tiene un impacto directo sobre las pseudodistancias que calcularán los receptores de los usuarios. El proceso ε consiste en truncar la información relativa a las órbitas.

El sistema de posicionamiento global GPS

12

• A/S(Anti-Spoofing): consiste en la encriptación del código P mediante

un código W, resultando el código Y, que es modulado sobre las portadoras L1 y L2. La intención es evitar el acceso a usuarios no autorizados, quedando únicamente disponible el código C/A (más ruidoso) sobre L1.

1.3.2. Señal GPS futura En los próximos años, la señal GPS va a padecer cambios significativos que van a dotar al sistema de una mayor robustez y precisión, así como adecuarlo para aquellas aplicaciones civiles que por sus requerimientos no tienen suficiente con las actuales prestaciones del sistema GPS. El primero de estos cambios ya ha empezado a convertirse en presente desde el pasado 26 de septiembre del 2005, cuando fue lanzado el primer satélite del bloque IIR-M. Este satélite ya está equipado para emitir el nuevo código M, un código para exclusivo uso militar muy robusto a las interferencias y a las intromisiones, que va modulado sobre las portadoras L1 y L2. La siguiente novedad será la adición de una nueva señal, L2CS, que irá modulada sobre la portadora L2, y que proporcionará una señal para uso civil mucho más robusta que la actual, permitiendo correcciones ionosféricas, proporcionando redundancia en el canal y una mayor protección ante la correlación cruzada, que duplicará la protección proporcionada por la actual señal C/A. La última de las novedades por el momento conocidas, acompañará al lanzamiento del siguiente bloque satelitario, el IIF, y consistirá en una nueva señal para uso civil que irá modulada sobre la nueva portadora L5. Esta nueva señal está especialmente pensada para satisfacer las necesidades de la aviación actual, y por ello se ubicará en la frecuencia 1176,45 Mhz, dentro de la banda asignada a los servicios aeronáuticos de radionavegación (ARNS –  Aeronautical Radio Navigation Services). Sus principales características serán la emisión a una potencia mucho mayor que las señales civiles actuales (alrededor de los -154,9 dBW), la disposición de un mayor ancho de banda y una mayor robustez ante interferencias.

1.4. Observables GPS 1.4.1. Introducción El observable del posicionamiento por satélite más básico es el retardo, o diferencia de tiempo, que tarda la señal en viajar desde el centro de fase de la antena del satélite (en el instante de emisión) hasta el centro de fase de la antena del receptor (en el instante de recepción). La multiplicación de este observable por la velocidad de la luz nos proporciona una distancia. Debido a que esta distancia está afectada por una serie de errores, se denomina pseudodistancia.

13

Software para procesamiento de datos GPS

 Aunque existen varias técnicas de modelado de los fundamentalmente se utilizan dos:

observables,

• Observables de tiempo (o código): ― ― ―

Código C/A modulado sobre la portadora L1. Código P modulado sobre la portadora L1. Código P modulado sobre la portadora L2.

• Observables de diferencia de fase de la portadora: ― ―

Diferencia de fase de la portadora L1. Diferencia de fase de la portadora L2.

La adición de los nuevos códigos y señales mencionados en el apartado anterior (M-code, L2CS y L5) simplificará en el futuro el cálculo matemático necesario para la obtención de observables.

1.4.2. Medidas de código El tiempo de propagación dT  se puede obtener correlando el código P o C/A que modula la señal portadora, con una réplica generada en el receptor (como ya se ha explicado en el apartado anterior, Estructura de la señal ). Como hemos dicho, dicho observable no coincide con la distancia real debido a errores. Considerándolos, la expresión de pseudodistancia para los diferentes códigos y portadoras sería: sat sat sat C1 satrec =  ρ rec + c ( dt rec − dt sat ) + rel rec + Trop rec + α1Ion1satrec + K 1 rec + K 1sat + M Csat / A, rec + ε sat  C/ A, rec (1.1) sat sat sat    P1recat =  ρrec + c ( dt rec − dt sat ) + rel rec + Trop rec + α1Ion1satrec + K 1 rec + K 1sat + M  Psat, rec + ε sat P, rec

(1.2)

at sat sat sat sat    P2 rec =  ρ rec + c ( dt rec − dt sat ) + rel rec + Trop rec + α 2 Ion2satrec + K 2 rec + K 2sat + M sat P, rec + ε  P, rec

(1.3)

donde cada término representa: •

• •

 sat  rec

la distancia geométrica entre los centros de fase de las antenas del satélite y el receptor en los instantes de emisión y recepción, respectivamente: 2 2 2 sat sat sat  (1.4) = − + − + −  ρ  sat  x x y y z z ( ) ( ) ( ) rec rec rec rec

c es la velocidad de la luz dt rec representa la diferencia entre el tiempo GPS y la del reloj del receptor  • dt  sat  representa la diferencia entre el tiempo GPS y la del reloj del satélite

El sistema de posicionamiento global GPS

14

rel  sat  rec representa el efecto relativista, debido a la diferencia de potencial gravitatorio entre la posición del reloj del satélite y el reloj del receptor  • Trop sat  rec representa el efecto de la troposfera •  Ion sat   f rec representa el efecto de la ionosfera, que depende de cual sea la •

• • • •

frecuencia de la señal ( α  f  = 40,3/ f 2 )  K  rec representa el retardo debido a las constantes instrumentales del receptor, que es dependiente de la frecuencia  K  sat  representa el retardo debido a las constantes instrumentales del satélite, éste también dependiente de la frecuencia  M  X sat , rec representa el efecto debido al multicamino, también dependiente de la frecuencia y del código (ya sea C/A o P ) ε  X sat , rec es un término de ruido que contiene todos los efectos no modelados, y depende del código

Con estas medidas se consigue, en tiempo real, una posición de recepción no ambigua, pero con ruido, con un error de posición típicamente de menos de 100m.

1.4.2. Medidas de fase La distancia aparente entre el satélite y el receptor también pueden medirse a partir de la fase de la portadora de la señal. En ese caso, las ecuaciones para cada una de las frecuencias serían: sat sat sat sat    L1atrec =  ρ rec + c ( dt rec − dt sat ) + rel rec + Trop rec − α1Ion1satrec + λ1B1satrec + m sat L, rec + w L + ε  L, rec

 L2atrec =

sat rec

(1.5)

sat sat sat   + c ( dt rec − dt sat ) + rel rec + Trop rec − α 2 Ion 2satrec + λ2 B 2satrec + m sat L, rec + w L + ε  L, rec (1.6)

En este caso, hay unos términos que aparecen nuevos o cambiados: •  Ion sat   f rec el término ionosférico tiene distinto signo para la fase que para

el código • λ  f B sat  f rec representa la ambigüedad de fase, ya que cuando se adquiere la señal se tiene una ambigüedad en un número entero  λ de longitudes de onda, a la que se le suma las constantes instrumentales de los satélites y receptor  • m L sat ,rec el término de multicamino, para la medida de fase, lo representaremos con una m minúscula • w L representa el error debido a la polarización de la señal ( wind-up), ya que un giro de 360º en la antena del receptor, manteniendo su posición fija, introduce una variación de una longitud de onda en la medida de distancia aparente entre el receptor y el satélite obtenida a partir de la fase

15

Software para procesamiento de datos GPS

En esta medida también hay que tener en cuenta que se puede producir una ambigüedad de fase, debida a que en algún momento durante el trayecto se pierda la señal entre el satélite y el receptor. Esto se denomina cycle-slips (saltos de ciclo) y las ambigüedades resultantes corresponden a un número entero de longitudes de onda. En este caso, las medidas de fase son menos ruidosas que las medidas de código, con lo que ofrece una mayor precisión para el posicionamiento. Sin embargo, esta medida sí es mucho más ambigua que la de código por causa de ese término desconocido λ  N  .

Fig. 1.4 Medidas de código y fase

1.5. Calidad y bondades de las observaciones 1.5.1. Introducción Como se ha comentado en el apartado anterior, la medida de posición está sometida a varias fuentes de error que se pueden minimizar o modelar según los equipos y metodología de observación que utilicemos. Estos errores se pueden clasificar en tres grupos: • • •

errores relativos al satélite errores relativos a la propagación de la señal en el medio errores relativos al receptor.

En lo referente a la medida de la calidad y bondad de una observación influyen o contribuyen dos términos: el UERE y el GDOP.

El sistema de posicionamiento global GPS

16

El UERE (User Equivalent Range Error) es el error cometido en la medida de la pseudodistancia por el usuario. Este error contempla los errores al predecir las efemérides, inestabilidades en el vehículo espacial, relojes de los satélites, efectos ionosféricos y troposféricos, efecto multicamino, ruido de la señal y para GPS, la Disponibilidad Selectiva (S/A). El GDOP o Dilución de la Precisión es la contribución puramente geométrica al error en el posicionamiento de un punto.  Analizando estos factores de error en su conjunto, el error en el posicionamiento de un punto viene expresado por: error rms de posición = σUERE · GDOP

(1.7)

1.5.2. Errores relativos al satélite 1.5.2.1.

Error del reloj del satélite

Es el desfase que tiene el reloj del satélite respeto al Tiempo GPS. Los satélites llevan relojes atómicos con osciladores de cesio o de rubidio; sin embargo ningún reloj, incluso el atómico, es perfecto. Los errores en los osciladores de los satélites pueden eliminarse mediante las correcciones enviadas en el mensaje de navegación que recibe el receptor, y que son calculadas y actualizadas por las estaciones de seguimiento. Estos valores se facilitan como coeficientes de error del reloj en forma polinómica: 2

dt sat  = a0 + a1 ( t − tOC ) + a2 ( t − tOC  )  

(1.8)

donde: • • • • •

a0 “satellite clock offset” a1 “satellite clock drift” a2 “satellite clock frequency drift” t  es el tiempo del reloj del satélite (segundos en la semana GPS) t OC  es la época de referencia para los coeficientes (segundos en la semana GPS)

 Aunque el receptor aplique las correcciones para el error del reloj del satélite, sigue permaneciendo un pequeño error residual estimado en unos 10 nanosegundos o menos, y que es debido a la imposibilidad de predecir  exactamente la marcha del estado del reloj del satélite.

1.5.2.2.

Errores en los parámetros orbitales

El receptor, para calcular su posición, debe conocer las posiciones de los satélites. Las estaciones de seguimiento registran datos de pseudodistancia y

17

Software para procesamiento de datos GPS

medidas de fase que mandan a la Estación de Control principal, donde con un sofisticado software se predicen las futuras posiciones orbitales de los satélites, es decir sus efemérides. Éstas son transmitidas en el mensaje de navegación del satélite. Pero las efemérides transmitidas por los satélites tendrán asociado un error a causa de que es imposible predecir exactamente sus posiciones. El efecto del error de las efemérides transmitidas en la medida de la pseudodistancia se obtiene proyectando el vector error de la posición del satélite sobre el vector que une el satélite y el receptor. Los errores en los parámetros orbitales se pueden eliminar trabajando con las efemérides precisas de los días de observación, donde aparecen las verdaderas posiciones de los satélites. 1.5.2.3.

Disponibilidad selectiva

Este error introducido intencionadamente para restringir el acceso de usuarios civiles ya se ha explicado anteriormente en el apartado 3 del presente tema.

1.5.3. Errores relativos a la propagación de la señal Cuando la señal viaja por un medio que no es el vacío, ésta sufre un retardo debido a que la velocidad de propagación es menor, y a que la trayectoria aumenta su longitud al curvarse por refracción, si el medio no es isótropo. En nuestro caso, las señales deben atravesar las capas de la atmósfera hasta llegar al receptor posicionado sobre la superficie de la tierra. Las señales interaccionan con partículas cargadas, que provocan un cambio en la velocidad y dirección de propagación, es decir, las señales son refractadas. 1.5.3.1.

Refracción ionosférica

La Ionosfera es aquella región de la atmósfera comprendida entre 80 y 2000 Km. de altitud, donde las radiaciones solares y otras radiaciones ionizan una porción de las moléculas gaseosas liberando electrones, que interfieren en la propagación de ondas de radio. La Ionosfera es un medio dispersivo para ondas de radio, por lo tanto su índice de refracción es función de la frecuencia de la onda. También es función de la densidad de electrones, y en menor  grado, de la intensidad del campo magnético de la tierra. Este error es negativo para la medida de fase (se produce un avance de la portadora y se miden distancias más pequeñas), y positivo para las pseudodistancias (se produce un retardo y se miden distancias más largas), pero tienen el mismo valor absoluto. El error es proporcional a la densidad de electrones TEC (Total Electron Content ) a lo largo del camino seguido por la señal, y está en función del cuadrado de la longitud de la onda (inversamente proporcional al cuadrado de la frecuencia de la portadora). Este error varía espacial y temporalmente, es decir, para cada punto según su latitud y longitud, y momento de la

El sistema de posicionamiento global GPS

18

observación. Se pueden utilizar modelos ionosféricos, como el de Klobuchar  (cuyos parámetros se transmiten en el mensaje de navegación), que establecen la distribución del TEC, pero estas concentraciones de electrones son irregulares y poco predecibles, por lo que cualquier modelo ionosférico es sólo una aproximación. El TEC es función del cambio constante en la ionización solar, de la actividad magnética, de los ciclos de las manchas solares, hora del día, lugar de observación, y dirección del camino de la señal. Debido a la dificultad de encontrar un modelo satisfactorio, se emplea un método más eficiente para eliminar la refracción ionosférica que es la utilización de dos señales con diferentes frecuencias. Como el retardo depende de la longitud de la onda, será distinto para cada frecuencia y podremos observar un retardo diferencial entre ambas, que será mayor cuanto mayor sea el retardo ionosférico sufrido, siendo por tanto éste deducible. También se pueden utilizar  combinaciones de los observables que por su naturaleza estén libres del efecto ionosférico, tal y como veremos en el primer apartado del siguiente capítulo. El retardo ionosférico depende del ángulo de elevación del satélite, siendo menor en el cenit, y mayor cuando disminuye el ángulo de elevación. En observaciones nocturnas, los niveles de TEC son menores que durante el día, lo que implica un menor error en la pseudodistancia. 1.5.3.1.1. Modelo Klobuchar 

Es un modelo simple, que supone que todos los electrones están concentrados en una capa delgada situada a 350 Km. de altura. Se basa en que el plasma que forma la ionosfera está producido por el efecto ionizante de la radiación solar en las capas altas de la atmósfera, por lo que el TEC muestra una periodicidad diaria con máxima densidad electrónica hacia el mediodía y un mínimo constante a lo largo de la noche.

 Analíticamente puede escribirse el modelo Klobuchar como:  2π  ⋅ ( t − T P )   P P  Durante el día, si  T − < t < T +  :  I = DC + A ⋅ cos   4 4  P    

 P De noche, si  t < T − 4 

P  y t > T +   :  I = DC  4

(1.9)

(1.10)

donde t es la hora solar local y:  DC = 9,2TECU  o  DC = 5ns T  P  = 14.00h

(1.11) (1.12)

19

Software para procesamiento de datos GPS

3

 P = ∑ β n ⋅ φ − n n =0 3

 A = ∑ α n ⋅ φ − n

(1.13) (1.14)

n =0

siendo φ  la latitud geomagnética de la estación. Para que un equipo receptor pueda utilizar el modelo de Klobuchar para minimizar el error debido a la ionosfera, los valores de las α n y las  β n , que sirven para calcular  A y  P , son transmitidos como parámetros en el mensaje de navegación, concretamente en la cuarta subtrama del mismo. Sin embargo, la utilidad del modelo Klobuchar no es universal, ya que éste sólo es válido para estaciones situadas en latitudes medias. En estas latitudes corrige hasta un 50% del efecto ionosférico. Esta corrección puede ser buena para la mayoría de las aplicaciones de navegación, pero es insuficiente para otras aplicaciones que requieran una mayor precisión o en condiciones de máximo solar. 1.5.3.2.

Refracción troposférica

La Troposfera, la zona o capa de la atmósfera más interna, está caracterizada por el decremento de la temperatura a medida que se incrementa la altura, por  su espesor de irregular distribución y por la presencia de átomos y moléculas neutras. Aunque se extiende desde los 80 Km hasta la superficie del globo, los retardos más significativos tienen lugar en los últimos 40 Km. En la Troposfera el índice de refracción para un área parcial es función de la temperatura de esa área, de la presión de los gases secos y del vapor de agua.  A diferencia de la ionosfera, y por el hecho de constituir una atmósfera neutra, la Troposfera es un medio no dispersivo para las ondas de radio de frecuencias superiores a 15 Ghz, y por lo tanto la propagación de la señal GPS es la misma para todas sus frecuencias. Se puede modelar de forma aproximada (cerca de un 90%) mediante la expresión:  sat  Trec = ( d seco + d humedo ) ⋅ m (elev )

(1.15)

donde: •

d  seco representa el retardo vertical debido a la componente seca de la troposfera, básicamente compuesta por oxígeno y nitrógeno en equilibrio hidrostático. • d humedo representa el retardo vertical asociado a la componente húmeda, debida al vapor de agua de la atmósfera.

El sistema de posicionamiento global GPS

20

Un modelo típico para calcular estos parámetros es: d seco = 2, 3exp( −0,116 ⋅10 −3 ⋅ H ) ( m) d humedo = 0,1 ( m) (H : altura sobre el nivel del mar, en metros) •

(1.16) (1.17)

m(elev) representa el factor de oblicuidad para proyectar el retardo vertical en la dirección de observación del satélite: m(elev) =

1,001 0,002001 + sin 2 (elev)

(1.18)

donde elev es la elevación respecto al horizonte local del receptor. 1.5.3.3.

Pérdidas de ciclos (cycle slips)

Las pérdidas de ciclos suponen un salto en el registro de las medidas de fase, producido por alguna interrupción o pérdida de la señal enviada por el satélite. Estas pérdidas de ciclos pueden ser causadas por los siguientes motivos (ordenados por frecuencia de aparición, del más frecuente al más infrecuente): • obstrucción de la señal del satélite debido a la presencia de árboles,

edificios, puentes, montañas, etc. • Baja relación señal a ruido (baja SNR) debido a unas malas condiciones ionosféricas, efecto multicamino, receptores en movimiento, o baja elevación del satélite. • Un fallo en el software del receptor, que conduce a un procesamiento incorrecto de la señal. • Mal funcionamiento del oscilador del satélite (suele darse en raras ocasiones). La detección de una pérdida de ciclo y su reparación requiere la localización del salto y determinación de su tamaño. La detección se lleva a cabo por medio de un chequeo o test de cantidad. Estos tests pueden ser medida de la fase en bruto, combinaciones de fase, combinaciones de código y fase, etc. Una vez determinado el tamaño de la pérdida de ciclo, la reparación se hace corrigiendo a todas las observaciones de fase siguientes para este satélite y su portadora, según una cantidad fija. El software interno del receptor es capaz (in situ) de detectar y corregir las pérdidas de ciclo. 1.5.3.4.

Efecto multicamino (multipath)

El efecto multicamino es causado principalmente por múltiples reflexiones de la señal emitida por el satélite en superficies cercanas al receptor y depende de la frecuencia de la portadora.

21

Software para procesamiento de datos GPS

Estas señales reflejadas que se superponen a la señal directa son siempre más largas, ya que tienen un tiempo de propagación más largo y pueden distorsionar significativamente la amplitud y forma de la onda. Este efecto puede ser considerablemente reducido eligiendo puntos de estación protegidos de reflexiones, es decir, evitando las superficies reflectantes en las proximidades del receptor; y por un apropiado diseño de la antena. La motivación de todas estas medidas es intentar reducir la intensidad de las señales secundarias para poder aislar la señal directa. En el caso de las medidas de código, el error puede alcanzar un valor teórico de 1,5 veces la longitud de onda (“chip”); esto significa para el código C/A hasta unos 450 m, si bien valores superiores a unos 15 metros son difíciles de observar. El error habitual suele oscilar entre los 2 y los 3 metros. En el caso de las medidas de fase, su valor máximo teórico es de un cuarto de la longitud de onda; ello significa alrededor de unos 5 cm.

1.5.4. Errores relativos al receptor  1.5.4.1.

Error del reloj 

Los relojes de los receptores tienen una gran desviación de tiempo con respecto a la Escala de Tiempo GPS, debido a que están equipados con relojes basados en osciladores de cristal de cuarzo, mucho menos precisos que los de rubidio o cesio con que están equipados los satélites. Debido a la magnitud de esta desviación, se la considera una incógnita a tener  en cuenta y por tanto que se añade en el sistema de ecuaciones necesario para resolver la posición (añadiéndose a las incógnitas propias de localización x, y z). 1.5.4.2.

Variación del centro radioeléctrico de la antena

La variación y desfase del centro de la antena se debe a la falta de coincidencia entre el centro radioeléctrico o punto que realmente se posiciona, ya que es el punto al que llega la señal; y el centro mecánico o físico. La diferencia entre ambos depende de la elevación, del acimut y de la intensidad de la señal que proviene del satélite. Esto es debido a que la respuesta radioeléctrica de la antena no es la misma en todas las direcciones y además varía en función de la intensidad de la señal. La antena presenta centros de fase diferentes para L1 y L2 y estos variarán dependiendo de la dirección de la cual provenga la señal. Esta circunstancia genera dos tipos de errores: 1.5.4.2.1. Error residual por excentricidad 

El error residual por excentricidad o desplazamiento de los centros nominales, puede ser de unos milímetros.

El sistema de posicionamiento global GPS

22

Si todas las antenas son del mismo modelo, se puede eliminar mediante una metodología de observación apropiada. Se recomienda una orientación aproximada común para todas las antenas, ya que el fabricante monta en el interior de todas las carcasas el elemento físico receptor en la misma posición respecto a alguna referencia exterior del conjunto, y trabajando en modo diferencial este error se eliminará en ambas estaciones. 1.5.4.2.2. Error de variación del centro de fase

Este error, es mucho más complicado de solventar que su antecesor, debido a que afecta de forma diferente a cada uno de las señales. En este caso, cada ecuación de observación formada debe ser corregida de forma diferente, dependiendo del modelo de antena y de la dirección de la señal. Por ello, uno de los parámetros a tener en cuenta a la hora de evaluar la calidad de una antena es el grado de variación que presente el centro de fase. Las variaciones del centro de fase de las antenas pueden influir en los vectores calculados desde unos milímetros hasta algunos centímetros. En caso de que este error sea crítico, puede ser modelado en el proceso de cálculo. Para ello es necesario conocer los datos de calibración del modelo o modelos de antena que se estén empleando 1.5.4.3.

Errores en la manipulación de los equipos

Los errores de manipulación se producen cuando no se siguen las instrucciones del fabricante del instrumento o cuando éstas suelen descuidarse cuando se trabaja rutinariamente. 1.5.4.4.

Retardos instrumentales

El hardware de los receptores y satélites GPS introduce un retardo sobre la señal que lo atraviesa. Este retardo tiene una componente debida al satélite y otra debida al receptor, que dependen de la frecuencia. Por una parte el satélite envía su TGD (Total Group Delay, constantes instrumentales de los satélites) en el mensaje de navegación, mientras que por  otra parte el retardo instrumental del receptor se considera incluido en su error  de reloj. En el caso de la fase, este efecto se superpone al de la ambigüedad inicial.

1.5.5. Dilución de la precisión La geometría de los satélites visibles es un factor importante a la hora de conseguir altas precisiones en el posicionamiento de un punto. Dicha geometría cambia con el tiempo como consecuencia del movimiento orbital de

23

Software para procesamiento de datos GPS

los satélites. Un factor que mide la bondad de esta geometría es el denominado factor de dilución de la precisión (Geometric Dilution Of Precision, GDOP). El valor del GDOP es inversamente proporcional al volumen del cuerpo formado por los vectores unitarios que unen al receptor con los satélites a la vista. Cuanto mayor sea el volumen de este cuerpo mejor será la geometría, y por lo tanto menor será el valor del GDOP, siendo el valor ideal la unidad. Como ya se vio anteriormente, el valor del GDOP es el factor por el que debe ser multiplicado el error obtenido en las pseudodistancias para obtener el error  final en el posicionamiento. El GDOP está compuesto de varios componentes, siendo los más habituales los siguientes: • PDOP: Dilución de precisión en posición (3-D), también conocido como

DOP esférico. • TDOP: Dilución de precisión en el tiempo. • HDOP: Dilución de precisión horizontal (latitud, longitud). • VDOP: Dilución de precisión vertical (altura).

Desarrollo de la conversión de GCAT

24

CAPÍTULO 2. PROFUNDIZACIÓN EN EL SISTEMA GPS 2.1. Ecuaciones de observación Se ha comentado al final del primer capítulo que las medidas GPS sufren alteraciones y/o errores difícilmente modelables. Podemos utilizar combinaciones de observables para generar nuevos observables, algunas con propiedades y usos interesantes. La cantidad de combinaciones que podemos realizar depende de la cantidad de observables de que dispongamos, es decir, se podrán utilizar o no todos los observables dependiendo del tipo de receptor que se utilice (marca y modelo, recepción en monofrecuencia, recepción en bifrecuencia, etc.). Podríamos diferenciar entre dos tipos fundamentales de combinación de observables: por diferenciación de observables y por combinaciones lineales de fase. La diferenciación de observables, a partir de ecuaciones correspondientes a observaciones desde distintas estaciones a distintos satélites realizadas en tiempos distintos, nos da pie a tres diferentes tipos dentro de éste: por  diferencias simples, diferencias dobles y triples diferencias. Este procedimiento, sin embargo, tiene el inconveniente de que se introduce más ruido en el sistema. Debido a que los errores y alteraciones están en función de la frecuencia, pueden llegar a eliminarse casi por completo por medio de combinación lineal de fase. La principal diferencia y ventaja de este método con respecto a la diferenciación de observables es que ahora sólo están involucrados un receptor, un satélite y un instante de tiempo determinado. Por contra, la principal desventaja que este método supone es que si asumimos cierto nivel de ruido en la medida de fases sobre las portadoras L1 y L2, entonces este nivel de ruido se incrementará para estas combinaciones. Este ruido se puede evaluar aplicando la ley de propagación de errores a partir del ruido de cada portadora.

2.1.1. Diferenciación de observables Como hemos comentado, hay tres tipos básicamente: 2.1.1.1.

Diferencia simple

Existen dos métodos para obtener diferencias simples. El primer método consiste en obtener errores similares a partir de la diferencia entre dos medidas extraídas de dos receptores que estén siguiendo a un

25

Software para procesamiento de datos GPS

satélite en concreto. De esta manera podemos reducir de forma significativa los errores y eliminar efectivamente los errores debidos al reloj del satélite. Similarmente, podemos obtener dos medidas de un único receptor siguiendo a dos satélites que contengan los mismos errores de reloj. De esta manera, tomando la diferencia entre estas dos medidas, conseguimos eliminar los errores debido al reloj del receptor. 2.1.1.2.

Diferencia doble

Se adquiere cuando dos receptores siguen a dos satélites simultáneamente. Con ello, se elimina los errores en los relojes tanto del satélite como del receptor. Los otros errores son reducidos en gran medida. Además, este observable preserva los parámetros enteros de ambigüedad, utilizado para medidas precisas de fase. 2.1.1.3.

Diferencia triple

Es el resultado de dos diferencias dobles utilizadas en dos épocas de tiempo. Los parámetros de ambigüedad permanecen constantes en el tiempo siempre y cuando no haya saltos de ciclo ( cycle slips). Esta observable mediante esta propiedad nos permite detectar y eliminar los parámetros constantes de ambigüedad. Además, si hay un salto de ciclo en los datos, sólo afectará a un observable de diferencia triple y podrá ser detectado.

2.1.2. Combinación lineal de fase Destacamos por su importancia la combinación ionosférica, la combinación de libre ionosfera, y las combinaciones narrow-lane y wide-lane. 2.1.2.1.

Combinación ionosférica

Cancela la parte geométrica de la medida, quedando únicamente el efecto de la ionosfera (como término principal) y las constantes instrumentales (además del multicamino y el ruido de observación). Es muy apropiada para realizar  estudios libres de efectos orbitales o de las estaciones. Se utiliza también para detectar saltos de ciclo en la fase. Sus expresiones son:  PI = P2 − P 1

 LI = L1 − L2

(2.1)

Quedando lo siguiente:  PI = α I I + KI + M PI + ε PI   LI = α I I + λ1Bδ − λI B 2 + mLI + ω LI + ε LI   

(2.2) (2.3)

Desarrollo de la conversión de GCAT

26

donde:

(2.4) (2.5) (2.6)

 KI = K1 − K 2 λ I  = λ2 − λ 1 ; 5,4cm m α I  = α 2 − α 1 ; 1,05  LI  e / m2 17 10 2.1.2.3.

Combinación de libre ionosfera

El efecto de la ionosfera depende del cuadrado de la frecuencia como vimos en el capítulo anterior ( α  f  = 40,3/ f 2 ). Esta combinación permite que pueda eliminarse en un 99,9% pero no mantiene la ambigüedad como valor entero. Es conveniente para los casos en los que no se disponga un modelo para este efecto, o para cuando la variación del mismo sea muy grande (zonas cercanas al ecuador al polo, máximos solares, etc.). Se obtiene mediante la combinación:  f12 P1 − f 22 P 2  PC =  f12 − f 22

 f12 L1 − f 22 L 2  LC =  f12 − f 22

(2.7)

Resultando:  PC = + c ( dtrec − dt sat  ) + rel + T + KC + M PC + ε PC

(2.8)

 

 LC = + c ( dtrec − dt sat  ) + rel + T + λC BC + mLC + ω LC + ε LC

 

(2.9)

donde:  f12 K1 − f 22 K 2  KC =  f12 − f 22  f B1 − f 2 B 2  BC = 1  f1 − f 2 c = 10,7 cm λ C  =  f1 + f 2

(2.10) (2.11) (2.12)

Por último, puntualizaremos en que se necesitan receptores bifrecuencia para aplicar esta combinación. Si por el contrario, se utilizara un receptor de una única frecuencia, se debería aplicar también un modelo ionosférico para eliminar la refracción ionosférica. Un buen método para ello, entonces, sería el modelo Klobuchar que se proporciona en el mensaje de navegación GPS, que cuenta más del 60% del retardo ionosférico.

27

2.1.2.3.

Software para procesamiento de datos GPS

Combinaciones narrow-lane(P δ )  wide-lane (Lδ  )

La combinación Lδ  proporciona un observable con una longitud de onda de gran extensión  λδ  = 86,2 cm (unas cuatro veces superior a la de L1 o L2) lo que la hace muy útil para la detección de saltos de ciclo en la fase. Por su parte, la longitud de onda de la combinación P δ  es 10,7cm, una observable con menor  longitud de onda, con la que se resuelven también las ambigüedades de fase. Para detectar los saltos de ciclos se suele utilizar la combinación de Melbourne-Wübbena (W = Lδ  – P δ)  :  P δ  =

 f1P1 + f 2 P 2  f1 + f 2

 Lδ  =

 f1P1 − f 2 P 2  f1 − f 2

(2.13)

Obteniéndose:  Pδ = ρ + c ( dtrec − dt sat  ) + rel + T + αδ I + K δ + M Pδ + ε Pδ   Lδ = ρ + c ( dtrec − dt sat  ) + rel + T + αδ I + λδ Bδ + mLδ + ε Lδ   

  

(2.14) (2.15)

donde:  f1K 1 + f 2 K 2 = 10,7 cm  f1 + f 2  Bδ  = B1 − B 2 c = 86,2cm λ δ  =  f1 − f 2 40,3 α δ  =  f1 f 2

 Kδ  =

(2.16) (2.17) (2.18) (2.19)

La pseudodistancia narrow-lane es atrasada por la ionosfera, mientras que la fase narrow-lane es avanzada. Esto es lo contrario a lo que pasa con los observables wide-lane. Conociendo esta combinación, es posible resolver las ambigüedades de la combinación de libre ionosfera de forma indirecta, ya que esta última es una combinación lineal de la ambigüedad de la medida de la fase L1 y de la ambigüedad de la combinación wide-lane. Sin embargo, es importante resaltar  que la combinación wide-lane está más afectada de retardo ionosférico que la portadora L1 y menos que la L2.

Desarrollo de la conversión de GCAT

28

Fig. 2.1 Resumen de las combinaciones lineales de fase

Fig. 2.2 Detección de los saltos de ciclo mediante la combinación ionosférica (LI = L1-L2) y la Melbourne Wübbena (W=Lw-Pw)

29

Software para procesamiento de datos GPS

2.2. Estructura del mensaje de navegación Para obtener todos los datos que el satélite ha de emitir para un correcto posicionamiento (ya que los códigos pseudoaleatorios no incorporan información alguna) se transmite un mensaje de navegación modulado sobre ambas portadoras L1 y L2, que contiene lo siguiente: • • • •

parámetros orbitales (efemérides), información sobre el reloj de los satélites, estado de salud de los satélites, y otros datos de corrección, como el modelo ionosférico del sistema GPS

El segmento de control, a través las antenas de las Estaciones de Control de Tierra, transmite esta información a cada satélite para que éste haga lo mismo con todos los usuarios. El mensaje de navegación del satélite está en forma binaria, como los códigos de medición C/A y P, pero la secuencia no es aleatoria. El mensaje se transmite a una velocidad de un bit cada 20 repeticiones del código C/A, es decir, a una frecuencia de 50Hz. Este mensaje tiene una duración de 12 minutos y 30 segundos y consta de 25 tramas de 1500 bits cada uno, con lo que una trama se transmite en 30 segundos. Cada trama está dividida en 5 subtramas de 300 bits cada una (6 segundos), que a su vez se dividen en 10 palabras de 30 bits de longitud. Las subtramas 1, 2 y 3 son invariantes, mientras que las 4 y 5 no. Como hay 25 tramas, tendremos 25 subtramas 4 y 25 subtramas 5, llamadas páginas, todas ellas diferentes. Cada subtrama empieza con la palabra telemetría (TLM o TeLeMetry), que ofrece 14 bits de información sobre el estado del satélite (avisa cuando sufre alguna manipulación), siendo el resto bits de sincronización y de paridad. La segunda palabra, llamada de transferencia (HOW o Hand Over Word ), contiene el tiempo de la semana (TOW o time-of-week), un contador de 17 bits, también llamado contador-Z que permite determinar el tiempo transcurrido desde que se inició el código P. Esto, utilizado junto al código C/A, permite una rápida sincronización con el código P.

Desarrollo de la conversión de GCAT

30

Fig. 2.3 Formato básico del mensaje de navegación El contenido de cada una de las subtramas es: • Subtrama 1: ofrece información relativa a las correcciones del reloj del

satélite (los coeficientes polinómicos para convertir el tiempo de a bordo en tiempo GPS), la salud del satélite, la antigüedad de la información y otras. Se repite cada 30 segundos, es decir, se renueva a cada nueva trama, y es una información que el segmento de control transmite a cada satélite. • Subtrama 2 y 3: contiene las efemérides del satélite, que permiten un

cálculo preciso de su posición y velocidad, así como la edad de dichos parámetros. • Subtrama 4: en ella están los parámetros de modelo ionosférico (para

usuarios monofrecuencia), información del tiempo UTC, parte del almanaque e indicaciones de si está activado el A/S. Mucha información que incluye está reservada para uso militar. • Subtrama 5: contiene los datos del almanaque y el estado de la

constelación. Con ello se permite una rápida identificación de los satélites de los que procede la señal. Se precisan 25 tramas para completar el almanaque.

2.3. Obtención de los datos: Ficheros RINEX Debido a que muchos fabricantes tenían sus propios formatos para almacenar  las medidas GPS, era muy difícil combinar datos de diferentes receptores. Lo mismo pasaba cuando interactuaban varios dispositivos, incluyendo el sistema GPS. Para superar estas limitaciones, grupos de investigación desarrollaron formatos estándar para distintas necesidades de los usuarios. Los formatos estándar  más conocidos son: RINEX (Receiver INdependent EXchange), SINEX (Solution INdependent Exchange), NGS-SP3, RTCM SC-104, y NMEA 0183.

31

Software para procesamiento de datos GPS

En este apartado hablaremos del formato RINEX, puesto que es el que utiliza el programa GCAT.

2.3.1. Formato RINEX El formato RINEX se creó para solventar el problema que sucedía al querer  combinar datos (en modo post-proceso) procedentes de distintos receptores GPS. Los receptores almacenaban estos datos en archivos binarios con formatos distintos que hacían complicado, sino imposible, la agregación de los datos. En la actualidad, RINEX se ha adoptado como formato estándar de intercambio y almacenaje tanto para la localización GPS, como para aplicaciones en navegación precisa. RINEX está en el formato estándar ASCII. El estándar ASCII, un estándar de caracteres de texto interpretado por la totalidad de los sistemas operativos actuales, proporciona portabilidad a los datos. A pesar de que un fichero en formato ASCII toma más espacio de almacenamiento que un fichero en formato binario, proporciona más flexibilidad en la distribución. Sin embargo, numerosas son las técnicas que se utilizan para comprimir al máximo el contenido de estos ficheros para una más rápida transmisión de los mismos. La técnica más extendida es la de los ficheros RINEX compactos. Los ficheros RINEX compactos, generados mediante un procedimiento que tiene dos pasos: primero se comprime con la compresión Hatanaka actual y posteriormente con la compresión estándar de UNIX, son aproximadamente 8 veces más pequeños que los ficheros RINEX ASCII originales, permitiendo una ganancia de 2,5 en la cantidad de espacio requerido para su almacenamiento y en el tiempo de transmisión. Sin embargo, cabe destacar que la compresión Hatanaka únicamente puede ser utilizada con ficheros de datos de observación. La longitud de un registro (una línea de texto) está restringida en el formato RINEX a un máximo de 80 caracteres. Un fichero RINEX es la traducción de los propios ficheros comprimidos en binario de los receptores. La actual versión define seis diferentes ficheros RINEX, los cuales cada uno contiene secciones de cabecera y de datos: • • • • •

fichero de datos de observación, fichero del mensaje de navegación (transmisión de las efemérides), fichero meteorológico, fichero del mensaje de navegación GLONASS, fichero de datos de satélites geoestacionarios (carga útil de la señal GPS), y • fichero de datos del reloj del satélite y del receptor. La forma que por convención está recomendada para nombrar ficheros RINEX es “ssssdddf.yyt.”. • “ssss” representan el nombre de la estación;

Desarrollo de la conversión de GCAT

32

• “ddd” representan el día del año del primer registro; • el carácter “f”, representa el número del fichero de secuencia en el día. • Los caracteres de la extensión del fichero “yy” y “t” representan los dos

últimos dígitos del año actual y el tipo de fichero, respectivamente. El tipo de fichero toma los siguientes símbolos: ― ― ― ― ― ―

“O” para ficheros de observación, “D” para ficheros de observación con compresión Hatanaka, “N” para ficheros de navegación, “M” para ficheros de datos meteorológicos, “G” para ficheros de navegación GLONASS, y “H” para ficheros de mensaje de navegación de la carga útil geoestacionaria GPS.

La designación del satélite se define de la forma “snn”. El primer carácter “s”, es un identificador del sistema del satélite, y los dos dígitos restantes denotan el número del satélite (por ejemplo, el número PRN). De esta manera, el formato RINEX permite la combinación de observaciones de diferentes tipos de satélites. Los ficheros se obtienen a partir del mensaje transmitido por los satélites GPS a las estaciones de tierra. Las estaciones separan la información en ficheros RINEX de observables (código y fase de la portadora) y en ficheros RINEX de efemérides (o de mensaje de navegación) de cada satélite. Ambos ficheros llevan la extensión *.rnx y *.eph, respectivamente. Para la mayoría de los usuarios GPS, los tres primeros ficheros son los más importantes, y por lo tanto serán los únicos de los que hablaremos aquí.

2.3.2. Fichero de datos de observación El fichero de observación contiene en su cabecera información que describe los contenidos del fichero, como el nombre de la estación, información de antena, las coordenadas aproximadas de la estación, número y tipos de observación, intervalo de observación en segundos, tiempo de la primera observación registrada, y otros datos. Los tipos de observación vienen definidos como L1 y L2, y representan las medidas de fase en L1 y L2 (ciclos); C1 representa la pseudistancia usando código C/A en L1 (metros); P1 y P2 representan la pseudodistancia utilizando código P en L1 y L2 (metros); D1 y D2 representa la frecuencia Doppler en L1 y L2 (Hz). La trama del tiempo GPS se utiliza para los ficheros GPS, mientras que la trama del tiempo UTC se utiliza para los ficheros GLONASS. La sección de cabecera puede contener algunos registros opcionales como los leap seconds (segundo que se agrega al Tiempo Atómico Internacional TAI).

33

Software para procesamiento de datos GPS

Los últimos 20 caracteres de cada registro, es decir, de la columna 61 a la 80, contienen descripciones de ese registro. El último registro en la sección de cabecera debe ser “END OF HEADER”. La sección de datos se divide en épocas; cada una contiene una etiqueta del tiempo de observación (el tiempo de la señal recibida por el receptor, en la trama de tiempo GPS por ficheros GPS), el número y lista de satélites, los diferentes tipos de medidas en la misma secuencia como se da en la cabecera, y la fuerza de la señal. Otra información, como el indicador de pérdida de enganche (loss of lock ), se incluye también en la sección de datos. La sección de datos también puede contener, opcionalmente, el offset del reloj del receptor  en segundos.

2.3.3. Fichero de mensaje de navegación El fichero de mensaje de navegación contiene información del satélite. En su cabecera, el mensaje de navegación contiene información como la fecha de creación del fichero, el nombre de la agencia, y otra información relevante. De igual forma como el fichero de observación, el último registro en la sección de cabecera debe ser “END OF HEADER”. Opcionalmente, la sección de cabecera puede contener información adicional como los parámetros del modelo ionosférico para usuarios monofrecuencia. De la misma forma, los parámetros del almanaque relacionados con el tiempo GPS y UTC y los leap seconds pueden opcionalmente ir incluidos en la sección del mensaje de navegación. El primer registro en la sección de datos contiene el número PRN del satélite, la etiqueta de tiempo, y los parámetros del reloj del satélite (tendencia, desviación y la velocidad de desviación). Los registros subsiguientes contienen información sobre la órbita de transmisión del satélite, la salud del estado del satélite, la semana GPS, y otra información relevante.

2.3.4. Fichero meteorológico El fichero meteorológico contiene información de tiempo etiquetada como la temperatura (en grados Celsius), la presión barométrica (en milibares), y la humedad (en porcentaje) en el lugar de observación. El fichero meteorológico empieza con una sección de cabecera conteniendo los tipos de observación (por ejemplo, presión), información relacionada a sensores, la posición aproximada del sensor meteorológico, y otra información relacionada. Como con los otros ficheros, el último registro en la cabecera debe ser “END OF HEADER”. La sección de datos contiene etiquetas de tiempo (en tiempo GPS) seguido por  datos meteorológicos dispuestos en la misma secuencia como se especifica en la cabecera.

Desarrollo de la conversión de GCAT

34

2.4. Procesamiento de datos GPS Existen dos modos de posicionamiento: posicionamiento absoluto y posicionamiento diferencial. La diferencia entre ambos, es que el primero emplea únicamente un receptor GPS, mientras que el segundo emplea dos receptores simultáneamente, siguiendo a los mismos satélites. En este trabajo, únicamente hablaremos del posicionamiento absoluto y de la resolución de las ecuaciones de navegación con código. El posicionamiento absoluto, mediante un receptor, mide los códigos de pseudodistancia para determinar la posición del usuario de forma instantánea, siempre y cuando haya cuatro o más satélites a la vista. La razón por la que se necesitan cuatro es muy sencilla. El receptor adquiere las coordenadas de los satélites a través del mensaje de navegación, mientras que las distancias se obtienen las distancias a estos mediante el código C/A o el código P (dependiendo de si se utiliza receptor civil o militar). Sin embargo, como las medidas de pseudodistancia están contaminadas por los errores de sincronización entre los relojes del satélite y del receptor, se debe aplicar  correcciones debido a los relojes utilizando el mensaje de navegación, como hemos visto en el capítulo I. Esto nos lleva a un total de cuatro incógnitas: tres para las coordenadas del receptor y una para el error en el reloj del receptor. Pero un receptor, normalmente tiene más de cuatro satélites a la vista, con lo cual a la hora de plantearnos las ecuaciones, tendríamos un sistema sobredimensionado. Para resolverlo se suele utilizar el ajuste por mínimos cuadrados o el filtro de Kalman. Con la ecuación de pseudodistancia que ya vimos,  P sat =  ρ sat + c ( dt − dt sat ) + rel sat + Trop sat + α1Ion sat + K sat + M  Psat + ε P sat 

(2.20)

se nos plantea el siguiente sistema de ecuaciones de cuatro incógnitas ( , y , z , dt ) y que de su determinación se conoce como solución de navegación:  P sat + cdt sat − δ sat =

2

2

2

( x − x sat ) + ( y − y sat ) + ( z − z sat  ) + cdt 

(2.21)

donde: δ  sat

 sat = 1, 2,..., n ( n ≥ 4 ) = rel sat + Trop sat + α 1 Ion sat + K sat   

La ecuación está simplificada, ya que no se consideran el efecto multicamino (por ser desconocido) ni el término de ruido (por ser también desconocido, de pequeña magnitud y constante). Si nos fijamos, todos los términos de la ecuación son lineales excepto  ρ  sat  debido a la raíz. Para linealizarla, aplicaremos el desarrollo de Taylor de primer  orden en ese parámetro y entorno de un punto (  x0 , y0 , z0 ), correspondiente a la

35

Software para procesamiento de datos GPS

posición aproximada de la estación, calculada, por ejemplo, por el método de Bancroft. Tendremos:  sat

 ρ

=

ρ 0sat 

+

 x0 − x sat  ρ sat 0

dx +

y0 − y sat ρ 0sat

dy +

z0 − z sat  ρ 0sat 

dz

(2.22)

con: dx = x − x0 dy = y − y0 dz = z − z0 Resultando finalmente el siguiente sistema de ecuaciones:  sat

 P =

sat

=

 ρ0sat

+

 x0 − x sat  ρ sat 0

dx +

y0 − y sat ρ 0sat

dy +

z0 − z sat  ρ 0sat 

dz + c ( dt − dt sat ) + δ sat  (2.23)

 sat = 1, 2,..., n ( n ≥ 4 )

cuya expresión matricial es:  x0 − x1  P1 − ρ 01 + cdt 1 − δ 1   ρ sat 0    M = M  M   P n − ρ n + cdt n − δ  n   x − x n 0 0     ρ n 0 

y0 − y1 ρ 0sat

M y0 − y n ρ 0n

z0 − z1



1   dx  ρ 0sat    dy    M   dz  n z0 − z   1 cdt  n ρ 0

(2.24)



Notar que lo que se estima son las diferencias ( dx, dy, dz ) entre la posición verdadera ( , y, z ) y la aproximada ( x0 , y0 , z0 ). El sistema se puede expresar también como: Y = A ⋅ X 

(2.25)

Y  corresponde al vector columna de las observaciones, dicho de otra manera, a las diferencias entre la pseudodisancia medida y la calculada ( prefit  residuals).  A es la matriz de diseño ( geometry of rays), y  X  es el vector  columna de las incógnitas.

2.4.1. Ajuste por mínimos cuadrados  Aquí podríamos distinguir entre dos tipos: • Solución por mínimos cuadrados : Este método asume que todas las

medidas tienen el mismo error. Su solución mínimo cuadrática es: −1  Xˆ = ( At A ) At Y 

(2.26)

Desarrollo de la conversión de GCAT

36

• Solución por mínimos cuadrados con pesos : Este otro método todas

las medidas no tienen el mismo error. Entonces, si definimos a W  como la matriz de pesos para el vector de observaciones Y , entonces la solución de mínimos cuadrados con matriz de pesos se obtiene de: −1  Xˆ = ( AtWA ) At WY 

(2.27)

La matriz de pesos W suele tomar se la forma:  w y  1/ σ y2 0 0 1 1       W  =  O O =     0 w yn   0 σ 2yn  1/    

(2.28)

2 son las varianzas del ruido de las observaciones Y . De aquí donde σ  yi

deducimos lo siguiente, cuanto más grande es el error, menos peso: 1 wi = 2 σ 

 yi

 → σ  y2i ↑ ⇒ wi ↓

(2.29)

Si  P Y  es la matriz de covarianza del vector de observaciones Y , para W = P Y −1 se obtiene la solución de mínima varianza para  X  , siendo:  P ˆ = ( At WA )  X 

−1

(2.30)

2.4.2. Filtro de Kalman El filtro de Kalman consiste en un conjunto de ecuaciones matemáticas, que proporcionan una solución recursiva óptima por el método de mínimos cuadrados. Esta solución permite calcular un estimador lineal, insesgado (el valor esperado es igual al valor del parámetro que se está estimando) y óptimo del estado de un proceso en cada momento del tiempo, basándose en la información disponible en el momento t-1; y actualizar, con la información adicional disponible en el momento t , dichas estimaciones. El filtro se desempeña suponiendo que el sistema puede ser descrito a través de un modelo estocástico lineal, en donde el error asociado tanto al sistema como a la información adicional que se incorpora en el mismo tiene un distribución normal con media cero y varianza determinada. La idea básica es que, mediante toda la información relativa al sistema en un cierto momento, se permita la inferencia del comportamiento pasado, con el objeto de predecir su comportamiento futuro.

37

Software para procesamiento de datos GPS

Las ecuaciones que se utilizan para derivar el filtro de Kalman se pueden dividir  en dos grupos: -

ecuaciones de predicción: también conocidas como ecuaciones de

actualización del tiempo, son responsables de la proyección en el momento t  tomando como referencia el momento t-1 y de la actualización intermedia de la matriz de covarianza. -

ecuaciones de actualización: también conocidas como ecuaciones de

actualización de datos, son responsables de la retroalimentación, es decir, incorporan nueva información dentro de la estimación anterior  con lo cual se llega a una estimación mejorada. Las ecuaciones que actualizan el tiempo pueden ser pensadas como ecuaciones de pronóstico, mientras que las ecuaciones que incorporan nueva información pueden considerarse como ecuaciones de corrección. Para que nos quede claro el funcionamiento del filtro de Kalman, consideraremos tres sistemas de ecuaciones, cada uno con su correspondiente matriz de pesos: Y1 = A ⋅X 1 con W 1 Y2 = A ⋅X 2 con W 2 Y3 = A ⋅X 3 con W 3

(2.31) (2.32) (2.33)

ˆ 1 a partir del método de mínimos Para empezar, obtenemos la estimación  X  cuadrados con pesos: −1 −1  X%1 = ( A1T ⋅W1 ⋅ A1 ) ⋅ A1T  ⋅W1 ⋅ Y 1 ;  P1 = ( A1T  ⋅W1 ⋅ A1 )

(2.34)

Para la siguiente iteración, volvemos a obtener una nueva estimación: −1 −1  X%2 = ( A2T ⋅W2 ⋅ A2 ) ⋅ A2T  ⋅W2 ⋅ Y 2 ;  P2 = ( A2T  ⋅W2 ⋅ A2 )

(2.35)

%2 realizada depende de la predicción del instante Pero como la estimación  X  ˆ 1 , que a su vez puede ser propagada mediante la matriz de transición anterior  X 

de estados, tenemos las siguientes relaciones: ˆ1  Xˆ 2− = φ 1 ⋅ X   P2− = φ1 ⋅ P1 ⋅ φ 1T  + Q1

(2.36) (2.37)

donde: •

es la matriz de transición de estados que determina el modelo del proceso φ  K 

Desarrollo de la conversión de GCAT



38

Q K  es la matriz de covarianzas del ruido del proceso

Obtenemos así para esta segunda iteración un nuevo sistema a resolver: %  X%2   I 1   P  0  −  =   ⋅ X  ; W  =  2 − %  0  P 2   X 2   I 2 

(2.38)

que como resultado nos da, −1

−1 − −1  −  P%−1 ⋅ X% + ( P − )−1 ⋅ X   P%−1 + ( P − )−1  ˆ  Xˆ 2 =  P% P  P ; + ⋅ = ( ) 2 2 2 2  2 2  2   2   2 

−1

(2.39)

ˆ 3 y  P 3 . Así de forma Haríamos lo mismo para el tercer sistema obteniendo  X  general podemos escribir la siguiente ecuación: −1

−1

−1 − −1  −  P%−1 ⋅ X% + ( P − )−1 ⋅ X   P%−1 + ( P  − )−1  (2.40) ˆ ; + ⋅ =  Xˆ K =  P% P  P ( ) K K K K    K K   K  K   K  

para: ˆ K   Xˆ K− +1 = φ K ⋅ X   P K−+1 = φK ⋅ PK ⋅ φ KT  + QK 

Fig. 2.4 Representación del filtro de Kalman

(2.41) (2.42)

39

Software para procesamiento de datos GPS

CAPÍTULO 3. ENTORNO DE TRABAJO 3.1. Sistema operativo Unix/Linux Linux es un sistema operativo gratuito y de libre distribución inspirado en el sistema operativo Unix. La idea de su creación surgió del estudiante finlandés Linus Torvalds cuando modificaba Minix, una versión de Unix con limitadas funcionalidades. Linus pidió ideas y colaboración a otros desarrolladores en un foro de Internet y el proyecto ha terminado aglutinando a miles de programadores de todo el mundo que todavía hoy siguen desarrollando Linux para hacer de él un sistema operativo mejor. Linux hereda las principales ventajas de Unix: portabilidad a múltiples plataformas (desde Pc’s y Mac’s a estaciones de trabajo y superordenadores), flexibilidad a todos los niveles y una altísima configurabilidad; sin olvidarnos de la multitarea, multiusuario, gran capacidad para la gestión de redes, soporte de varios sistemas de ficheros y un largo etcétera. Sin embargo, no está pensado para ser fácil de usar por lo que todavía hoy, y a pesar de los grandes esfuerzos realizados en esta dirección, existen muchos usuarios reacios a considerarlo una alternativa real a Windows. Linux cuenta con una amplia colección de programas y utilidades que lo acompañan: entorno gráfico X Window (compuesto de dos partes: el servidor X y el programa para la gestión de las ventanas), procesadores de texto como el Vi, compiladores para varios lenguajes de programación (C, C++, Ada, Fortran, etc…), entre otros. El núcleo de Linux, al igual que la mayoría del software que lo complementa está amparado bajo los términos de la denominada GNU General Public License (GPL). Esta licencia permite básicamente al usuario final de un programa el poder usar, compartir, copiar y modificar con toda libertad el software que se acoge a esta licencia con ciertas restricciones. Algunas partes de este núcleo y otros programas que lo acompañan son propiedad de sus autores, con lo que Linux no es shareware ni freeware como se podría llegar a pensar. La actual versión es la 2.6 (publicada en diciembre del 2003) y su desarrollo continúa. El primer concepto a conocer de Linux es el de distribución. Una distribución es un agrupamiento del núcleo del sistema operativo Linux y otra serie de aplicaciones de uso general o no tan general. En principio las empresas que desarrollan las distribuciones de Linux están en su derecho al cobrar una cierta cantidad por el software que ofrecen, aunque en la mayor parte de las ocasiones se pueden conseguir desde Internet, de revistas o de amigos, siendo todas estas formas gratuitas y legales. Las distribuciones más conocidas son RedHat, Debian, Slackware, SuSE, Knoppix y Mandrake. Para este trabajo se ha trabajado bajo la distribución Ubuntu, basada en Debian, y con el gestor de ventanas GNOME (GNU Network Object Model Environment).

Desarrollo de la conversión de GCAT

40

3.2. Entorno de desarrollo Anjuta El entorno integrado de desarrollo que se ha utilizado para la programación de la aplicación ha sido Anjuta, un entorno que corre sobre el gestor de ventanas GTK/GNOME y que se distribuye bajo licencia GPL. Este IDE (Integrated Development Environment) se caracteriza por su compatibilidad con muy diversos lenguajes de programación. En nuestro caso concreto, nos interesaba un entorno que permitiese desarrollar en C bajo la plataforma GNU/Linux, y Anjuta lo permite.  Anjuta proporciona al desarrollador un administrador de proyectos, plantillas, depurador (debugger) interactivo y un poderoso editor.

Fig. 3.1 Ejemplo de una ventana de Anjuta

3.3. Documentación con Doxygen Uno de los objetivos de este TFC ha sido el de documentar el software GCAT2 para que el código fuente sea más comprensible. Este factor es muy importante de cara a que programadores ajenos al desarrollo de la aplicación no encuentren dificultades añadidas a la propia operativa del mismo, si en un futuro deben implementar mejoras, modificaciones o nuevas funcionalidades al GCAT2. La aplicación se ha documentado haciendo uso del programa Doxygen (DOCument, GENerator), un generador de documentación que se encuentra bajo la licencia GPL.

41

Software para procesamiento de datos GPS

Este programa es capaz de generar una completa documentación de apoyo de cualquier desarrollo de software a partir de comentarios colocados en el mismo código fuente. Soporta una gran cantidad de lenguajes de programación: C, C++, Java, Objective-C, Phyton, IDL (versiones Corba y Microsoft), y de forma parcial PHP, C# y D. Para que los comentarios sean interpretados correctamente por Doxygen deben seguir una especificación de formato concreta; los comentarios de código que no sigan este patrón serán obviados en la generación de los documentos. Doxygen es altamente configurable, permitiendo generar una documentación a medida que contenga aquellas características que deseamos. Se puede configurar para extraer la estructura del código, lo que es muy útil para ver la distribución del código. También permite visualizar las relaciones entre varios elementos mediante gráficas que incluyen dependencia, diagramas inherentes, y diagramas de colaboración. Doxygen permite un amplio abanico de formatos finales para la documentación: HTML, Latex, RTF, PDF, páginas man, postscript y XML. Otros generadores de documentación conocidos son javadoc, gtkdoc y phpdoc.

3.4. Depuradores: Salford (Fortran), GDB o DDD (ANSI C) La depuración de programas es el proceso de identificar y corregir errores de programación. En inglés se conoce como debugging , ya que se lo asemeja a la eliminación de bichos (bugs), como se conoce informalmente a los errores en programación. El depurador o debugger  en inglés, es la herramienta que ayuda a depurar o limpiar de errores un programa al permitir al programador observar su ejecución instrucción por instrucción. Con él se pueden visualizar los valores de las variables en cada momento y establecer puntos de ruptura (instrucción que se marca indicando donde detener la ejecución del programa para ver hasta ese momento el resultado de la ejecución). Sus principales funciones son: • • • •

ejecutar línea por línea, detenerse en una línea del código del programa, verificar o cambiar el valor de una variable, y revisar el comportamiento del programa, bajo ciertas circunstancias.

Los depuradores no acostumbran a ser programas independientes, sino que suelen formar parte de paquetes que también incluyen compilador.  Actualmente, con los IDE son muchas las herramientas de programación que se aglutinan bajo un mismo entorno para facilitar la vida al programador.

Desarrollo de la conversión de GCAT

42

Sin embargo existen algunas excepciones como el GDB, que es el depurador  más conocido y utilizado en entornos GNU/Linux, sobre el que se profundiza más adelante. El depurador para Fortran que se ha utilizado en este proyecto ha sido el que incorpora Salford FTN77. Salford FTN77 es un paquete donde encontramos tanto compilador como depurador para Fortran 77 (lenguaje en que se encontraba programada originalmente la aplicación GCAT), funciona bajo sistema operativo Windows y proporciona un entorno de depuración gráfico bastante intuitivo. Existen otros depuradores para Fortran, entre los que podríamos citar el Intel Fortran Compiler for Linux, el G95 y el GFortran.

Fig. 3.2 Ejemplo de una ventana de Salford FTN77 El depurador utilizado para el código que se desarrollaba en C ha sido el GDB. Este depurador, una herramienta GNU (las siglas GDB significan GNU SourceLevel Debugger) muy potente, funciona por línea de comandos y depura los lenguajes de programación C, C++, Modula-2 y ensamblador. Para facilitar el uso del GDB existe una interfaz gráfica más amigable, el DDD (Display Data Debugger). El interfaz DDD funciona por encima del GDB, por lo que necesita de éste para poder ejecutarse. Es importante esta apreciación, ya que sin el programa GDB previamente instalado, DDD es una carcasa sin contenido.

43

Software para procesamiento de datos GPS

Fig. 3.3 Pantalla que se obtiene al invocar el DDD En la figura Fig. 3.3, se puede observar que la ventana está dividida en 3 zonas. La inferior se corresponde con la ventana del depurador. En ésta podemos introducir los comandos como si no tuviésemos el interfaz a nuestra disposición (el GDB sin más). La zona central es la que contiene al código fuente. La parte superior nos sirve para obtener el contenido de las variables en forma gráfica. La barra de tareas o ventana flotante que aparece nos permite controlar la ejecución del programa en todo momento. Quizá uno de los elementos más llamativos de este entorno gráfico es su área de dibujo para los datos, en la parte superior de la ventana. En ella se puede apreciar gráficamente tanto la estructura y contenido de los datos, como la relación existente entre los mismos, de existir. Veamos un ejemplo en el que se muestra un vector y tres de sus componentes:

Desarrollo de la conversión de GCAT

44

Fig. 3.4 Relación entre un vector y tres de sus componentes vistos con el DDD

En definitiva, el DDD es una interfaz gráfica que permite sacar provecho de las funcionalidades básicas del GDB sin tener apenas conocimiento del mismo. Esta característica simplifica mucho la tarea de depuración para los usuarios noveles en Unix/Linux y para los no iniciados en la línea de comandos.

45

Software para procesamiento de datos GPS

CAPÍTULO 4. DESARROLLO DE LA CONVERSIÓN DE GCAT 4.1. Idea general El objetivo de nuestro proyecto era realizar, en primer lugar, la traducción del lenguaje de programación Fortran al lenguaje de programación C, de la herramienta de análisis de datos GPS GCAT (GPS Code Analysis Tool); y en segundo, la generación de una documentación de apoyo del código realizado. La principal motivación de traducir la herramienta GCAT era actualizarla a un lenguaje mucho más extendido hoy en día, que proporcionase una alta portabilidad entre sistemas operativos y plataformas diferentes y que fuese fácilmente mantenible tanto por sus desarrolladores originales como por  terceros. El lenguaje Fortran presenta bastantes problemas en estos tres aspectos. En primer lugar porque ha caído bastante en desuso debido en gran parte al empuje que tuvo C desde su creación en 1972 y cada vez son menos las universidades de carreras técnicas que enseñan Fortran a sus alumnos. En segundo lugar, aunque Fortran pretende ser portable, la realidad es que si se intenta ejecutar un programa Fortran en una plataforma o sistema operativo diferente de donde fue programado originalmente aparecen gran número de pequeños detalles que pueden crear problemas. Y en tercer y último lugar, el lenguaje Fortran es difícilmente mantenible debido la gran complejidad que para el desarrollo del software entrañan algunas de las propiedades inherentes a Fortran, como la sentencia GOTO y que muchas veces provocan que el código sea prácticamente ilegible. Por el contrario, el lenguaje C, que fue nuestra elección para realizar esta traducción, presenta importantes cualidades en los tres aspectos que pretendíamos mejorar. En primer lugar, como ya avanzamos anteriormente, desde su creación en 1972 el lenguaje C se convirtió rápidamente en uno de los lenguajes de programación más importantes y populares. Hoy en día, aunque lenguajes de orientación a objetos como Java y C# cada vez cobran más protagonismo, la realidad es que su uso está muy encarado a aplicaciones de gestión que deban tener un gran contenido visual, y en consecuencia, son lenguajes pesados y lentos que no ofrecen ninguna ventaja a la hora de programar aplicaciones internas del sistema operativo o aplicaciones encaradas al tratamiento de grandes volúmenes de datos que necesiten de unos tiempo de respuesta aceptables (entre estas últimas se encuentra la nuestra, GCAT). La excepción es la evolución del lenguaje C para programación orientada a objetos, el C++, que mantiene las cualidades de C. En segundo lugar, el lenguaje C es un lenguaje portátil. Los programas escritos en C en un sistema pueden ejecutarse en otros sin ninguna modificación o con modificaciones mínimas. En este último caso, a menudo las modificaciones se reducen a cambiar unas cuantas sentencias de entrada en un fichero de encabezamiento (header) que acompaña al programa principal. Y en tercer y último lugar, el lenguaje C al ser un lenguaje estructurado permite una mejor  depuración del código y lo hace mucho más legible a la hora de posteriores

Desarrollo de la conversión de GCAT

46

mantenimientos y revisiones del código. Además, la generación de una documentación de apoyo contribuirá bastante a mejorar la comprensión y legibilidad del codigo.  A continuación, se van a describir los principales problemas que se han encontrado a la hora de “traducir” el código original del GCAT programado en Fortran a lenguaje C.

4.1.1. Declaración de variables El primer problema con el que nos encontramos a la hora de traducir un programa de Fortran a C, es el hecho de que en Fortran existe una política de declaración de variables sensiblemente diferente a C. En Fortran 77, lo más comúnmente utilizado es la utilización de una sentencia al principio de una función o subrutina donde establece los tipos de variables según con qué letra empiece el nombre de la variable. En nuestro caso teníamos la siguiente “implicit double precision (a-h, o-z)”, donde establece que toda variable que empezara con una letra dentro del rango de la “a” a la “h” o de la “o” a la “z” es de tipo double precision (para el GCAT, puesto que la precisión es muy importante, se utilizaban valores que nos dieran alta precisión). Fuera de este rango, se establece que la variable es de tipo integer. Para poder evitar esa convención se utilizaría la siguiente sentencia, “implicit none”. También existe la posibilidad, mucho más habitual y única en la mayoría de lenguajes, de declarar las variables precediendo el tipo de dato que queramos que contengan (es decir, como lo hace C). Sin embargo, la mayoría de los programadores Fortran utilizan la sentencia “implicit” por la gran ventaja que les supone poder crear variables en función de las necesidades que vayan surgiendo en el código, sin tener que preocuparse en declararlas. Sin embargo hay que tener presente que las variables DIMENSION (puede ir en minúscula), que equivalen a los arrays de C, y las cadenas de caracteres siempre tienen que ser declaradas. En Fortran tenemos: dimension eph(nts, 38) caracter loss_lock*4 mientras que en C sería: double eph [nts][38]; char loss_lock [4]; Notar otra diferencia entre Fortran y C, y es que el segundo lenguaje necesita que toda sentencia finalice con un “;”.

47

Software para procesamiento de datos GPS

4.1.2. Funciones propias Durante el proceso de conversión del código ha sido necesario crear dos funciones propias. Entendemos como funciones propias aquellas que realizan tareas que no están programadas en el GCAT, y por tanto no son fruto de la conversión del código, sino de la creación de código nuevo necesario para adaptar GCAT a un lenguaje diferente como es el C. • int_prox ( ): Esta función se encarga de, dado un entero decimal de

tipo double, devolver el entero más cercano. En Fortran existe una función, llamada “nint( )” que se encarga de realizar esta tarea, sin embargo, en la librería estándar de C no existe una función análoga. En la búsqueda que se realizó en la librería estándar, se encontraron dos funciones que realizaban tareas parecidas: “ceil( )” que acerca al entero superior más cercano y “fl oor( )” que acerca al entero inferior más cercano; ninguna de ellas nos servía, con lo cual decidimos crear una función nueva para implementar esta funcionalidad. • modStringToGetDouble ( ): Esta función se encarga de, dada una

cadena de caracteres que contenga un entero de tipo double donde exponencial se simboliza con una D (este formato es el que figura en el archivo de efemérides para los datos de posición y diferencial de tiempo), sustituir la D por una E. Esta función tuvo que realizarse exclusivamente para la versión del GCAT para sistema operativo UNIX. El motivo de esta necesidad es que la implementación en UNIX de las funciones de librería estándar de C “atof( )” y “strtod( )” (ambas encargadas de convertir una cadena a una variable double) no interpretan como exponencial el símbolo D, a diferencia de sus análogas en la implementación para sistema operativo Windows.  A continuación, dada su brevedad y sobretodo dado que siendo código propio no existe correspondencia en el GCAT original, se muestra el código de la función. modStringToGetDouble double modStringToGetDouble( modStringToGetDouble(char char *cadena) { char indicadorD[2] indicadorD[2] = {'D'}; double numFinal = 0; int dPos = -1; dPos = strcspn(cadena,indicado strcspn(cadena,indicadorD); rD); if(dPos if (dPos > -1){ cadena[dPos] = 'E'; } numFinal = atof(cadena); atof(cadena); return numFinal; }

Desarrollo de la conversión de GCAT

48

El modo en cómo realiza esta función su cometido, es sencillo. Valiéndonos de la función “strcspn( )” de la librería “string.h” de C, que devuelve la posición de la primera cadena en que aparece cualquiera de los caracteres contenidos en la segunda cadena, encontramos la posición del carácter “D”. Una vez encontrado, accedemos a esa posición y substituimos su contenido por el carácter E. Tras la sustitución ya disponemos de un valor decimal dentro de la cadena que es interpretado correctamente por la función “atof( )”, así que la llamamos para obtener el valor. Nótese que si no existe el carácter “D” en la cadena, ésta es trasformada directamente al tipo “double” mediante la función “atof()”.

4.1.3. Sentencia GOTO En Fortran es muy frecuente el uso de la sentencia GOTO para redireccionar el flujo de la aplicación y para generar bucles que contengan gran número de líneas de código. Como ya se comentaba en el primer apartado del presente capítulo, el uso de esta sentencia aumenta considerablemente la complejidad tanto de mantenimiento como de comprensión del código generado. En el lenguaje C existe también la sentencia GOTO, con propiedades idénticas a la de Fortran. Sin embargo, C nos proporciona suficientes mecanismos de redirección (la estructuración del código en módulos, por ejemplo) y mecanismos de bucle (más avanzados que los de Fortran) como para poder  desarrollar una aplicación sin necesidad de utilizar la sentencia GOTO, que como hemos visto conlleva importantes desventajas. En consecuencia, en nuestra aplicación se ha intentado evitar, cuando ha sido posible, el uso de GOTO, substituyendo esta sentencia por lógica de bucles.

4.1.4. Índice Índice de los arrays En C, los índices de los arrays difieren de los usados en Fortran en cuanto que comienzan contando desde 0, mientras que en este último lenguaje lo hacen desde 1. Este hecho ha comportado, obviamente, cambios evidentes en el código de todo el programa, dado el gran número de arrays empleados para el almacenamiento masivo de datos.

4.1.4. Uso de punteros El lenguaje Fortran no dispone de punteros, mientras que en C son un elemento de gran importancia. En nuestra aplicación, el uso más relevante que hemos dado a los punteros ha sido el de paso de variables por referencia. Sin esta virtud o propiedad de los punteros nos habría sido muy complicada la

49

Software para procesamiento de datos GPS

codificación de la aplicación. Cabe destacar que en Fortran, como puede observarse en el código de las subrutinas, el número de parámetros de retorno de una función no está restringido, mientras que en el lenguaje C sí lo está, pudiendo devolverse únicamente un valor de retorno. Es por ello que, para que nuestras funciones fuesen capaces de devolver los mismos parámetros, ha sido necesario que el cambio de valor de éstos se realizase de forma implícita mediante el paso de variables por referencia. - Indexado de los arrays cuando se pasan por referencia El uso de punteros, sin embargo, dificulta el acceso a las variables cuando éstas son arrays o matrices de datos, dado que no es posible acceder a sus posiciones mediante la indexación convencional. Imaginemos que disponemos de una matriz de datos con la siguiente declaración: double satelite[10][25][15];

Si esta matriz la pasamos por referencia a una función, ésta internamente no puede acceder a las posiciones de la siguiente forma (que es la convencional) satelite[5][2][1] = 0E0;

dado que realmente no tenemos la matriz, sino únicamente un puntero a ella, con lo cual, el lenguaje C desconoce de cuantas dimensiones es la matriz y únicamente permite que la tratemos como si fuese un array de una sola dimensión. Dada esta situación, para el acceso a una posición determinada de la matriz se debe multiplicar cada índice por el tamaño de la siguiente dimensión: satelite [5*25 + 2*15 + 1] = 0E0;

4.1.5. Utilización Utilización de librerías estándar de C Es una premisa básica e importante de la programación la reutilización de código cuando esto sea posible. Es por ello que ante la implementación de cualquier funcionalidad básica que presumiblemente debería constar en las librerías estándar de C, se ha buscado si existía una función de librería, antes que desarrollar por nuestra cuenta la funcionalidad. El uso de funciones de librería estándar proporciona al código una gran legibilidad ya que existe numerosa documentación sobre las librerías y sus funciones son de conocimiento común entre los desarrolladores.

Desarrollo de la conversión de GCAT

50

4.1.6. Problemática de lectura de ficheros La lectura de ficheros es posiblemente la problemática que más quebraderos de cabeza nos ha dado. La gran diferencia en el tratamiento de los ficheros entre Fortran y C y la complejidad de formato de algunos de los ficheros, principalmente los ficheros de datos de observación (rnx) y de efemérides (eph), han complicado la realización de esta tarea. Cabe destacar los siguientes aspectos: -

En el lenguaje Fortran sirven las mismas funciones de lectura y escritura tanto para referencias a ficheros como para cadenas de caracteres. De modo que el tratamiento en ambos casos, es el mismo. Sin embargo, en C las funciones de librería encargadas de la lectura y escritura de ficheros restringen su uso a punteros tipo FILE. De esta forma, una función que nos sería muy útil para leer las variables contenidas en una línea de fichero capturada en una cadena, como es fscanf(), únicamente podemos utilizarla si directamente leemos del fichero. Si por cualquier razón, nos hemos visto obligados a almacenarla en una cadena, el tratamiento para recuperar los valores debemos realizarlo con funciones de la librería “string.h”, siendo esta tarea mucho más engorrosa y propensa a errores.

-

Muy ligado al aspecto anterior tenemos la capacidad de Fortran por  acceder a fragmentos de una cadena de caracteres mediante la especificación de los índices de inicio y final “cad(8:30)”. En el lenguaje C, no existe ninguna función de la librería “string.h” que realice esta funcionalidad. Para conseguir los mismo resultados necesitamos utilizar, por ejemplo, la función “strtok()” que devuelve el contenido de una cadena hasta que encuentra un carácter  delimitador. Como indicábamos antes, este tratamiento es bastante más complejo y propenso a errores que el que se necesita en Fortran.

4.1.7. División del código en métodos por bloques de funcionalidad En Fortran, la totalidad del código se encuentra en un mismo fichero *.F, que contiene en primer lugar la función principal, y seguidamente la declaración con su correspondiente código de las diferentes subrutinas que se iban utilizando a lo largo del programa.  Al realizar la transformación del código a C, éste se ha dividido en módulos, lo que aporta claridad y estructuración, haciéndolo más legible. También facilita la adición de nuevas funcionalidades, la actualización futura del programa, la localización y corrección de errores, etc.

51

Software para procesamiento de datos GPS

CAPÍTULO 5. RESULTADOS OBTENIDOS  A lo largo del proceso de implementación se han realizado diferentes pruebas, con sus correspondientes resultados. El objetivo de estas pruebas era el de verificar el código en puntos intermedios del desarrollo, garantizando de este modo su correcto funcionamiento y la detección de errores. El proceso de testeo se centró primeramente en el apartado de las subrutinas. La ventaja inherente de empezar por las subrutinas es que éstas ya forman unidades independientes de código organizado a modo de las funciones en C, con lo cual es sencillo construir programas principales ( main) para probarlas, sin deber esperar a finalizar todo el código. Hay subrutinas que internamente para el desempeño de su funcionalidad llaman a otras de las subrutinas definidas. En tales casos, primero se comprobó su funcionamiento sin incluir la llamada (obviándola y suponiendo unos datos de retorno lógicos), para su posterior prueba ya añadiéndolas donde correspondiese.  A continuación, mostraremos resultados obtenidos en las pruebas a partir de unas ciertas entradas, detallando las salidas alcanzadas en cada caso según el lenguaje del código fuente. Entre estos resultados o salidas se encuentran a veces también variables de puntos intermedios para cerciorarse convenientemente de que el procesamiento es correcto.

Tabla 5.1.

sub_cal2dgpsws

Entrada Variables idoy id_GPS idw nw sw

year = 05 xmonth = 4 day = 16 sec = 34

Tabla 5.2.

Salida Fortran 106 9232 6 1318 518434.

C 106 9232 6 1318 518434.000000

sub_GPSnav (Con la función nsteffensen)

Entrada Crs = 3 dn = 0 xMo = 0 Cuc = 1 e=0 Cus = 0 a12 = 68 toe = 1 Cic = 1

Variables

Salida Fortran

C

ex

1.88078953

1.88078953

x

-22104328.4

-22104328.400679

y

-14370842.3

-14370842.185744

z

2982818.68

2982818.782929

Resultados obtenidos

52

Omgg = 1 Cis = 1 xIo = 0 Crc = 0 omgp = 0 Omgd = 0 xId = 0 iGPSweek = 0 sec = 0 iyear = 95 idoy = 27

Tabla 5.3.

sub_bancroft

En esta función o subrutina (la denominación varía según hablemos en términos de lenguaje C o de Fortran) se hace llamada a la función o subrutina invsp (que calcula la matriz inversa de una matriz simétrica positiva), que a su vez invoca a otra función o subrutina llamada chol , la cual calcula la descomposición de Cholesky. Sin embargo, en este caso mostraremos únicamente la prueba de esta función (sub_bancroft), ya que la función invsp también es invocada en diferentes puntos de la función principal y de este modo unimos la prueba de dos funciones enlazadas que tienen solamente cometido algebraico, logrando además dos ensayos.

Entrada

Salida Variables Fortran  Array BTB = {2, 2, coef coef (1) = 84. 0, 1, 1, 2, 1, 1, 0, coef coef (2) = 81. 2} coef coef (3) = 78. xdcr 9.  Array BT1 = {1, 1, dt1 8. 2, 0} dt2 7.85714286 r_rec r_rec(1)=1.42857143  Array BTaj = {2, 0, r_rec r_rec(2)=3.28571429 1, 2} r_rec r_rec(3)=-1.57142857 dt_rec 7.85714286 Tabla 5.4.

C coef [0] = 84.000000 coef [1] = 81.000000 coef [2] = 78.000000 9.000000 8.000000 7.857143 r_rec [0] = 1.428571 r_rec [1] = 3.285714 r_rec [2]= -1.571429 7.857143

invsp (Con la función chol)

Entrada Variables  Array A = {14, 10,  A 10, 10, 9, 10, 10,  A 10, 14}  A

Salida Fortran C A (1) = 0.287878788 A [0] = 0.287879 A (2) = -0.151515152 A [1] = -0.151515 A (3) = 0.606060606 A [2] = 0.606061

53

Software para procesamiento de datos GPS

 A  A  A  A  A  A

n=3 ier = 0

Tabla 5.5.

A (4) = -0.151515152 A (5) = -0.393939394 A (6) = 0.606060606 A (7) = 10. A (8) = 10. A (9) = 14.

sub_car2geo

Entrada x = 4210520.62 y = 1128205.6 z = 4643227.5

Tabla 5.6.

Variables fi lambda h

Salida Fortran 47. 15. 2000.00277

C 47.000000 15.000000 2000.002775

cart2geod_elev

Entrada  Array r_sat = {-38552.01, -15574546.9, 2162755.5}  Array r_sta= {4849202.52, -360329.17, 4114913.06} Tabla 5.7.

A [3] = -0.151515 A [4] = -0.393939 A [5] = 0.606061 A [6] = 10.000000 A [7] = 10.000000 A [8] = 14.000000

Variables fi lambda h elev azim

Salida Fortran 40.4291601 -4.24966129 829.4796774 -14.82126192 -86.5229297

C 40.429160 -4.249661 829.479671 -14.82126192 -86.5229297

sub_klob

Entrada t = 4000 ulat = 47 ulon = 15 elev = 21.0232388 azim = -44.5855419 alpha0 = 1.7695E-8 alpha1 = 2.2352E-8 alpha2=-1.1921E-7 alpha3 = -1.1921E-7 beta0 = 1.1878E5 beta1 = 1.4746E5 beta2 = -1.3107E5 beta3 = -3.2768E5

Variables Tiono sig2_UIRE

Salida Fortran -5609.69953 504197034.

C -5609.699534 504197034.150398

Resultados obtenidos

Tabla 5.8.

54

sub_MOPStrop

Entrada idoy = 150 H = 829.479774 xfir = 47 elevr= 21.0232388 Tabla 5.9.

Salida Fortran -2.60537063 0.0212036749

Variables TC sigma2_trop

sub_gpsws2cal (Con la función sla_DJCL)

Entrada iyear = 04 iweek = 15 wsec = 55.5

C -2.605371 0.021204

Salida Fortran

Variables iyear IY idoy ih imn ss IM ID

* 4 * 1999 339 0 0 55.5000001 12 5

C ** 4 ** 1999 339 0 0 55.500000 12 5

* ERROR: YEAR not consistent with GPSWEEK: 4 1999 ** ERROR: YEAR not consistent with GPSWEEK: iyear = 4; IY = 1999

Tabla 5.10. lagrange0 Entrada t = 2392384 coor = {223948,43980,2398741,230498, 124908,2439081,2439081,20985032, 2902438, 232490, 5300940,3598490, 2349080, 49820, 240981,30549891} n_grad = 2

Tabla 5.1.

Variables

Salida Fortran

C

x

246818.892 246818.891764

y

483060.769 483060.769164

z

31100735.

31100735.001851

lagrange1

Entrada t = 2392384 coor = {223948,43980,2398741,230498, 124908,2439081,2439081,20985032, 2902438, 232490, 5300940,3598490,

Salida Variables Fortran C dt -9461231.07 -9461231.066844

55

Software para procesamiento de datos GPS

2349080, 49820, 240981,30549891} n_grad = 2 El otro gran bloque de pruebas efectuado se centraba en la lectura y escritura de ficheros. Esta parte es primordial y posiblemente la más extensa del código del GCAT dado el gran número de ficheros de datos (de tipos diferentes) que puede utilizar para el cálculo básico y para el cálculo más preciso. La metodología utilizada para estas pruebas consistió en crear un programa principal (main) por cada fichero a leer o escribir. En el caso de los ficheros de lectura, se implementó la lectura secuencial de todo el fichero siguiendo las especificaciones de formato; de este modo podíamos comprobar que una vez integrado en la aplicación (donde en muchos de estos ficheros no se realiza una lectura completa de golpe, sino que se captura un juego de datos, se procesa, se obtienen resultados y así sucesivamente) cada sucesiva lectura del fichero iba a realizarse correctamente. En el caso de los ficheros de escritura, se implementó la escritura secuencial de unos datos de prueba. Dado que disponíamos de ejemplos de estos ficheros de salida, se pudo emular el tipo de dato que iba a contener cada campo para realizar la escritura con datos lo más fieles posibles a los que realmente puede devolver GCAT. Se prestó especial atención al cumplimiento del formato, para evitar a toda costa cualquier diferencia entre el aspecto y la distribución de datos de un fichero de salida del GCAT original y de nuestro GCAT. Para mostrar los resultados obtenidos en las pruebas, expondremos unas capturas de pantalla de la consola de Linux ( shell ) una vez iniciada la ejecución de los programas de ensayo. Para ello hemos escogido los tres ficheros de lectura y uno de escritura de complejidad más elevada (el resto estarán presentes en el Anexo 3):

Resultados obtenidos

Fig. 5.1 Captura de la correcta lectura del “gcat.nml”

Fig. 5.2 Captura de la correcta lectura del “EPH.dat”

56

57

Software para procesamiento de datos GPS

Fig. 5.3 Captura de la correcta lectura del “Rinex.obs”

Fig. 5.4 Captura de la correcta lectura del “dmx.dat”

Bibliografía

58

BIBLIOGRAFÍA [1] Hernández Pajares M., Juan Zornosa, J.M., Sanz Subirana, J., “Procesado de Datos GPS: código y fase. Algoritmos, técnicas y  habilidades.”, Ediciones UPC, Barcelona (2002). [2] Hofmann-Wellenhof, B., Lichtenegger, H., and Collins, J., “ GPS Theory  and Practice”, Springer-Verlang Wien New York. Fourth, revised edition.  Australia (1997). [3] Kaplan, Elliot D., “Understanding GPS. Principes and Applications”,  Artech House Publishers, Boston (1996). [4] El-Rabbany, Ahmed, “Introduction to GPS: The Global Positioning  System”, Artech House mobile communications series, Boston (2002). [5] Bao, James – Tsui, Yen, “ Fundamentals of Global Positioning System Receivers: A Software Approach”, John Wiley & Sons, United States (2000). [6] Vetterling, William T., Teukolsky, Saul A., Press, William H., Flannery, Brian P., “Numerical recipes in C the art of scientific computing ”, Cambrindge University Press, Cambridge (1992). [7] Borse, G.J, “Programación en Fortran 77 con aplicaciones de cálculo numérico en ciencias e ingeniería”, Anaya Multimedia, Madrid (1989). [6] McCracken, Daniel D., “Programación FORTRAN IV ”, Limusa, Mexico (1967). [8] Cela Espín, José M., Peña Basurto, Marco A., “ Introducción a la Programación en C ”, Ediciones UPC, collección Aula Politècnica, Barcelona (2001). [9] Gottfried, Byron, “Programación en C ”, Mc Graw Hill, Segunda Edición, Madrid (1997). [10] Llanos Ferrari, Diego R., “Curso de C bajo UNIX ”, Paraninfo, Madrid (2001). [11] García-Asenjo Villamayor, Luis, “Aplicación de la programación orientada a objetos al tratamiento de datos GPS. Modelización, desarrollo de software y resultados.” Tesis doctoral, Universidad de Valencia (2003). [12] http://tycho.usno.navy.mil/gps.html [13] http://www.gmat.unsw.edu.au/snap/gps/gps_survey/principles_gps.htm

59

Software para procesamiento de datos GPS

[14] http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html [15] http://gps.losangeles.af.mil/jpo/gpsoverview.htm [16] http://www.gps.oma.be/gb/modern_gb_ok_css.htm [17] ftp://epncb.oma.be/pub/data/format/rinex210.txt [18] http://sopac.ucsd.edu/dataArchive/hatanaka.html [19] http://anjuta.sourceforge.net/ [20] http://www.stack.nl/~dimitri/doxygen/ [21] http://www.gnu.org/software/gdb/ [22] http://www.gnu.org/software/ddd/

 Anexos

60

ANEXOS

TÍTULO: Software para procesamiento de datos GPS AUTOR: Natalia Jiménez Vega DIRECTOR: Dagoberto José Salazar Hernández FECHA: 24 de febrero de 2006

1

Software para procesamiento de datos GPS

ANEXO 1. BLOQUES DE NAVSTAR En la actualidad la constelación NAVSTAR-GPS está constituida por: CURRENT BLOCK II/IIA/IIR/IIR-M SATELLITES ========================================= LAUNCH LAUNCH FREQ US SPACE ORDER PRN SVN DATE STD+ PLANE+ COMMAND ** ----------------------------------------------------------------*II-1 14 14 FEB 1989 19802 *II-2 13 10 JUN 1989 20061 *II-3 16 18 AUG 1989 20185 *II-4 19 21 OCT 1989 20302 *II-5 17 11 DEC 1989 20361 *II-6 18 24 JAN 1990 20452 *II-7 20 26 MAR 1990 20533 *II-8 21 02 AUG 1990 20724 II-9 15 15 01 OCT 1990 Cs D5 20830 *IIA-10 23 26 NOV 1990 20959 IIA-11 24 24 04 JUL 1991 Cs D1 21552 IIA-12 25 25 23 FEB 1992 Cs A2 21890 *IIA-13 28 10 APR 1992 21930 IIA-14 26 26 07 JUL 1992 Rb F2 22014 IIA-15 27 27 09 SEP 1992 Cs A4 22108 IIA-16 01 32 22 NOV 1992 Cs F6 22231 *IIA-17 29 29 18 DEC 1992 Rb F5 22275 *IIA-18 22 03 FEB 1993 22446 *IIA-19 31 30 MAR 1993 22581 IIA-20 07 37 13 MAY 1993 Rb C4 22657 IIA-21 09 39 26 JUN 1993 Cs A1 22700 IIA-22 05 35 30 AUG 1993 Rb B4 22779 IIA-23 04 34 26 OCT 1993 Rb D4 22877 IIA-24 06 36 10 MAR 1994 Rb C1 23027 IIA-25 03 33 28 MAR 1996 Cs C2 23833 IIA-26 10 40 16 JUL 1996 Cs E3 23953 IIA-27 30 30 12 SEP 1996 Rb B2 24320 IIA-28 08 38 06 NOV 1997 Cs A3 25030 ***IIR-1 42 17 JAN 1997 IIR-2 13 43 23 JUL 1997 Rb F3 24876 IIR-3 11 46 07 OCT 1999 Rb D2 25933 IIR-4 20 51 11 MAY 2000 Rb E1 26360 IIR-5 28 44 16 JUL 2000 Rb B3 26407 IIR-6 14 41 10 NOV 2000 Rb F1 26605 IIR-7 18 54 30 JAN 2001 Rb E4 26690 IIR-8 16 56 29 JAN 2003 Rb B1 27663 IIR-9 21 45 31 MAR 2003 Rb D3 27704 IIR-10 22 47 21 DEC 2003 Rb E2 28129 IIR-11 19 59 20 MAR 2004 Rb C3 28190 IIR-12 23 60 23 JUN 2004 Rb F4 28361 IIR-13 02 61 06 NOV 2004 Rb D7 28474 IIR-M1 17 53 26 SEP 2005 Rb D6 * **

Satellite is no longer in service. US SPACE COMMAND, previously known as the NORAD object number; also referred to as the NASA Catalog number. Assigned at successful launch.

 Anexos

***

2

Unsuccessful launch.

Los diferentes tipos de satélites GPS son: • Bloque I, Navigation Development Satellites. Entre 1978 y 1985 se

lanzaron los 11 satélites de este grupo. No estaba implementada la S/A. Tenían una masa de 845 Kg. y no una vida media prevista 4,5 años, aunque algunos llegaron a durar hasta 10. Eran capaces de proporcionar servicio de posicionamiento durante 3 o 4 días sin contacto con el centro de control. • Bloque II y IIA, Operacional Satellites. Actualmente operativos. Consta

de un total de 28 satélites que empezaron a lanzarse a partir de 1989. Tienen una masa de unos 1500 Kg., y una vida media prevista de unos 7,5 años. A partir de 1990 s empleó una versión mejorada, el bloque IIA (advanced) con capacidad de comunicación mutua. Son capaces de proporcionar servicio de posicionamiento durante 180 días sin contacto con el segmento de control. No obstante, bajo el modo normal de operación deben comunicarse diariamente. Cada uno contiene 4 relojes atómicos: 2 de Cesio (Cs) y 2 de Rubidio (Rb). Tienen implementados la S/A (Selective Availabity) y la A/S (Anti Spoofing). • Bloque IIR, Replacement Operacional Satellites. Desde 1997 se están

utilizando estos satélites de repuesto del bloque II. Su masa es de unos 2000 Kg. y una vida media prevista de 10 años. Estos satélites tendrán capacidad de determinar automáticamente su órbita y generar su propio mensaje de navegación. Serán capaces de medir distancias entre ellos y transmitir observaciones a otros satélites o al segmento de control. Un satélite de este tipo completamente desarrollado ha de poder operar  durante medio año sin apoyo del segmento de control y sin degradación en la exactitud de las efemérides. Cada satélite está equipado con 3 relojes atómicos Rb y tienen implementados la S/A y el A/S. Se prevé que algunos puedan estar equipados con masers de hidrógeno. • Bloque IIR-M. El primero y el único de esta categoría fue lanzado el 26

de septiembre del 2005. Es el primer satélite GPS modernizado que transmitirá 2 nuevas señales militares y una segunda señal civil (L2C). Su masa es similar a la del bloque IIR. Está prevista un segundo lanzamiento de este tipo de satélite NAVSTAR-GPS a finales de enero del año que viene (aproximadamente el 26 de enero). • Bloque IIF, Follow-on Operacional Satellites. Su lanzamiento está

previsto a partir del 2006-2007. Su vida media teórica es de unos 12 años, y dispondrán de sistemas de navegación inercial. Dispondrán de procesadores más rápidos y con más memoria, y una nueva señal civil en una tercera frecuencia (L5), es decir, transmitirá a una frecuencia de 1176,45MHz.

3

Software para procesamiento de datos GPS

ANEXO 2. FICHEROS UTILIZADOS POR GCAT En este Anexo se presenta un ejemplo de los ficheros que necesita el GCAT para su funcionamiento (algunos son opcionales y sirven para aumentar sus prestaciones). Debido a la longitud de algunos de ellos, únicamente se muestra el fragmento inicial.

Rinex.obs 2.10 OBSERBATION DATA GPS/GEO RINEX VERSION / TYPE B2AConv V2.0 gAGE/UPC 25-Aug-05 17:41 PGM / RUN BY / DATE BIT 2 OF LLI ( +4) FLAGS DATA COLLECTED UNDER "AS" CONDITION COMMENT UPC1 MARKER NAME gAGE / UPC gAGE / UPC OBSERVER / AGENCY 1 NOVATEL MILLENIUM OEM-3 REC # / TYPE / VERS 1 NOVATEL PINWELL ANT # / TYPE 4789032.7143 176594.9690 4195013.2268 APPROX POSITION XYZ 0.0000 0.0000 0.0000 ANTENNA: DELTA H/E/N 1 1 WAVELENGTH FACT L1/2 6 C1 P2 L1 L2 D1 D2 # / TYPES OF OBSERV SNR is mapped to signal strength [0-9] COMMENT L1 SNR: >44 >35 >26 >17 >8 >0 n/a COMMENT sig: 9 8 7 6 5 4 0 COMMENT L2 SNR: >50 >42 >34 >26 >18 >8 >0 n/a COMMENT sig: 9 8 7 6 5 4 3 0 COMMENT 1 INTERVAL 2005 5 29 0 0 1.000000 TIME OF FIRST OBS 2005 5 29 23 59 58.000000 TIME OF LAST OBS END OF HEADER 5 5 29 0 0 1.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23014409.454 23014407.0624 120941560.43748 94240180.12946 2797.89748 2180.13646 24255343.500 24255342.1054 127462772.33948 99321651.17545 -3695.18948 -2879.38745 20470437.022 20470435.1684 107572939.39549 83823051.74446 1206.77349 940.33646 22776509.627 22776510.7274 119691395.32948 93266004.45346 413.23948 322.04146 25645275.200 25645267.5044 134766830.22557 105013083.29252 3267.93857 2546.52552 22819488.680 22819482.0574 119917242.10248 93442018.45145 -397.25248 -309.50445 21908495.399 21908494.0994 115130041.00648 89711775.03946 -2249.86448 -1753.13246 20152531.463 20152529.0824 105902409.00449 82521341.80447 -273.38349 -213.01947 22446207.110 22446205.2894 117955641.35348 91913499.83946 -2050.81248 -1597.98946 5 5 29 0 0 2.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23013877.100 23013874.0324 120938762.72848 94238000.06246 2797.39948 2179.75046 24256046.945 24256045.3114 127466467.69948 99324530.69045 -3695.36748 -2879.47645 20470207.451 20470205.1634 107571732.82549 83822111.55546 1206.28449 939.95546 22776431.001 22776432.3784 119690982.41848 93265682.71146 412.74548 321.63046 25644652.846 25644645.5424 134763559.91957 105010536.47752 3268.41957 2546.84452 22819564.270 22819559.1114 119917639.48848 93442328.14146 -397.85948 -309.97846 21908923.525 21908922.5254 115132290.91048 89713528.21646 -2250.06848 -1753.28546 20152583.595 20152581.1544 105902682.54149 82521554.95646 -273.72449 -213.28546 22446597.440 22446595.6124 117957692.42248 91915098.11246 -2051.45748 -1598.51146 5 5 29 0 0 3.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23013344.876 23013341.6714 120935965.25848 94235820.17846 2797.35148 2179.71446 24256750.108 24256745.9174 127470163.21748 99327410.37445 -3695.62048

 Anexos

-2879.66745 20469977.990 20469975.6864 107570526.79049 83821171.78846 939.61646 22776352.555 22776353.9274 119690570.16548 93265361.47446 320.99246 25644030.679 25644026.4714 134760291.46657 105008001.48152 2546.71452 22819640.105 22819634.8574 119918037.57148 93442638.36646 -310.44746 21909351.792 21909350.7214 115134541.03348 89715281.54346 -1753.37546 20152635.800 20152633.5464 105902956.44649 82521768.39446 -213.53246 22446987.819 22446985.7664 117959744.01248 91916696.78146 -1598.85746 5 5 29 0 0 4.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23012812.509 23012810.7384 120933167.97048 94233640.44646 2179.73946 24257453.465 24257449.1774 127473858.81248 99330290.11045 -2879.73145 20469748.587 20469746.3084 107569321.23749 83820232.39046 939.23046 22776274.212 22776275.2194 119690158.51948 93265040.71146 320.39346 25643409.041 25643404.3884 134757022.83047 105005454.18356 2546.95456 22819715.845 22819711.4324 119918436.30348 93442949.08546 -310.91246 21909779.994 21909777.6534 115136791.32448 89717035.00846 -1753.56546 20152687.980 20152685.7294 105903230.66149 82521982.07647 -213.78747 22447378.274 22447376.2604 117961796.03348 91918295.77846 -1599.26846 5 5 29 0 0 5.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23012280.175 23012278.4864 120930370.96248 94231460.95046 2179.17646 24258156.724 24258152.7024 127477554.54748 99333169.89645 -2880.06445 20469519.258 20469517.0334 107568116.16749 83819293.37446 938.84046 22776196.008 22776196.9954 119689747.52448 93264720.45846 320.00346 25642786.971 25642785.1894 134753754.06257 105002917.91456 2546.82456 22819791.683 22819787.4094 119918835.69648 93443260.28546 -311.60246 21910208.204 21910205.9164 115139041.82148 89718788.64346 -1753.69346 20152740.142 20152737.8054 105903505.22849 82522196.02947 -214.06947 22447768.851 22447767.3784 117963848.57148 91919895.15546 -1599.60446 5 5 29 0 0 6.0000000 0 9G25G 9G 6G 1G21G 2G 5G30G14 23011747.923 23011745.5504 120927574.15548 94229281.61346 2179.21646 24258859.930 24258855.9964 127481250.40448 99336049.77445 -2880.03845 20469290.075 20469287.9604 107566911.60249 83818354.75446 938.38146 22776117.910 22776118.3734 119689337.17748 93264400.70246 319.36646 25642165.434 25642163.1184 134750488.04757 105000370.61552 2548.09252 22819867.764 22819864.8404 119919235.77248 93443572.04046 -312.07446 21910636.445 21910634.1584 115141292.53248 89720542.43746 -1753.94346 20152792.517 20152790.1084 105903780.15349 82522410.25746 -214.40846 22448159.603 22448158.0394 117965901.60048 91921494.90046 -1599.94346

4

1205.83549 411.86248 3268.65957 -398.43248 -2250.14448 -274.04649 -2051.87048

2797.36048 -3695.74248 1205.34949 411.32548 3268.91947 -399.01148 -2250.40448 -274.37049 -2052.38748

2796.63048 -3695.95848 1204.85149 410.66548 3268.48557 -399.88548 -2250.56748 -274.72849 -2052.78848

2796.68248 -3696.08848 1204.24549 409.85848 3270.14057 -400.50548 -2250.89048 -275.15749 -2053.27648

5

Software para procesamiento de datos GPS

EPH.dat 2.10 N: GPS NAV DATA B2AConv V2.0 gAGE/UPC 25-Aug-05 17:41 REALTIME EPHEMERIS FILE 1.0245E-08 2.2352E-08 -5.9605E-08 -1.1921E-07 9.6256E+04 1.3107E+05 -6.5536E+04 -5.8982E+05 3.725290298462E-09 9.769962616701E-15 319488 1325 13 2

25

30

9

5

6

14

1

RINEX VERSION / TYPE PGM / RUN BY / DATE COMMENT ION ALPHA ION BETA DELTA-UTC: A0,A1,T,W LEAP SECONDS END OF HEADER 5 5 29 2 0 0.0-2.575805410743E-05-1.136868377216E-13 0.000000000000E+00 1.920000000000E+02 2.809375000000E+01 4.629121392915E-09 1.789485647831E-01 1.443549990654E-06 9.443252347410E-03 8.793547749519E-06 5.153689111710E+03 7.200000000000E+03-8.195638656616E-08 5.418770719265E-01-1.676380634308E-07 9.550867171383E-01 2.122812500000E+02 1.846079520256E+00-8.119266771480E-09 -4.293035965037E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.800000000000E+00 0.000000000000E+00-1.722946763039E-08 4.480000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 9.401096031070E-05 9.094947017729E-13 0.000000000000E+00 8.400000000000E+01-1.061875000000E+02 4.825915304457E-09-2.255215633503E+00 -5.284324288368E-06 1.204112719279E-02 5.686655640602E-06 5.153704689026E+03 7.200000000000E+03 2. 011656761169E-07-2.689273653419E+00 1.3 96983861923E-07 9.492799505545E-01 2.625625000000E+02-1.460408709553E+00-8.100337411567E-09 -3.643008888800E-11 1.000000000000E+00 1.325000000000E+03 0.000000000000E+00 2.800000000000E+00 0.000000000000E+00-7.450580596924E-09 8.520000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 2.156472764909E-04 2.160049916711E-11 0.000000000000E+00 2.350000000000E+02-4.309375000000E+01 4.860916762409E-09 1.449587353840E+00 -2.311542630196E-06 8.015189669095E-03 1.047179102898E-05 5.153703695297E+03 7.200000000000E+03-1.844018697739E-07-1.586710663565E+00-6.519258022308E-08 9.430940541214E-01 1.690625000000E+02 1.265060941357E+00-8.129981503505E-09 3.092985978138E-10 1.000000000000E+00 1.325000000000E+03 0.000000000000E+00 2.800000000000E+00 0.000000000000E+00-8.381903171539E-09 7.470000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0-4.536285996437E-05-1.705302565824E-12 0.000000000000E+00 1.440000000000E+02-1.285937500000E+02 4.634478758928E-09-3.053459510856E+00 -6.644055247307E-06 1.678898383398E-02 6.632879376411E-06 5.153673479080E+03 7.200000000000E+03 2.216547727585E-07-2.637067647241E+00-1.993030309677E-07 9.560151902815E-01 2.453750000000E+02 1.144448868238E+00-7.973903573662E-09 -7.714607058635E-11 1.000000000000E+00 1.325000000000E+03 0.000000000000E+00 4.000000000000E+00 0.000000000000E+00-5.587935447693E-09 4.000000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 1.023011282086E-04 2.842170943040E-12 0.000000000000E+00 5.500000000000E+01-4.371875000000E+01 4.964849663060E-09 2.390586895 483E+00 -2.395361661911E-06 6.130944588222E-03 1.094117760658E-05 5.153816995621E+03 7.200000000000E+03-5.029141902924E-08-1.630667505836E+00-7.450580596924E-08 9.363397467203E-01 1.513437500000E+02 9 .425624413948E-01-8.043192174096E-09 2.957266039144E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-4.190951585770E-09 5.500000000000E+01 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 5.630776286125E-04 4.365574568510E-11 0.000000000000E+00 2.090000000000E+02 1.593750000000E+01 5.314507084838E-09-2.701038936542E+00 6.966292858124E-07 6.346127251163E-03 6.698071956635E-06 5.153790805817E+03 7.200000000000E+03 6.891787052155E-08-5.334302136581E-01-3.166496753693E-08 9.345489989399E-01 2.33 8437500000E+02-1.921844438181E+00-8.232842930954E-09 5.285934466102E-11 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.800000000000E+00 0.000000000000E+00-4.656612873077E-09 7.210000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0-2.950569614768E-05 3.410605131648E-13 0.000000000000E+00 5.200000000000E+01 1.081250000000E+01 4.3026792 23860E-09-5.349932626282E-01 4.991888999939E-07 1.674955827184E-03 3.052875399590E-06 5.153729755402E+03 7.200000000000E+03-1.098960638046E-07 2.640890132223E+00-2.793967723846E-08 9.826634002635E-01 3.337500000000E+02-1.861134891510E+00-8.244271978448E-09 1.353627812603E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-9.313225746155E-09 5.200000000000E+01 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 1 59 44.0 4.055369645357E-04 1.932676241267E-12 0.000000000000E+00 2.600000000000E+01 3.843750000000E+00 4.248391248262E-09-1.341492157024E+00 3.241002559662E-07 5.852986709215E-03 3.324821591377E-06 5.153638982773E+03 7.184000000000E+03-7.450580596924E-08 2.667832717895E +00 2.123415470123E-07 9.841661521392E-01 3.280000000000E+02-1.670428887771E+00-8.147482232481E-09 1.235765760318E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00

 Anexos

21

6

10

16

30

15

21

2.000000000000E+00 0.000000000000E+00-3.259629011154E-09 2.600000000000E+01 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 1.053889282048E-04 2.046363078989E-12 0.000000000000E+00 1.040000000000E+02 3.150000000000E+01 4.670194532348E-09-2.836673321893E+00 1.689419150352E-06 9.956947062165E-03 9.242445230484E-06 5.153627502441E+03 7.200000000000E+03-1.098960638046E-07 5.843231645481E-01-5.401670932770E-08 9.483157002868E-01 1.962812500000E+02-3.123341975204E+00-7.935330538369E-09 -3.932306653499E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-1.164153218269E-08 1.040000000000E+02 1.800000000000E+01 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 1 59 44.0 5.630794912577E-04 4.376943252282E-11 0.000000000000E+00 2.350000000000E+02 1.59 3750000000E+01 5.314507084838E-09-2.703375237195E+00 6.966292858124E-07 6.346120964736E-03 6.698071956635E-06 5.153790811539E+03 7.184000000000E+03 6.891787052155E-08-5.334300834584E-01-3.166496753693E-08 9.345489726073E-01 2.338437500000E+02-1.921841778596E+00-8.232842930954E-09 5.357366012941E-11 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-4.656612873077E-09 2.350000000000E+02 1.308000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 6.436835974455E-05 6.821210263297E-13 0.000000000000E+00 4.600000000000E+01 9.475000000000E+01 3.949807382475E-09 5 .592195181033E-01 4.984438419342E-06 6.562344962731E-03 7.696449756622E-06 5.153667612076E+03 7.200000000000E+03 5.029141902924E-08 1.606435666402E+00 1.285225152969E-07 9.775000981970E-01 2.402500000000E+02 3.653463289068E-01-7.909972339241E-09 7.857470152314E-11 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.800000000000E+00 0.000000000000E+00-2.328306436539E-09 5.580000000000E+02 4.038000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 1 59 44.0 2.949032932520E-06 3.410605131648E-13 0.000000000000E+00 2.300000000000E+02-4.009375000000E+01 4.52 2688388125E-09 2.246185855045E+00 -1.847743988037E-06 2.934174844995E-03 9.521842002869E-06 5.153765211105E+03 7.184000000000E+03 8.940696716309E-08-1.548990669702E+00-4.470348358154E-08 9.611147764140E-01 1.920625000000E+02-1.124677035930E+00-7.863184676061E-09 1.839362331110E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-9.778887033463E-09 2.300000000000E+02 4.248000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 1 59 44.0 2.156561240554E-04 2.160049916711E-11 0.000000000000E+00 2.100000000000E+01-4.309375000000E+01 4.860202446940E-09 1.4472532 41712E+00 -2.311542630196E-06 8.015198400244E-03 1.047179102898E-05 5.153703685760E+03 7.184000000000E+03-1.825392246246E-07-1.586710571401E+00-6.519258022308E-08 9.430940497327E-01 1.690625000000E+02 1.265061419732E+00-8.129624345771E-09 3.092985978138E-10 1.000000000000E+00 1.325000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-8.381903171539E-09 2.100000000000E+01 4.458000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 2 0 0.0 4.377290606499E-04 5.456968210638E-12 0.000000000000E+00 2.320000000000E+02 3.381250000000E+01 4.397683181156E-09-2.719067374265E+00 1.855194568634E-06 9.132540668361E-03 9.030103683472E-06 5.153544061661E+03 7.200000000000E+03-7.450580596924E-09 6.167534894813E-01 6.7 05522537231E-08 9.617780941924E-01 2.048750000000E+02 2.415179688008E+00-7.799967757108E-09 -4.296607542379E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 4.000000000000E+00 0.000000000000E+00-2.793967723846E-09 1.000000000000E+03 4.728000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00 5 5 29 4 0 0.0 1.054033637047E-04 2.046363078989E-12 0.000000000000E+00 1.050000000000E+02 2.681250000000E+01 4.666265797272E-09-1.786540122259E+00 1.154839992523E-06 9.957217611372E-03 8.981674909592E-06 5.153626091003E+03 1.440000000000E+04-2.235174179077E-08 5.842652812684E-01-1.341104507446E-07 9.483128490595E-01 2.016562500000E+02-3.123264699483E+00-8.012833766689E-09 -3.275136422578E-10 1.000000000000E+00 1.32 5000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-1.164153218269E-08 1.050000000000E+02 7.218000000000E+03 0.000000000000E+00 1.000000000000E+00 0.000000000000E+00

6

7

Gcat.nml $parameters mrealtime= 0 idat="C1" ele_min= 5.0 loss_lock="DEF" mwrite_lock=0 nsmooth=100 coordinates= 0 eq_axis= 6378137.0d0 f_fact= 298.257223563d0 iorb=0 isp3_file=1 n_grad_orb=10 mclk_int=1 n_grad_clk=1 make_relat=1 make_iono=1 make_tropo=1 make_TGD =1 make_phc= 1 sat_corr_emis=1 wmodel=1 wsatpos=1 wdmx=1 mfilter=1 P0_xx=9.d10 P0_yy=9.d10 P0_zz=9.d10 P0_tt=9.d10 fi_x= 1.d0 fi_y= 1.d0 fi_z= 1.d0 fi_t= 0.d0 idQdt=0 Q_xx= 0.d0 Q_yy= 0.d0 Q_zz= 0.d0 Q_tt= 9.d10 iprint_mess=1 $end

Software para procesamiento de datos GPS

 Anexos

8

SP3.txt 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 2005

5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15

0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

8879.650046 6522.157282 139.637465 -9742.788492 12806.318155 23416.564991 -19306.347988 -17042.185506 21407.965821 1005.445624 -22516.217439 -23975.984503 20060.726433 13543.596862 1779.822165 15088.478939 -8561.842993 -13265.496750 22503.394874 12346.559439 -19277.263560 -20746.283553 5635.254777 8289.577725 -23341.906127 -12503.145741 1819.540126 15446.106418 -23258.986108 10588.477485 4569.424790 2006.171843 -11850.564743 12744.151243 22264.667226 -19884.486856 -18842.512782 20757.025615 775.355745 -21778.795746 -22938.012144 20671.881878 15476.820210 2039.683485 15070.158557 -6350.748325 -13178.028936 23665.328268 12440.381130 -17500.318607 -22172.415895 7840.910106 6128.134912 -24443.488644 -12672.379218 -293.027199 15518.062576 -23154.143464

-17814.698454 18509.233461 -17871.014696 11958.419125 16838.871076 -3160.315766 17272.587968 5254.410229 15500.096626 26230.452946 -13642.053401 5359.464086 -16068.978650 -8677.246495 -26417.574263 -5309.498254 -12686.441566 -12593.223133 2641.289964 -17306.048072 -3461.222492 185.271700 -14639.243312 12341.006663 -2397.399452 15561.475130 15331.805877 2386.925736 13026.122370 -18626.294978 17581.164265 -19006.486912 10699.592395 18595.509332 -2139.012362 17270.617683 4054.785489 15423.581523 26386.131626 -13763.964279 4579.382029 -16211.437273 -7333.341121 -26070.346718 -2849.401562 -13849.026925 -14719.661135 3592.120843 -15365.485219 -4670.752977 -885.102260 -13654.128953 13550.668131 -3175.844926 13456.477415 16559.095406 4846.920423 12592.155789

17756.169426 17659.247525 -19695.800412 21625.413626 16001.864618 12432.932704 5929.825155 -19966.038262 -4558.989559 -2878.270070 -4273.399701 9931.973806 6700.019843 -21381.153877 1720.815732 -21095.606583 -21598.895722 19178.508023 -14229.308584 -15777.357914 17894.540393 16937.855369 21823.338373 -22364.161279 -12273.234953 -17107.686904 -21331.842159 21232.389425 -1851.710501 15863.659125 19124.086528 -18460.817099 21259.270727 14018.747279 14601.766790 3180.145006 -18600.861229 -7279.830557 22.054155 -6896.480363 12444.707564 3884.631729 -20578.206069 4550.910464 -21601.193150 -21648.969588 17673.804406 -12002.224865 -17590.198384 19365.897143 14979.738330 21785.864729 -22307.376388 -9857.592484 -18702.721909 -20466.879816 20771.675043 -4609.834605

405.489629 -25.789663 4.411173 191.057709 102.247366 562.732234 131.817068 -30.406637 -45.387149 64.328242 229.966972 -0.679124 -29.534055 437.659746 2.920033 -158.344212 -21.461450 -64.843303 105.348262 24.057560 195.424000 20.332264 93.976331 23.241718 1.228187 45.822132 76.315096 215.468804 87.862179 405.490635 -25.789562 4.414348 191.035825 102.250963 562.771534 131.840234 -30.407555 -45.388788 64.328402 229.970603 -0.677923 -29.533719 437.665368 2.920494 -158.347219 -21.461932 -64.841431 105.349709 24.058535 195.422027 20.334535 93.976312 23.242029 1.227968 45.821873 76.340482 215.488341 87.890331

9

Software para procesamiento de datos GPS

SP3.dat #aP1999 8 23 0 0 0.00000000 96 ORBIT ITR97 HLM IGS ## 1024 86400.00000000 900.00000000 51413 0.0000000000000 + 27 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 + 21 22 23 24 25 26 27 29 30 31 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ++ 4 5 5 5 5 5 5 5 5 4 5 6 8 6 5 8 5 ++ 4 5 5 5 4 4 5 5 4 4 0 0 0 0 0 0 0 ++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc %c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc %f 0.0000000 0.000000000 0.00000000000 0.000000000000000 %f 0.0000000 0.000000000 0.00000000000 0.000000000000000 %i 0 0 0 0 0 0 0 0 0 %i 0 0 0 0 0 0 0 0 0 /* FINAL ORBIT COMBINATION FROM WEIGHTED AVERAGE OF: /* cod emr esa gfz jpl ngs sio /* REFERENCED TO GPS CLOCK AND TO WEIGHTED MEAN P OLE: /* CLK ANT Z-OFFSET (M): II/IIA 1.023; IIR 0.000 * 1999 8 23 0 0 0.0000 P 1 -1566.473948 -16036.651317 21269.298516 95.735973 P 2 -11904.142559 15696.057909 -17038.496657 -101.219327 P 3 4068.904313 -18253.548980 -18897.149884 34.627912 P 4 -8140.319204 12473.913821 22088.629196 96.260013 P 5 12439.401525 16841.326732 16389.318117 213.283159 P 6 23645.835636 -2854.046435 12166.354080 -0.020680 P 7 -20556.398548 15914.643138 4936.178299 575.694681 P 8 23717.417290 9411.784848 6904.981354 129.166987 P 9 19873.757144 16842.102060 -6296.853190 -7.044422 P 10 1190.364229 26335.304168 -2370.687442 39.786734 P 13 -17763.249728 17303.171815 -9367.378098 -110.258840 P 14 -12001.978408 -14004.091546 19079.844927 30.758240 P 15 -19510.811054 -17414.532669 -4899.008581 717.704472 P 16 -14867.443233 -1172.389942 21930.828176 132.142078 P 17 21521.001933 3061.563625 -15717.250072 -219.209750 P 18 -23760.126202 6004.309245 10113.007596 26.094755 P 19 -24380.690199 -4066.428977 -9948.453799 39.785454 P 21 10463.075696 -18966.534457 -14675.176761 27.939504 P 22 2691.628294 -25688.452546 4663.329412 54.771762 P 23 14683.747818 -4971.084788 -21114.338033 4.158302 P 24 5489.142675 18268.139946 18785.215092 586.057091 P 25 5846.077410 -14789.595066 21478.345478 2.048161 P 26 7425.390677 13253.593449 -21777.302664 670.452144 P 27 -17992.586093 5653.804585 -18811.909219 29.885057 P 29 20889.157629 -15744.958917 4389.758119 522.909578 P 30 15250.896118 4319.512013 21143.978129 -29.302128 P 31 -10741.343036 -11516.743246 -21618.013519 23.816404 * 1999 8 23 0 15 0.0000 P 1 519.824459 -17132.450450 20441.189554 95.742754 P 2 -12281.052561 13561.456919 -18542.691881 -101.287332 P 3 5906.393431 -19229.008068 -17382.792093 34.625055 P 4 -10284.985110 11210.439328 21885.913785 96.254429 P 5 12324.152550 18617.851927 14445.715117 213.392194 P 6 22456.007864 -1932.383137 14398.502974 0.000599 P 7 -21028.047417 15866.152199 2115.274017 575.580550 P 8 24155.183168 9982.205660 4144.641000 129.273107 P 9 19008.779711 16663.940245 -8915.725421 -7.140591 P 10 954.497554 26446.612730 513.755395 39.983467 P 13 -18681.402199 17574.686730 -6706.627614 -110.461024 P 14 -11819.490445 -16092.444317 17479.573854 30.633352 P 15 -18833.626882 -17192.670473 -7678.502478 717.708845 P 16 -14771.725981 -3674.682319 21734.910820 132.156433 P 17 22801.447994 4085.317322 -13557.978021 -219.275944 P 18 -22786.976494 5069.544997 12514.112151 26.024505 P 19 -25157.520363 -4767.331779 -7416.545585 39.780603 P 21 10682.318336 -17113.658030 -16687.584339 28.047411 P 22 3093.897686 -24988.939734 7379.918963 54.621663 P 23 14657.350500 -2439.062510 -21585.313039 4.117612 P 24 3587.141902 17221.051474 20194.077240 586.093232 P 25 8018.341220 -13711.493507 21471.185881 2.232863 P 26 5266.122171 14483.459717 -21573.882471 670.522381

 Anexos

P P P P * P P P P P P P P P P P P P P P P P P P P P P P P P P P

10

27 -19772.648826 4577.887807 29 21302.127681 -15687.007985 30 15250.320863 6743.664599 31 -8670.317443 -12809.548797 1999 8 23 0 30 0.0000 1 2452.415762 -18274.759099 2 -12775.813295 11294.847557 3 7540.879627 -20185.030050 4 -12455.422155 10087.695841 5 12268.865207 20166.071375 6 21117.498171 -820.253624 7 -21239.459346 15653.265125 8 24339.699362 10380.773156 9 17878.445607 16409.234294 10 700.078207 26243.442669 13 -19328.810822 17720.170482 14 -11745.565595 -17988.883064 15 -17878.942962 -16858.140563 16 -14810.390857 -6133.061691 17 23920.141539 4900.758558 18 -21652.284513 3929.997392 19 -25696.247430 -5321.032460 21 11011.968263 -15062.646981 22 3564.647586 -24007.720021 23 14765.786659 120.834880 24 1505.695291 16220.433215 25 10223.415968 -12747.752531 26 3205.836836 15802.086312 27 -21432.193470 3669.904679 29 21455.786579 -15461.646649 30 15361.076007 9071.701215 31 -6666.917518 -14208.629022

PRN2PHC.txt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

IIA IIR IIA IIA IIA IIA IIA IIA IIA IIA IIR I IIR IIR II IIR II IIR IIR IIR IIR IIR IIR IIA IIA IIA IIA IIR IIA IIA IIA IIA

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

1.023 0.000 1.023 1.023 1.023 1.023 1.023 1.023 1.023 1.023 0.000 1.023 0.000 0.000 1.023 0.000 1.023 0.000 0.000 0.000 0.000 0.000 0.000 1.023 1.023 1.023 1.023 0.000 1.023 1.023 1.023 1.023

-17322.603482 1558.181474 20506.857620 -21794.908957

29.993708 522.852588 -29.324883 23.986584

19265.912863 -19708.725710 -15570.164885 21310.579103 12254.423183 16387.959858 -742.556395 1312.150259 -11385.307053 3389.266228 -3929.802237 15577.713690 -10326.921345 21163.952854 -11172.582901 14698.039528 -4758.369583 -18400.227233 9964.775710 -21669.630278 21263.965968 21100.654562 -20997.269107 -15539.264317 -1300.375644 19511.674253 -21603.704606

95.671525 -101.225248 34.540440 96.285982 213.136849 0.024750 575.518882 129.328833 -7.212622 40.043572 -110.299498 30.851388 717.713066 132.140695 -219.161764 26.022070 39.863832 28.187284 54.649906 4.227931 585.877990 2.053604 670.421389 30.025633 522.882929 -29.501823 23.913769

11

Software para procesamiento de datos GPS

Sta.pos gAGE 4789031 176612 4195008 gag1 4788979 176752 4195028 iorg 4789051.5961 176614.0731 4195020.4165 xgAGE 4788979 176752 4195028 bell 4775849.4594 116814.2604 4213018.8559 ebre 4833520.2254 41537.0041 4147461.4436

 Anexos

12

ANEXO 3. PRUEBAS DE TRATAMIENTO DE FICHEROS En este Anexo se muestran los resultados obtenidos en las pruebas del resto de ficheros de lectura que utiliza GCAT.

Fig. 3.1 Captura de la correcta lectura del “SP3.dat”

Fig. 3.2 Captura de la correcta lectura del “SP3.txt”

13

Software para procesamiento de datos GPS

Fig. 3.3 Captura de la correcta lectura del “PRN2PHC.txt”

Fig. 3.4 Captura de la correcta lectura del “sta.pos”

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF