maandag 15 juni 2015

DIY satellite-pass planner

The new lecture year is coming and the satellite communications and tracking practicum is about to start. In this lecture, students have to plan a satellite pass, record the downlink signal, and post-process this data, such that they can recover some parameters like: Time of Closest Approach (TCA), carrier frequency of the satellite, and error estimates compared to TLE (see previous blog posts: here, here, and here). For the first part, the students need to compute when the satellite is flying overhead. There are many websites and apps that are able to give you 5 day predictions, but I wanted to see if I could do this myself. As a little boy I always had the tendency to say: 'I can do that too!'. Up until the time my father said: 'Son, you can only say "I can do that too", when you at least have done it ones.' So, living by that wisdom I want to show you how to build your own satellite-pass predictor.

To validate my efforts, I am going to generate the same results as a pass-prediction website I usually go to (see link).  I have inserted the NORAD ID for the Delfi-C3 satellite and this is what the website gives me:

The results of N2YO at Sunday 14 June 2015 10:00 o'clock
So, I have to reconstruct this list: Start time Azimuth start, TCA, Azimuth TCA, Elevation TCA, End time, Azimuth End. The colours per row illustrate the visibility of the object, however I am not interested in this, because in the radio spectrum the satellite is always visible (well when his radio is turned on, this is not always the case with Delfi-C3). Let's start!

To predict when a satellite is passing overhead, the orbit of the satellite is needed. This orbit can be predicted for 5 in the future, because of its predictive behaviour (its not like predicting the weather). The uncertainty in this non-chaotic system is well below the one-minute prediction uncertainty of the timing requirements. The Americans knew this too, so they are tracking and recording all objects in space using radar telescopes. The great thing of this is that they are making all these recordings available for the public (well not the super secret spy satellites, but then go to this blog, if you want to know more about them). Nevertheless, Delfi-C3 is NOT a super secret spy satellite, so its track record is available. I used the latest at this moment:

1 32789U 08021G   15164.24672859  .00009977  00000-0  80803-3 0  9994
2 32789 097.6719 224.3843 0011775 057.7548 342.8056 14.99867522386494

This is called a Two Line Element, or TLE. This TLE is updated daily and gives a state vector of the satellite, or in other words, says where the satellite was and how fast it was flying at a certain moment of time. With this data, you are able to propagate and predict the satellite's orbit. You can obtain this TLE from the website, after you have created an account. To extract the TLE use the following shell line:

curl -c cookies.txt -b cookies.txt -k -d 'identity=your_login&password=your_password&query=' > TLE.txt

This will print the latest TLE of the Delfi-C3 in a text file named TLE.txt, use your own password and username of course. The space-track website gives good instructions for any OS you use. Also, they make propagation software available to do your own propagation. The propagator that they use is called SGP4 and is easy to use. Instead of rebuilding this, I have re-modified their propagator for my purposes (Sorry dad, but in my defence, I have build propagators in my Masters study, so I can really do that too ;) ). I have modified the SGP4 propagator software, such that it gives me a 5 day orbit prediction. Please, contact me when you are interested in the software.

--Just a side note-- 
The 5day predicted orbit is referenced to a reference system that is called TEME, which we (my office-mate and me) pronounce like TEME. It is a little bit weird reference frame. David A. Vallado the author of "Fundamentals of Astrodynamics and Applications" (He should know!), says the following about the TEME reference system:

The AFSPC analytical theory (SGP4) produces ephemerides in a "true equator, mean equinox" TEME. An official operational definition of TEME is very difficult to find in literature.

So, even the experts are a little bit fuzzy on the subject. Continuing reading his work, Vallado gives a thorough and detailed description of the TEME reference system. However, the TEME reference system stays a little bit vague. That's why I think our pronunciation is correct. If you disagree, please follow this link
--End side note--

The orbit is situated in a inertial reference frame, however our station is located on a rotating Earth. Therefore, we need to transform the orbit into a Earth fixed rotating reference frame. After, this quick transformation, you are able to compute the azimuth and elevation of the satellite. Also, you can compute the vectorial angle between the satellite and the ground station. The satellite is in view, if this angle is smaller than the "horizon angle" for that particular station. The "horizon angle" can be deduced by making a sketch of the situation:

The length of the satellite's position vector (r) when it is flying over the horizon is equal to the radius of the Earth (R) plus the height of satellite's orbit (h). To calculate the horizon angle (phi), you can make use of the cosine rule:

cos phi = R / (R + h)

The mean height of the orbit can be deduced from the TLE and the radius of the Earth is also known, so the determination of the horizon angle is possible. When you have a relation for the horizon angle, a visibility plot can be made:
Zoomed in section of the 5day visibility plot
The value 1 means that the satellite is in view of the ground station. These slots come in 3 or 4 bars, some broader then others. This is of course a result of the particular geometry of the satellite pass. After a simple search algorithm that identifies and characterises all passes, I was able to calculate the parameters that we needed, listed in the beginning. I used a 10 degree elevation cut-off criteria, because I know N2YO is also using this. The end results is given as a text file:

The results of pass prediction by Broodt on Sunday 14 June 2015 at 10:00 o'clock
By inspecting the first and last figure of this blog, I can now say (within reasonable uncertainty): I can do this too!