Geodesy with the Global Positioning System

EESC G9945 Section 2

Spring Term 2013

Term Project Subgoal 1 Information

Due date: 22 February 2013 (Revised)

Background

As the first step in our position estimator, we will need to be able to read in a RINEX broadcast ephemeris ("navigation") file, store them, and to be able to calculate the Earth-fixed cartesian coordinates for an observation epoch. In subgoal 1, you will be asked to calculate the cartesian coordinates only for the epoch within the RINEX file that is closest to an epoch specified below. Note: All times will be specified in GPS time.

As you proceed in this project please do not hesitate to e-mail me or stop by (quicker response) if you have questions or are having difficulties.

Obtaining the navigation data

The GPS observation data set we will analyze was collected on day 100 of 2008. (You don't need this data for this Sub-goal.) Broadcast ephemeris RINEX files can be obtained from the IGS. Go to the "IGS Products Table" after clicking "Data & Products." The Broadcast orbits are available from three organizations. I recommend using the NASA CDDIS. If you click on this link, you will be taken to a page that shows the address for anonymous ftp as well as the directory structure the CDDIS employs.

I recommend using (anonymous) ftp from a command line, since the ftp link doesn't always work. You need to know the year (2008) and the day of year (100) to work your way throught the directory structure to retrieve the "daily combined broadcast ephemerides" file. The RINEX version in which this file is written is shown on the first line of the file.

RINEX file format

The RINEX format has changed with time, so be sure to use the documentation appropriate to your format. (The major changes are between interger versions. Use the latest for the integer version you'll need if the non-integer part is not given.) There are many types of files that are described in the documentation, but in this part of the excercise you will need only the "GPS navigation message" information.

The documentation identifies, line by line, the information in this file. There is aheader at the start of this file, followed by a number of multi-line data records. Each data record has the information at one epoch for one satellite (identified by its "PRN", or pseduo-random noise sequence number).

Structure of the program

Although you will not be graded on how your code is organized, I strongly suggest that your code have the following three sub-modules that can be used in later programs:

  1. Read the navigation file. This module passes as input the navigation file name and returns one or more structures storing all the information in the data records. This module will have to parse the message line by line, according to RINEX format. Store all the information, just as it is in the file, in whatever structure(s) you want. Make sure you can access and search the structure by PRN and epoch. You might also want to create some bookeeping information, such as how many distinct GPS satellites have data and the list of PRNs
  2. Identify the nearest epoch. Given a PRN, an observation epoch in GPS time, and the navigation structure, return a pointer/index to the information in the structure having the closest TOE.
  3. Calculate Earth-fixed Cartesian satellite coordinates. Given an observation epoch and the pointer from (2), calculate the Cartesian Earth-fixed coordinates of the satellite at the observation epoch using the formulas given in the class notes.

The approximate structure of the program for this sub-goal is therefore:

Get name of RINEX file and observation epoch

Read in navigation file (module 1)

Create a list of PRNs (if not done in module 1)

For each PRN in the file:

Find the navigation information nearest to obs epoch (module 2)

Set the "test epoch" equal to the TOE in the indexed navigation message

Calculate the Earth-fixed Cartesian coordinates for this PRN at the "test epoch"

Print: [PRN] [test epoch] [x] [y] [z]

Next PRN

Observation epoch

Use the observation epoch: 2008/04/09 4:00:00.0

What to send me:

E-mail the results of your program by 5 PM on the due date.