Satlla-GS is a simulation framework for modeling the interaction between satellite constellations and ground station (GS) networks. It focuses on evaluating different selection algorithms—ranging from greedy approaches to cooperative game theory (Shapley values)—to optimize signal reception and network utility.
The system can run in a headless mode for statistical data collection or a GUI mode for real-time visualization of satellite passes and network activity.
-
Multi-Mode Scheduling: Implements 6 distinct algorithms for GS-Satellite pairing, including distance-based, probability-based, and cooperative utility models.
-
Cooperative Game Theory: Includes a dedicated module to calculate the Shapley value, estimating the marginal contribution of a specific ground station to the network's total reception probability.
-
Real-time Propagation: Uses SGP4 propagation (via passpredict and skyfield) to calculate satellite positions, slant ranges, and visibility windows based on TLE data.
-
Dynamic Reporting: Automatically generates detailed CSV reports for visibility contacts, message logs, and satellite status, aggregated by timestamp.
-
Visualization: Optional Tkinter-based GUI with map overlay (tkintermapview) to track satellite movements and station status in real-time.
Nanosatellites are becoming a preferred platform for testing innovative technologies and conducting academic research in space. The growing number of nanosatellites generates a massive amount of data that should be transmitted to dedicated ground stations. Nanosatellites typically have relatively narrow bandwidth and their expected visibility is about 1% of the time, assuming a single ground station and a Low Earth Orbit (LEO). Therefore, the effective throughput of nanosatellites is limited.
The logic for selecting which satellite a Ground Station listens to is defined in GroundStation.py and shapley_value.py:
-
ALG_1 (Greedy Distance): Selects the satellite with the closest geometric distance.
-
ALG_2 (Max Probability): Selects the satellite with the highest known reception probability.
-
ALG_3 (Prob Function): Uses an interpolated probability function based on distance.
-
ALG_4 (Local Utility): Maximizes expected utility by considering local GS redundancy within 100km.
-
ALG_5 (Weighted Reward): Prioritizes satellites based on a weight/reward ratio divided by the number of current listeners.
-
ALG_6 (Cooperative Shapley): Calculates the specific contribution (Shapley value) of the GS to the network's success probability and selects the pass with the highest marginal gain.
-
Clone the repository:
git https://github.com/kcglab/edgeGS.git cd edgeGS -
Install:
pip install -r requirements.txt or: pip install pandas numpy skyfield passpredict geopy click pillow tkintermapview scipy requests
Data Setup: Ensure the db/ and files/ directories contain the necessary edgegs_db.json, tle.txt, and gs.txt configuration files as referenced in the utilities.
Run the main script to execute the Satellite Ground Station System:
python main.py [OPTIONS] [FILENAME]-
Options:
- -p, --period (default: 60): Increment time period [sec]
- -m, --mode (default: [0]): Alg Mode
- -e, --execution-time (default: 2): Execution Time [hr]
- -g, --use-gui (default: False): Use GUI
- -s, --satellites (default: 50): Number of Satellites participating
- -gs, --ground-stations (default: 50): Number of Ground Stations participating
- -ts, --timestamp (default: ''): Timestamp
- -ds, --date-start (default: ['01-04-2023 12:00:00']): List of start dates
- FILENAME: Path to the input file (must exist)
python main.py -p 30 -m 1 -e 1 -g -ts '2023-12-10 12:00:00' -ds '01-01-2023 00:00:00'Results are stored in the reports/ folder. A new subfolder is created for every run based on the start timestamp.
- gs_combined.csv: Aggregated reception logs, including CRC checks and probability weights.
- sat_combined.csv: Satellite transmission windows.
- vis_combined.csv: Calculated visibility contacts between satellites and stations.
This project is licensed under the MIT License - see the LICENSE file for details.