Skip to content

babalolaseyip/GRM-Scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ground Resource Management (GRM) Scheduler

MATLAB License Status Version

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.

Overview

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)

Key Features

  • 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

Repository Structure

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

Quick Start

Prerequisites

  • MATLAB R2021a or later
  • Aerospace Toolbox
  • Aerospace Blockset

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/GRM-Scheduler.git
cd GRM-Scheduler
  1. Open MATLAB and navigate to the project directory

  2. Ensure TLE data is up-to-date (see Updating TLE Data)

Basic Usage

  1. Generate satellite overpass predictions:
cd Scripts
generate_overpass
  1. Run the GRM scheduler:
grm_scheduler
  1. Visualize the schedule:
visualize_schedule
  1. Export results:
export_schedule

Example Output

Scheduling Performance

=== 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

Ground Station Utilization: 15.47%
Total scheduled time: 668.5 minutes (11.1 hours)
Simulation duration: 2880 minutes (48 hours)

Configuration

Ground Station Parameters

Located in generate_overpass.m:

gs_lat = -33.9260;  % CPUT Bellville campus
gs_lon = 18.6375;
gs_alt = 25;        % meters
gs_minElev = 5;     % degrees

Satellite Priorities

Defined in grm_scheduler.m:

priorities.NOAA20 = 1;     % Highest priority
priorities.ISS = 2;
priorities.METOPC = 3;
priorities.LANDSAT8 = 4;   % Lowest priority

Simulation Time Window

startTime = datetime(2025, 10, 1, 0, 0, 0, 'TimeZone', 'UTC');
stopTime = startTime + hours(48);

Algorithm Overview

The GRM scheduler uses a priority-based greedy algorithm:

  1. Load overpass data for all satellites from pre-computed CSV files
  2. Detect conflicts by checking for overlapping visibility windows
  3. Resolve conflicts using satellite priorities:
    • Compare priority values (lower = higher priority)
    • Schedule the higher-priority satellite
    • Defer the lower-priority satellite
  4. Output results as scheduled and deferred pass lists

For detailed algorithm explanation, see ALGORITHM.md.


Testing

Run all tests from the Tests/ directory:

cd Tests
test_tle_read      % Verify TLE files are readable
test_parser        % Test CSV parsing functionality

Compare different priority configurations:

cd Scripts
test_alternative_priorities  % Compare Weather-first vs ISS-first

Performance Metrics

The 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.


Updating TLE Data

TLE (Two-Line Element) data becomes outdated quickly. Update monthly:

  1. Download fresh TLE data from CelesTrak:

  2. Replace files in TLE_Data/ directory

  3. Re-run generate_overpass.m to regenerate predictions


Documentation


Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Authors

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


Citation

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}
}

Acknowledgments

  • Cape Peninsula University of Technology
  • French South African Institute of Technology (FSATI)
  • MATLAB Aerospace Toolbox team
  • CelesTrak for providing TLE data

Support

For questions or issues:


Star History

If you find this project useful, please consider giving it a ⭐️ on GitHub!


Last Updated: January 2025
Version: 1.0.0