Professional Documents
Culture Documents
==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
==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.