Code repository accompanying the paper: C.Constant, S.Bhattarai, M.Ziebart "The Limits of Current Practices in Uncooperative Space Surveillance: Analysis of Mega-Constellation Data Time-Series"(2023)
Report Bug
·
Request Feature
- About the Project
- Collaboration Statement
- Instructions for Use
- Information
- Data
- Outputs
- Issues
- Environment
The rapid increase of objects in Low Earth Orbit (LEO) has underscored the need for advanced Space Traffic Management (STM) practices. The effectiveness of STM largely depends on accurately determining object orbits in densely populated satellite neighborhoods. In this light, our study aims to bridge the gap between current practices and STM requirements by emphasizing the imperative role of Space Situational Awareness (SSA) data quality, especially its precision, accuracy, and timeliness.
To this end, we present this GitHub repository which features the code used in our research. The code evaluates Two-Line-Element (TLE) data, based on both cooperative and uncooperative tracking for a subset of the Starlink constellation, against high-precision operator ephemerides. Our findings indicate that uncooperative tracking data has a mean positional error of 1.17-2km, while cooperative tracking data is approximately 60% more accurate. Our time-series analysis of TLE data for Starlink and OneWeb mega-constellations uncovers significant discrepancies, further underscoring the need for transparency and improvement in SSA data quality.
We welcome developers, researchers, and SSA practitioners to explore this repository, review our approach, and contribute to this essential field. Feel free to raise issues, suggest improvements, or submit pull requests.
- Clone the repository
- Install the requirements using the megeaconst_env.yml file:
conda env create -f megaconst_env.yml
- Activate the environment:
conda activate megaconst_env
- If you wish to redownload the TLE data: Create a file called SLTrack.ini and put it in the root directory of the repository. The file should contain your Space-track.org username and password in the following format:
[configuration]
username = your_email@email.com
password = YourPassword
-
Ensure that SLTrack.ini is in the .gitignore file so that it is not uploaded to the repository (it should be by default)
-
Run main.py as it is for the full analysis to run from start to finish, or modify it to suit your needs.
Data Processing:
To perform the analyes, the decision to assign each spacecraft a Pandas Dataframe was made. Within this Dataframe, all the data relevant to a satellite (epehemerides, differences between the ephemerides, lat, lon, launch number, TLE latency, etc.) are all included in the NORAD ID's respective Dataframe. These Dataframes were then grouped in lists of Dataframes where each list represented a constellation. As a result, to calculate or perform analyses on these data, most functions in this repo are geared towards reading lists of Pandas Dataframes.
SGP4 Update Algorithm:
The state vectors for each spacecraft orbit are continuously updated with new TLEs as these become available. The outline of the algorithm that performs this is as follows:
- The data for the SUP_TLEs and NORAD_TLEs are already provided to save time. If you wish to re-download the data yourself, you can do so for the NORAD TLEs by running the getdata.py script. Note that there is currently no way of downloading SUP_TLE data programatically so you will have to do this manually from celestrak.org.
- The NORAD IDs of the satellites selected for this study are provided in external/selected_satellites.json
- The TLE_analysis files are around ~1GB in size so I have not added these to the repo. You will have to run the NORAD_vs_SUP_TLE_analysis() function to generate these. This will only take a couple of minutes typically.
SupTLE vs GP vs Operator Ephemeris: The 3-way benchmarking analysis that was performed on the Supplemental, NORAD and Operator ephemerides uses the ephemerides that are stored in the "external/ephem_TLE_compare" folder. Each sub-folder here belongs to one spacecraft (NORAD ID).
The following repo will enable you to replicate all figures in the paper (and a number of others that were not included for brevity). As a quick illustration of the capabilities contained some example are included below.
altitude time series plots
Fourier analysis of the difference time-series
Cross-track/along-track/height/3D difference time-series subplots
Constellation Ground Tracks
Relation between error and Geographical Location
Error Dimension Histogram
Argument of Latitude of TLE Production
Latency of TLE Production
Benchmarking NORAD, Supplemental and Operator Orbit Solutions
Launch statistics Summary statistics of the analysis are generated and can be found in the "output/launch_specific/launch_summary_stats.csv" folder.
If you have any issues with the code, please raise an issue on this repository and I will try to get back to you as soon as possible.
if you get an error when trying to install basemap (particularly on Apple CPU), try:
pip install --upgrade setuptools wheel pip
conda install -c conda-forge cartopy
conda install -c conda-forge geos
conda install -c conda-forge basemap
If you make changes to your environment and you wish to save these to the envionment file:
conda env export > megaconst_env.yml