Satellite Tracker with Python + Kivy Framework

In 2020, as my team was preparing for the final delivery of CAPE-3 to NASA’s ELaNa XX mission for launch, we hit an issue of ensuring we had the correct Doppler-shift algorithm for our custom ground radio boards. In order to ensure we were able to take a Two-Line Element (TLE) and correctly apply the Doppler-shift calculations, I developed a Python-based satellite tracking application using the Kivy framework to experiment with real-time orbital visualization, satellite pass prediction, and radio Doppler-shift calculations.

Given that CAPE-3 had not yet launched, I developed and tested the application using the TLE for CAPE-1, the University of Louisiana at Lafayette’s first CubeSat, as well as the International Space Station.

The goal was to bring several capabilities useful for satellite and amateur-radio operations into a single lightweight desktop application: determine where a satellite is currently located, visualize where it is going, predict when it will pass over a ground station, and calculate the Doppler shift affecting its radio signal.

Ultimately, this software was meant to be generalized further to allow anyone to input a TLE, track a satellite, and calculate the appropriate frequency Doppler shift. However, with my graduation and eventual move to Houston to work for SAIC, the project was put on pause and never progressed beyond proof-of-concept development.

Technical Summary:
Original Development: 2020
Development Status: Proof of Concept
Primary Language: Python
GUI Framework: Kivy
Mapping: Kivy Garden MapView
Orbital Calculations: PyOrbital
Range / Range Rate: PyEphem
Orbital Data: CelesTrak
Primary Test Spacecraft: CAPE-1 and International Space Station
Additional Presets: NOAA-18, NOAA-19, NOAA-20
CAPE-1 Test Frequency: 437.325 MHz
Current Status: Original proof of concept operational