Background to the Problem: Why doesn't NovAtels SATXYZ message agree with a manual computation of satellite coordinates from NovAtels RAWEPHEM (ephemeris) data for the same time epoch? One example is the application of RAWEPHEM data using a procedure from the book by Farrell & Barth which works properly with a sample data set; however, the satellite positions computed from RAWEPHEM data work out to be different from those shown in SATXYZ for the same epoch (instant in time.)
The Answer: Both solutions are correct. The Explanation: Satellite XYZ coordinates computed from RAWEPHEM data for an instant in time (e.g. GPS Week 1267 at 156432.10 seconds) are different from satellite XYZ coordinates taken from SATXYZ for the same instant in time. The reason for this is relatively simple.
First of all a few facts:
1) The satellites are moving in an orbit that ensures every satellite circles the earth once every eleven hours and fifty-eight minutes at altitudes of approximately 16,500 km above the earths surface or approximately 20,000 km from the centre of the earth.
2) Consequently the satellites velocities are close to 25,200 km/hr in space and then the earths equator rotates at approximately 1650 km/hr. For our example satellite lets assume this equates to the satellite moving at 10,500 km/hr with respect to a point on the earths surface.
3) The ECEF coordinate system used to display satellite XYZ coordinates is locked to the earths shape in all its axes and therefore as the earth rotates in space so does the ECEF coordinate frame. ECEF stands for Earth Centred Earth Fixed. No surprise there or BESTXYZ positions for our static GPS antenna would be constantly changing.
So if we are talking about rate of change in satellite coordinates in the ECEF framework then we need the satellite speed relative to the earths surface. The RAWEPHEM data is used to derive SATXYZ positions which are the ones used for the position computation.
In our example below if we have a measurement time in GPS Week 1267 of 156432.10 (same time as we used above) the following should apply.
a) For a pseudorange of approximately 24,000,000 metres and a speed of radio signal about 300,000 km/sec the signal must have left the satellite 24/300 (0.08) seconds earlier than the measurement took place at the GPS receiver.
b) In 0.08 seconds at a speed of approximately 10,500 km/hr the satellite will have moved approximately 233 metres
c) If a) and b) above are correct then the time we should use RAWEPHEM data to compute for this same satellite XYZ data for is 156432.02 (156432.10 0.08)
d) Each satellite will have a different time of transmission dictated by the distance from satellite to receiver. Typical pseudoranges for a position computation may be between 21,500,000 24,000,000 metres and the transmission time would vary for each pseudorange. In this example the time for the signal to travel between satellites and receiver would vary between 0.07167 and 0.080 seconds during which time the satellites may move between 209 and 233 metres.
Conclusion: So by the above example we can see that if we compared satellite coordinates derived from NovAtels RAWEPHEM and SATXYZ data then the coordinates are going to be different by a vectors of maybe several hundred metres.