~ubuntu-branches/debian/wheezy/gpredict/wheezy

« back to all changes in this revision

Viewing changes to src/sgpsdp/2_README

  • Committer: Bazaar Package Importer
  • Author(s): Hamish Moffatt
  • Date: 2006-09-12 22:43:33 UTC
  • mfrom: (1.2.1 upstream) (3.1.3 edgy)
  • Revision ID: james.westby@ubuntu.com-20060912224333-n5bkb920yl8rxyx3
Tags: 0.6.1-1
* New upstream release, now for GTK+ 2.
* Changed build-dependencies to remove GNOME 1 and GTK 1.2 libraries.
* Fixed spelling error in description (closes: #363621)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
Introduction:
 
3
=============
 
4
 
 
5
This package contains a partial port to C of Dr TS. Kelso's PASCAL library
 
6
sgp4-plb26a. This library contains files with functions for calculating the
 
7
position and velocity of a satellite using the NORAD SGP4 and SDP4 routines
 
8
and from these the azimuth, elevation, range and range rate of same. Routines
 
9
are also included for calculating the position of the sun and the illumination
 
10
status and eclipse depth of the satellite.
 
11
 
 
12
The port to C includes most of the sources needed for making the above 
 
13
calculations and for reading and checking two-line Keplerian element sets
 
14
(TLE's) from a file, as available from many sources on the Internet. Some of
 
15
the files in the PASCAL library are PC-specific and have not been ported to C
 
16
or they have been substituted or modified with some functions I developed
 
17
myself. A simple main() function is included to demonstrate the use of the C
 
18
sgp4/sdp4 library and functions for reading and testing a TLE set from a file.
 
19
 
 
20
Contents:
 
21
=========
 
22
 
 
23
This package should contain the following files:
 
24
 
 
25
1. This README file.
 
26
 
 
27
2. The COPYING file with copyright details.
 
28
 
 
29
3. sgp4sdp4.c: The source-code of the ported SGP4 and SDP4 routines and some
 
30
               extra functions for testing and setting flow control flags.
 
31
 
 
32
4. sgp_in.c: Functions for reading a TLE set from a file and verifying,
 
33
             converting and pre-processing the Keplerian element set.
 
34
 
 
35
5. sgp_math.c: Various mathematical functions used by other routines.
 
36
 
 
37
6. sgp_obs.c: Functions for calculating the geodetic position of the observer
 
38
              and converting the ECI position and velocity of a satellite to
 
39
              observer-centered azimuth, elevation, range and range rate. Also
 
40
              calculating the observer-centered position of the sun.
 
41
 
 
42
7. sgp_time.c: Functions needed to calculate and convert time in various 
 
43
               formats, e.g. Julian, calender etc.
 
44
 
 
45
8. solar.c: Functions for calculating the position of the sun.
 
46
 
 
47
9. main.c: A basic main() function to demonstrate the use of the sgp4/sdp4
 
48
           library to read a TLE set and calculate and print satellite 
 
49
           predictions.
 
50
 
 
51
10. sgp4sdp4.h: A header file that should be #include'd in all source files
 
52
                using this library.
 
53
 
 
54
11. Makefile: A simple makefile for building the 'ephem' binary.
 
55
 
 
56
 
 
57
Building and testing:
 
58
=====================
 
59
 
 
60
Run make in the sgp4sdp4 source directory to compile the binary executable.
 
61
Run ephem to start the test program, but please note you need to include a
 
62
file in the same directory including TLE sets in NASA format as available 
 
63
on the Internet. There are fresh sets uploaded regularly at Dr TS Kelso's
 
64
site at www.celestrak.com . Please note that you should edit main.c to 
 
65
enter the directory path for this file, it is currently set at amateur.txt
 
66
and to also enter the observer's geodetic coordinates (lat and lon in rads
 
67
and altitude in km). This is only a skeleton test application!
 
68
 
 
69
Known bugs: 
 
70
===========
 
71
 
 
72
It appears that the original NORAD routines have been modified to
 
73
correct some discrepancies in the calculated satellite position data,
 
74
at least for some TLE sets of deep-space orbits. I have incorporated
 
75
a fix for one bug at the end of the Lyddane modification in the 
 
76
'dpper' section of the Deep routine, as suggested by Rom Matson.
 
77
 
 
78
There are also suggested fixes for the discrepancy in satellite
 
79
position data at 0 epoch time, between SDP4 and SGP routines. I have
 
80
not made any changes to the NORAD routines, as the fixes appear to be
 
81
for newer, modified SGP4/SDP4 routines. I will leave this to Celestial
 
82
Mechanics programming gurus to be safe!
 
83
 
 
84
Hidden bugs?
 
85
============
 
86
 
 
87
There may well be (even should be) some hidden bugs in the ported C
 
88
source as I made a big effort to streamline the flow and structure of
 
89
the FORTRAN routines, especially getting rid of all goto's. Although
 
90
I have been careful with the changes, the TLE sets in NORAD's report
 
91
do not result in program flow in all the branches of control statements
 
92
so that its not possible to check the integrity of the C source in all
 
93
circumstances. However I have made sure that the results produced by my
 
94
C routines agree to the 5th or 6th digit of NORAD's examples.
 
95
 
 
96
The most complicated part of the NORAD routines is the 'dpsec' part of
 
97
the Deep routine where most of the changes to flow control and 
 
98
structure were made. This is were bugs affecting the deep-space 
 
99
routines may be hiding. I have conducted tests using KD2BD's PREDICT
 
100
tracker using modified tle sets to force program flow through all the
 
101
branches of if() statements and after fixing a number of bugs, I have
 
102
close agreement with predict with a wide variety of orbital element sets.
 
103
Still, there is no guarantee that some circumstances will not trigger a
 
104
hidden bug.
 
105
 
 
106
Using the sgp4sdp4 package:
 
107
===========================
 
108
 
 
109
In order to use the ephemeris functions in sgp4sdp4 you will need to
 
110
#include the sgp4sdp4.h header in your own source files. There are
 
111
comments in all files describing the various functions and there use.
 
112
There are also comments in the main() function describing the steps
 
113
needed to get results from the package.
 
114
 
 
115
The routines that calculate satellite position (SGP4 and SDP4) all 
 
116
have the same interface as follows:
 
117
(double tsince, tle_t *tle, vector_t *pos, vector_t *vel ).
 
118
 
 
119
tsince is the time interval in minutes since epoch time.
 
120
 
 
121
tle_t *tle is a pointer to a structure that holds the TLE set of
 
122
the satellite. Please see norad.h for details.
 
123
 
 
124
vector_t *pos, vector_t *vel are structures holding the calculated
 
125
Cartesian position x, y, z and velocity xdot, ydot, zdot data
 
126
for the satellite. Please see norad.h for details.
 
127
 
 
128
Please note that all three arguments are safer declared static if
 
129
they are declared outside the main() function.
 
130
 
 
131
All the flags controlling program flow must be cleared before a new
 
132
TLE set is used or when a different ephemeris function is called. 
 
133
This is done by using ClearFlags(ALL_FLAGS); See main.c for details.
 
134
 
 
135
Disclaimer:
 
136
===========
 
137
 
 
138
I have ported the sgp-plb Pascal routines to C so that I can use them
 
139
in my satellite tracking projects. I am releasing this source-code in 
 
140
the hope that other developers can benefit, as I have benefitted from
 
141
available open source software. 
 
142
 
 
143
I can make no guarantee explicit or implicit as to the integrity and
 
144
usability of these software modules and I cannot be held responsible
 
145
for any damage or loss incurred by using them. Use the material in 
 
146
this package at your own risk.
 
147
 
 
148
References:
 
149
===========
 
150
 
 
151
Dr. TS. Kelso maintains an excellent web-site with a lot of information
 
152
and software for tracking celestial objects. A pdf version of the 
 
153
NORAD Spacetrack report #3 is also included: http://celestrack.com/
 
154
 
 
155
Change Log:
 
156
================
 
157
 
 
158
Version 0.1: Was the first relased after local bug-fixing.
 
159
 
 
160
Version 0.2: Function Date_Time was re-written to include calculation
 
161
of tm_wday and tm_isdst members in the struct tm type value it returns.
 
162
 
 
163
Version 0.3: A suggested modification to the 4-quadrant AcTan() function
 
164
was incorporated in order to make it agree with the original NORAD code.
 
165
Thanks to Mr. Ed Savage for this.
 
166
 
 
167
Neoklis Kyriazis  <neoklis@my-deja.com>   August 31  2001.