Overview

This project serves as proof that the Skyfield library is a viable option to track planets, satellites, and other celestial bodies. This work aims to provide a proof of concept to the George Mason University's satellite research division by providing the Time, Altitude, Azimuth, and the Distance of each body.

Setup

To get started using this library you need to ensure that Python3.5+ is installe don the host system. Additionally, to install the Skyfield Python package, as well as, the two packages that deal with the differing types of ephemeris data.

$ python -m pip install skyfield spktype01 spktype21

The command up above will downlaod all necessary dependencies for this library to work properly.

Usage

This library is created as a CLI tool, that can be invoked with inputs. Below are examples of using this library as a CLI to determine certain calculations. Below are the supported commands which can be accessed by running

$ python track.py --help

Usage: track.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  track_asteroid  Function to track the orbit of the Didymos asteroid.
  track_planet    Function to track planetary changes relative to a provided
                  location.
  track_sat       Function to track a satellite path relative to provided
                  location.
  track_voyager   Function to track the Voyager 1 space probe.

Below we'll cover the commands and their usage.

Tracking an Asteroid

This command, presently, only tracks the orbit of the 6583 Didymos asteroid. The inputs to this command are as follows:

  • latitude: latitude of the location from where you want to track.
  • longitude: longitude of the location from where you want to track.
  • initial_time: the start time of your tracking, when you want to track from.
  • end_time: the end time of your tracking, when you want to track till.
  • points: number of samples or points you want to collect.
  • angle: the minimum viewing angle.

The output of this command:

  • This command prints the time, altitude, azimuth, and distance for each point from [0, points)

Below is the help menu for this command, which provides all of the inputs, the constraints, and requirements.

$ python track.py track_asteroid --help
Usage: track.py track_asteroid [OPTIONS]

Options:
  --latitude, --lat FLOAT   Latitude of the location from which you want to
                            track.  [required]
  --longitude, --lon FLOAT  Longitude of the locaiton from which you want to
                            track.  [required]
  --initial_time TEXT       Start time from which you'd like to observe the
                            planetary track. Of the form YYYY/MM/DD-HH:MM:SS
                            [default: 2022/05/01-00:00:00; required]
  --end_time TEXT           End time for which you'd like to observe the
                            planetary track till. Of the form YYYY/MM/DD-
                            HH:MM:SS  [default: 2022/05/2-00:00:00; required]
  -p, --points INTEGER      Number of samples to collect.  [default: 100;
                            required]
  -a, --angle INTEGER       The minimum viewing angle.  [default: 0; required]
  --help                    Show this message and exit.

Below is an example usage of this command:

$ python track.py track_asteroid --lat 38.827480 --lon -77.305472 --initial_time "2022/05/01-00:00:00" --end_time "2022/05/2-00:00:00" --points 1000 --angle 0

Tracking a Planet

This commands tracks the orbit of any given planet within our Solar System. The inputs to this command are as follows:

  • planet: the planet whose orbit will be tracked.
  • latitude: latitude of the location from where you want to track.
  • longitude: longitude of the location from where you want to track.
  • initial_time: the start time of your tracking, when you want to track from.
  • end_time: the end time of your tracking, when you want to track till.
  • points: number of samples or points you want to collect.
  • angle: the minimum viewing angle.

The output of this command:

  • This command prints the time, altitude, azimuth, and distance for each point from [0, points)

Below is the help menu for this command:

$ python track.py track_planet --help
Usage: track.py track_planet [OPTIONS]

Options:
  --planet TEXT             Planet to track.  [default: mars; required]
  --latitude, --lat FLOAT   Latitude of the location from which you want to
                            track.  [required]
  --longitude, --lon FLOAT  Longitude of the locaiton from which you want to
                            track.  [required]
  --initial_time TEXT       Start time from which you'd like to observe the
                            planetary track. Of the form YYYY/MM/DD-HH:MM:SS
                            [default: 2022/05/01-00:00:00; required]
  --end_time TEXT           End time for which you'd like to observe the
                            planetary track till. Of the form YYYY/MM/DD-
                            HH:MM:SS  [default: 2022/05/2-00:00:00; required]
  -p, --points INTEGER      Number of samples to collect.  [default: 100;
                            required]
  -a, --angle INTEGER       The minimum viewing angle.  [default: 0; required]
  --help                    Show this message and exit.

Below is an example usage of the command:

$ python track.py track_planet --planet mars --lat 38.827480 --lon -77.305472 --initial_time "2022/05/01-00:00:00" --end_time "2022/05/2-00:00:00" --points 1000  --angle 0

Tracking a Satellite

This command tracks the orbit of the International Space Station (ISS) ZARYA. The inputs to this command are as follows:

  • latitude: latitude of the location from where you want to track.
  • longitude: longitude of the location from where you want to track.
  • initial_time: the start time of your tracking, when you want to track from.
  • end_time: the end time of your tracking, when you want to track till.
  • points: number of samples or points you want to collect.
  • angle: the minimum viewing angle.

The output of this command:

  • This command prints the time, altitude, azimuth, and distance for each point from [0, points)

Below is the help menu for this command:

$ python track.py track_sat --help
Usage: track.py track_sat [OPTIONS]

Options:
  --latitude, --lat FLOAT   Latitude of the location from which you want to
                            track.  [required]
  --longitude, --lon FLOAT  Longitude of the locaiton from which you want to
                            track.  [required]
  --initial_time TEXT       Start time from which you'd like to observe the
                            planetary track. Of the form YYYY/MM/DD-HH:MM:SS
                            [default: 2022/05/01-00:00:00; required]
  --end_time TEXT           End time for which you'd like to observe the
                            planetary track till. Of the form YYYY/MM/DD-
                            HH:MM:SS  [default: 2022/05/2-00:00:00; required]
  -p, --points INTEGER      Number of samples to collect.  [default: 100;
                            required]
  -a, --angle INTEGER       The minimum viewing angle.  [default: 0; required]
  --help                    Show this message and exit.

Below is an example usage of the command:

$ python track.py track_sat --lat 38.827480 --lon -77.305472 --initial_time "2022/05/01-00:00:00" --end_time "2022/05/2-00:00:00" --points 1000 --angle 0

Tracking the Voyager 1

This command tracks the orbit of the Voyager 1 space probe. The inputs for this command are as follows:

  • latitude: latitude of the location from where you want to track.
  • longitude: longitude of the location from where you want to track.
  • initial_time: the start time of your tracking, when you want to track from.
  • end_time: the end time of your tracking, when you want to track till.
  • points: number of samples or points you want to collect.
  • angle: the minimum viewing angle.

The output of this command:

  • This command prints the time, altitude, azimuth, and distance for each point from [0, points)

Below is the help menu for this command:

$ python track.py track_voyager --help
Usage: track.py track_voyager [OPTIONS]

Options:
  --latitude, --lat FLOAT   Latitude of the location from which you want to
                            track.  [required]
  --longitude, --lon FLOAT  Longitude of the locaiton from which you want to
                            track.  [required]
  --initial_time TEXT       Start time from which you'd like to observe the
                            planetary track. Of the form YYYY/MM/DD-HH:MM:SS
                            [default: 2022/05/01-00:00:00; required]
  --end_time TEXT           End time for which you'd like to observe the
                            planetary track till. Of the form YYYY/MM/DD-
                            HH:MM:SS  [default: 2022/05/2-00:00:00; required]
  -p, --points INTEGER      Number of samples to collect.  [default: 100;
                            required]
  -a, --angle INTEGER       The minimum viewing angle.  [default: 0; required]
  --help                    Show this message and exit.

Below is an example usage of the command:

$ python track.py track_voyager --lat 38.827480 --lon -77.305472 --initial_time "2022/05/01-00:00:00" --end_time "2022/05/2-00:00:00" --points 1000 --angle 0