A MATLAB-based satellite ground station scheduling system for the Cape Peninsula University of Technology (CPUT) Ground Station. This project implements priority-based conflict resolution for managing multiple Low Earth Orbit (LEO) satellite passes.
The GRM Scheduler optimizes ground station resource allocation for tracking four LEO satellites:
- NOAA-20 (Weather monitoring)
- METOP-C (Weather backup)
- LANDSAT-8 (Earth observation)
- ISS (International Space Station)
- Automated satellite overpass prediction using TLE data
- Priority-based conflict resolution
- Visual Gantt chart scheduling output
- 3D satellite scenario visualization
- Performance metrics and fairness analysis
- CSV export for external reporting
GRM-Scheduler/
│
├── README.md # This file
├── LICENSE # MIT License
├── .gitignore # Git ignore rules
│
├── TLE_Data/ # Two-Line Element orbital data
│ ├── noaa20.tle
│ ├── metop-c.tle
│ ├── landsat8.tle
│ └── iss.tle
│
├── Scripts/ # Core MATLAB scripts
│ ├── generate_overpass.m # Compute satellite visibility windows
│ ├── parseOverpassFile.m # Parse overpass CSV files
│ ├── grm_scheduler.m # Main scheduling algorithm
│ ├── visualize_schedule.m # Generate Gantt chart
│ ├── visualize_satellite_scenario.m # 3D orbital visualization
│ ├── calculate_metrics.m # Performance analysis
│ ├── export_schedule.m # Export results to CSV
│ └── test_alternative_priorities.m # Compare priority scenarios
│
├── Tests/ # Testing scripts
│ ├── test_parser.m # Test overpass file parsing
│ └── test_tle_read.m # Verify TLE file reading
│
├── Output/ # Generated results (gitignored)
│ └── .gitkeep # Keep folder in repo
│
├── Docs/ # Documentation
│ ├── USAGE.md # Detailed usage instructions
│ ├── ALGORITHM.md # Scheduling algorithm explanation
│ └── images/ # Screenshots and diagrams
│
└── Examples/ # Example outputs
└── sample_schedule.csv
- MATLAB R2021a or later
- Aerospace Toolbox
- Aerospace Blockset
- Clone the repository:
git clone https://github.com/yourusername/GRM-Scheduler.git
cd GRM-Scheduler-
Open MATLAB and navigate to the project directory
-
Ensure TLE data is up-to-date (see Updating TLE Data)
- Generate satellite overpass predictions:
cd Scripts
generate_overpass- Run the GRM scheduler:
grm_scheduler- Visualize the schedule:
visualize_schedule- Export results:
export_schedule=== GRM Scheduler ===
Total passes: 87
Conflicts detected: 12
Conflicts resolved: 12
Scheduling Summary:
Total passes: 87
Scheduled: 75
Deferred: 12
Success rate: 86.2%
Ground Station Utilization: 15.47%
Total scheduled time: 668.5 minutes (11.1 hours)
Simulation duration: 2880 minutes (48 hours)
Located in generate_overpass.m:
gs_lat = -33.9260; % CPUT Bellville campus
gs_lon = 18.6375;
gs_alt = 25; % meters
gs_minElev = 5; % degreesDefined in grm_scheduler.m:
priorities.NOAA20 = 1; % Highest priority
priorities.ISS = 2;
priorities.METOPC = 3;
priorities.LANDSAT8 = 4; % Lowest prioritystartTime = datetime(2025, 10, 1, 0, 0, 0, 'TimeZone', 'UTC');
stopTime = startTime + hours(48);The GRM scheduler uses a priority-based greedy algorithm:
- Load overpass data for all satellites from pre-computed CSV files
- Detect conflicts by checking for overlapping visibility windows
- Resolve conflicts using satellite priorities:
- Compare priority values (lower = higher priority)
- Schedule the higher-priority satellite
- Defer the lower-priority satellite
- Output results as scheduled and deferred pass lists
For detailed algorithm explanation, see ALGORITHM.md.
Run all tests from the Tests/ directory:
cd Tests
test_tle_read % Verify TLE files are readable
test_parser % Test CSV parsing functionalityCompare different priority configurations:
cd Scripts
test_alternative_priorities % Compare Weather-first vs ISS-firstThe scheduler computes the following metrics:
| Metric | Description |
|---|---|
| Success Rate | Percentage of passes successfully scheduled |
| Conflict Resolution Rate | Percentage of conflicts resolved |
| Ground Station Utilization | Percentage of time the station is actively tracking |
| Fairness Coefficient | Distribution of passes across satellites (CV%) |
| Average Pass Duration | Mean duration of scheduled passes |
Run calculate_metrics.m for detailed analysis.
TLE (Two-Line Element) data becomes outdated quickly. Update monthly:
-
Download fresh TLE data from CelesTrak:
-
Replace files in
TLE_Data/directory -
Re-run
generate_overpass.mto regenerate predictions
- USAGE.md - Detailed usage guide with examples
- ALGORITHM.md - In-depth algorithm explanation
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Reabetswe Schalotte Matlhola BTech (Hons) Computer Engineering, CPUT
Supervisor:
Dr. Oluwaseyi Paul Babalola
Cape Peninsula University of Technology
Department of Electrical, Electronic and Computer Engineering
- Email: babalolao@cput.ac.za
- Personal: babalolaseyip@gmail.com
- LinkedIn: linkedin.com/in/oluwaseyi-paul-babalola-06384715
- Google Scholar: Oluwaseyi Babalola
- ResearchGate: Oluwaseyi-Babalola
- ORCID: 0000-0001-9681-8437
If you use this software in your research, please cite:
@software{babalola2025grm,
author = {Babalola, Oluwaseyi Paul},
title = {Ground Resource Management Scheduler for LEO Satellites},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
url = {https://github.com/yourusername/GRM-Scheduler}
}- Cape Peninsula University of Technology
- French South African Institute of Technology (FSATI)
- MATLAB Aerospace Toolbox team
- CelesTrak for providing TLE data
For questions or issues:
- 📧 Email: babalolao@cput.ac.za
- 🐛 Open an Issue
If you find this project useful, please consider giving it a ⭐️ on GitHub!
Last Updated: January 2025
Version: 1.0.0