You are on page 1of 3

GPS Tool Box

Computing satellite velocity using


the broadcast ephemeris
Benjamin W. Remondi

Introduction Derivation of the velocity


GPS has been used for applications where satellite
equations
velocities are needed as well as satellite positions. Tra-
Let us first list the symbols needed to compute the
ditionally, the position was determined from noisy code
broadcast orbits. These are listed below using the notation
pseudoranges while the velocity came from delta carrier
found in the ICD-GPS-200.
phase measurements. This motivates the need to have a
velocity model to accompany the velocity data. With crs ; Dn; M0 ; cuc ; e; cus ; A1=2 ; toe ; cic ; OMEGA0 ;
velocity data, the velocity states are directly observed in a
Kalman filter. While processing can be carried out using cis ; i0 ; crc ; x; OMEGADOT; IDOT
either post-processed or predicted ephemerides from the These parameters are broadcast from the GPS satellites in
international GPS service (IGS), it is convenient to use units of meters, radians, seconds, semi-circles, and semi-
broadcast ephemerides for real-time applications. In this circles/second. One semi-circle is the same as 180. In what
paper, a set of equations is derived which will allow one follows, we will assume that any values sent in semi-circles
to compute the velocity vector for a GPS satellite using or semi-circles/second have been converted to radians or
time derivatives of the Keplerian elements and correction radians/second, respectively.
terms broadcast from the GPS satellites, as described in There are also some needed constants given as follows.
the GPS interface control document (ICD-GPS-200). It
will be assumed that the reader is familiar with the Earth rotation rate : Xe 7:2921151467  105 rad=s
equations listed in this document for computing the X, Y, WGS 84 value for the product of earths gravity and its mass:
Z earth-centered, earth-fixed (ECEF) coordinates of a
satellite (the reader may obtain a PDF version of the ICD- l 3:986005  1014 m3 =s2
GPS-200 from the US Coast Guard website at http://
www.navcen,uscg.gov/pubs/gps/icd200/default.htm). A Next let us rewrite the broadcast computation algorithm,
complete main program written in C is included on the to compute ECEF position at user time t, from the ICD-
GPS Toolbox website (http://www.ngs.noaa.gov/gps-tool- GPS-200, adding comments and new steps for clarity and
box) to illustrate how these equations can be easily for derivatives. Please refer to the ICD-GPS-200 in what
incorporated into source code to yield accurate velocity follows. In the discussion below, the new equations and
components. As a check, the velocity calculations were comments added for computing velocity will be preceded
done numerically as well. by two slashes (i.e., those lines either not found in the ICD-
GPS-200 document or not needed for computing position
begin with the characters //).
1=2 2
A A
p
n0 l=A3
tk t  toe t is the time of the desired orbit position
n n0 Dn
Received: 19 March 2004 / Accepted: 26 March 2004
Mk M0 ntk
Published online: 4 August 2004 ==M _ k n Consider all lines beginning with ==
Springer-Verlag 2004 to be a comments.
==Mk Ek  e sin Ek
B. W. Remondi (&)
Ek Mk == Initialize eccentric anomaly to mean anomaly
The XYZs, of GPS, Inc., P.O. Box 37, Dickerson, for i 0; i\7; i Ek Mk e sin Ek ==
MD 20842, USA Improve Ek ; more loops than needed
E-mail: remondi@xyzsofgps.com ==M _ k E_ k  e cos Ek E_ k 1  e cos Ek E_ k
Tel.: +1-301-9727402
Fax: +1-301-3492547 ==E_ k M _ k =1  e cos Ek will be needed later

DOI 10.1007/s10291-004-0094-6 GPS Solutions (2004) 8:181183 181


GPS Tool Box

==True anomaly is tk
  (p )
1 sin tk 1 1  e2 sin Ek 1  e cos Ek
==tk tan tan
cos tk cos Ek  e=1  e cos Ek
(p )
1  e2 sin Ek
== tan1
cos Ek  e
==In practice the above equation is optional see below; but we will
==use it because the ATAN2 function takes care of the ambiguity nicely.
==Because we know Ek the following ambiguous equation could
 
1 e cos tk
==have been used for tk as well: Ek cos
1 e cos tk
==This equation instead will be used to compute t_ k :
== cos Ek 1 e cos tk e cos tk
==Differentiating both sides we get
==  sin Ek E_ k 1 e cos tk  cos Ek e sin tk t_ k  sin tk t_ k
==  sin Ek E_ k 1 e cos tk 1 cos Ek e sin tk t_ k
==_tk sin Ek E_ k 1 e cos tk =1  cos Ek e sin tk 
Uk tk x
==U_ k t_ k ==x is assumed to be constant
duk cus sin 2Uk cuc cos 2Uk
drk crs sin 2Uk crc cos 2Uk
dik cis sin 2Uk cic cos 2Uk
_ k 2cus cos2Uk  cuc sin2Uk U_ k
==du
_ k 2crs cos 2Uk  crc sin 2Uk U_ k
==dr
_ k 2cis cos 2Uk  cic sin 2Uk U_ k
==di
uk Uk duk ==Same as uk tk x duk
rk A1  e cos Ek drk
ik i0 IDOTtk dik
_ k ==Same as u_ k t_ k du
==u_ k U_ k du _ k
_ k
==_rk Ae sin Ek E_ k dr
_ k
i_k IDOT di

x0k rk cos uk
y0k rk sin uk
==x_0 k r_ k cos uk  rk sin uk u_ k
==x_0 k r_ k cos uk  y0k u_ k
==y_0 r_ k sin uk rk cos uk u_ k
k
==y_0 k r_ k sin uk x0k u_ k
 
Xk X0 X_  X_ e tk  X_ e toe
 
==X_ k X_  X_ e
xk x0k cos Xk  y0k cos ik sin Xk
yk x0k sin Xk y0k cos ik cos Xk
zk y0k sin ik

182 GPS Solutions (2004) 8:181183


GPS Tool Box

 
==x_ k x_0 k cos Xk  x0k sin Xk X_ k  y_0 k cos ik sin Xk  y0k  sin ik i_k sin Xk cos ik cos Xk X_ k
 
==x_ k x_0 k cos Xk  y_0 k cos ik sin Xk y0k sin ik sin Xk i_k  x0k sin Xk y0k cos ik cos Xk X_ k
==x_ k x_0 k cos Xk  y_0 k cos ik sin Xk y0k sin ik sin Xk i_k  yk X_ k
 
==_yk x_0 k sin Xk x0k cos Xk X_ k y_0 k cos ik cos Xk y0k  sin ik i_k cos Xk  cos ik sin Xk X_ k
 
==_yk x_0 ==k sin Xk y_0 k cos ik cos Xk  y0k sin ik i_k cos Xk x0k cos Xk  y0k cos ik sin Xk X_ k
==_yk x_0 k sin Xk y_0 k cos ik cos Xk  y0k sin ik i_k cos Xk xk X_ k
==_zk y_0 sin ik y0 cos ik i_k
k k

Example source code finite precision of the computer. This is why a long
double (80 bit) was adopted in the source code. In
The GPS Toolbox website (http://www.ngs.noaa.gov/ practice, a long double is not required and a double (64
gps-toolbox) lists the source code for an example C pro- bit) will suffice. If a small delta t (e.g., 1 ls) were used, this
gram, which illustrates how to compute both position and simple numerical approach would have been very poor. If
velocity for PRN 20 starting with broadcast ephemeris data a larger delta t were used (e.g., 10 s), the simple derivative
similar to what might be found in a typical RINEX navi- definition would not suffice and a polynomial fit over a
gation message file. The reader can use this C code to number of points would be needed.
create a similar subroutine or function, which will The numerical and analytical results agree sufficiently to
compute the position and velocity of a satellite given the ensure that the analytical (symbolic) derivatives were done
broadcast ephemeris data, the PRN name, and a requested correctlyand that is the point. Separately, the velocity
GPS time (transmission time) in units of GPS week and was compared with the precise orbits and the agreement
seconds-of-week. The author has intentionally presented was better than 1 mm/s, however this is not the point of
this in a main program so as not to obscure the tutorial. this article.
In practice, a pointer to a broadcast structure would be
passed to a similar C function. It should be pointed out
that the ambiguity with respect to the GPS week has been
ignored in this simple tutorial program. Summary and conclusions
In summary, this paper has presented an expansion of
the ICD-GPS-200 algorithm to include computation of the
Additional remarks velocity components of the satellite in the ECEF frame. It
has been verified that the numerical and analytical com-
The above mentioned C program was rerun at both putations agree within about 1 l/s. This is just what one
t+0.005 s and at t)0.005 s to determine the position of the would expect from a long double comparison. In a
satellite so as to determine the velocity numerically using future ICD algorithm, possibly the algorithm could be
delta position divided by delta time (i.e., over 0.01 s). This expanded to include velocity. With proper care, the
relatively large delta time was used in recognition of the velocity components can be computed numerically as well.

GPS Solutions (2004) 8:181183 183

You might also like