Welcome to the Satellite Orbit Determination home page. You will find programs I have written (in C++) and links to other pages related to earth satellites. The main purpose for this page is to have a place to distribute my satellite programs and to post links to some of the key web resources for this hobby.
I wrote this software for my own use and to perhaps make a contribution to the amateur satellite tracking effort. I have been computing satellite orbits based on observations posted on SeeSat-L. Orbits are regularly computed by several others who have more experience so I compute in private and use their results to check my efforts.
I occasionally post satellite positional measurements to the SeeSat list. I am refining my equipment and technique with a low light video camera and GPS video timestamp technology to do this accurately. My current equipment setup can be found here.
I am always happy to receive bug reports or suggestions for improvement. Several individuals have effectively driven my program adjustments by reporting output anomalies or by requesting new features.
This page is frequently revised, so check back periodically to see what has been changed or what new material has been added.
Last Update on 07/11/2012
NOSS 0rk by 3 clusters in Puppis
NOSS 2-3 C&E by Pleiades NOSS 2- 3 D by Pleiades
NOSS 3-1rk by M42
NOSS 3-3 - shows how handy a zoom lens can be
NOSS 5G by M37
DMSP F16 by M41
MILSTAR 6 gliding past Orion Nebula
ASTEROID FORTUNA OCCULTATION - watch the star at the center of the frame
Creates a TLE from two or three observations of a satellite on a single pass. Useful for initial orbit parameters and for unknown satellite identification. This fifth version improves convergence characteristics for the three point fit via F and G series. If more than three points are available, use ELFIND for the initial orbit, then use SATFIT and/or ELCORD to refine the orbit using all the observations.
If a sat.txt file containing observations but no TLE is opened by SATFIT it will automatically open the file in ELFIND.
Manages satellite files containing a TLE and optical observations. Contains functions to improve orbit elements to better fit observations. Also has functions to sort, delete, and check the fit of satellite observations. Uses revised SGP4 and SDP4.
Improves a TLE by differential correction of selected elements. Uses revised SGP4 and SDP4.
Improves a TLE by fit to Doppler shift data from radio observers. Uses revised SGP4 and SDP4.
Use ELFIND to get a preliminary orbit and then use SATID to find a satellite that best fits the orbit plane and satellite position at observation epoch.
Numerical satellite propagator to advance a single TLE, or a list of TLE's to their first ascending node after a specified date. Uses an RKN 11(12) order integrator, JGM3 20x20 gravity model, Harris Priester atmosphere with solar diurnal bulge, Sun and Moon perturbations, and accounts for solar radiation pressure.
Deep space analytic satellite propagator algorithm.
As of 03/24/09 all my programs that depended on SGP4/SDP4 have been upgraded to reflect the changes suggested in the revised spacetrack report published by CSSI. The code I am now using is adapted from Bill Gray's projectpluto.com website. His test output matches the revised CSSI benchmark to the centimeter. I re-organized Bill's code into an SGP4 module and a separate SDP4 module so I could just drop them into place in my existing programs.
There are two versions of SDP4, one with zero perturbations at epoch and one with perturbations applied at epoch. Spacetrack TLE's for deep objects are issued with perturbation values applied at epoch. This convention applies a constant offset which is nullified if SDP4.CPP is used to decode the Spacetrack TLE's. SDP4.ZERO propagates using the SDP4 algorithm but it zeros the perturbation values at epoch. Thus, SDP4.ZERO would agree with SGP4 at epoch while SDP4.CPP would be slightly different at epoch. I recently adjusted all my programs to use SDP4.ZERO.
Revised programs which are using the new SGP4/SDP4 code are SATFIT, ELCORD, DPFIT, RV2TLE and SATID.
Satellite propagator using Semi-analytic Satellite Theory, SST, to advance a single TLE, or a list of TLE's to their first ascending node after a specified date. Uses the first 20 orders of gravitational zonal harmonics from the JGM3 gravity model, Harris Priester atmosphere with solar diurnal bulge, Sun and Moon perturbations, and accounts for solar radiation pressure. This method is supposed to retain most of the accuracy of a purely numerical propagator and most of the speed of an analytical propagator. Try it and see for yourself.
The working paper is by D. A. Danielson of the Naval Postgraduate School.
At this point I am just happy to have been able to translate some of the paper into working code. The program operates on TLE's and does all the model conversions (SXP4 to equinocital and back again) in the background.
I was going to add the first order mean rates due to gravitational resonant tesserals, but this section of code slowed the program way down and didn't improve the accuracy of the propagation. Probably something wrong with my implementation of this part of the algorithm, so I left it out.
Classified satellite roster. Required for OBS2SAT and several of the other utility programs below.
Observer coordinates. Required for SATFIT, ELCORD, and ELFIND operation.
The program may also be operated by creating a text file with one satellite observation on each line. Copy and paste observations from an email usually works. This file must reside in the same directory with OBS2SAT and the sat.txt files into which you are loading the observations. Then drag the observation file and drop it on the OBS2SAT shortcut icon.
Run the program. Default epoch values are the exact date at the moment of program execution. Desired values may be entered at each prompt.
Output TLE is written to vec.txt.
A second version, RV2TLE_KM.EXE , is now included in the RV2TLE.ZIP file in which the vector components in the Vec_km.txt vector input file are in units of kilometers and kilometers per second.
This list of links is small, but they are a good place to start. Linking from these pages will take you to almost every
satellite related resource on the World Wide Web.