This post explores possibilities for estimating satellite orbits based on Doppler variations of their signals over time. Selected orbits parameters have been estimated using the Python's SciPy optimisation library. Initial experiments have been promising but more remains to be done.
Some years ago I was trying detect low earth orbit (LEO) satellites in the radio amateur bands by looking for their characteristic Doppler profile. As a satellite approaches a ground station (GS) its radio signal frequency appears higher, while overhead there's no frequency offset, and as it recedes the carrier frequency continues to drop. Several satellites can be seen in the "waterfall" plot below, with time increasing from top to bottom and frequency from left to right. The vertical scale is 60 minutes but the plot superimposes results from a few hours. Although this spectrum region is dedicated to radio amateur satellites, there are often sources of terrestrial interference which obscure the small satellite signals, so part of the task is to automatically remove the non-satellite signals (a few remnants can still be seen below). In addition the spectral width of LEO signals varies, so a filtering and median tracking approach has been used to only estimate the carrier frequency.
|Showing spectral signatures of several LEO satellites in the 70 cm band, over 60 minutes. |
While the "blind" detection of LEO satellites is interesting in its own right, this post asks whether some orbital parameters can be estimated just using their Doppler shapes. Doppler shift is proportional to the satellite's velocity in the direction of the GS, so overhead passes show greater Doppler variations than low elevation passes. Initially I assumed it would be possible to estimate the minimum distance from the GS to the satellite and perhaps it's orbital height. Many LEO satellites have almost circular orbits and I've made that assumption below. In addition it seemed likely that collecting the same signal from two different locations might provide information regarding orbit inclination. During the investigations I realised that the Earth's motion must be taken into account, which provides some additional possibilities, even for one GS.
Others have used Doppler measurements to refine existing orbit estimates, which are usually disseminated by the TLE standard. Mark alerted me to the strf software and I changed my data collection format to use their file standard. So far I've used signals collected from two satellites, by myself and Mark. On April 16th we each recorded a pass from LUSAT (LO-19) and FalconSat-3. Both of these provide relatively strong continuous downlink transmissions, and they use different orbits and signal characteristics. The figure shows a summary of the satellite passes used. These GSs are located near Adelaide and are almost 90 km apart.
Given a set of carrier frequency measurements over several minutes, plus an orbit model with unknown parameters, it's a non-trivial problem to estimate the orbital unknowns. Fortunately SciPi provides a versatile library function to address this type of problem. My model uses the following unknowns: time offset, frequency offset, angle between GS and the satellite's crossing of the equator, orbit height and orbit offset from 90 degrees inclination.