← Back to project catalogue
GP-AE-0OEHTTNAerospaceReady

Satellite Ground-Station Contact Planner

A reproducible aerospace study using public OMM records and four notional Indian reference locations to evaluate satellite passes, S-band geometry, contact conflicts, scheduling and sensitivity.

Satellite Ground-Station Contact Planner project visual
GP-AE-0OEHTTN · Aerospace
  • Python
  • Skyfield
  • SGP4
  • NumPy
  • Pandas
  • Matplotlib
  • Jupyter

Project definition

Problem statement

A public orbital record can indicate when a satellite is geometrically visible, but a useful contact also depends on coordinate frames, elevation mask, range, Doppler, link assumptions, antenna transition time, priority and overlapping windows.

The engineering problem is to preserve the exact orbital snapshot, calculate opportunities consistently, schedule one antenna at each reference location and state why the result is educational rather than operational.

Project objectives

  • Propagate CARTOSAT-3, RESOURCESAT-2A, EOS-4 and EOS-08 from a retained 27 August 2026 CelesTrak OMM snapshot.
  • Calculate ground tracks, topocentric azimuth, elevation, slant range and range rate for Bengaluru, Lucknow, Shillong and Port Blair reference locations.
  • Interpolate acquisition and loss crossings at a 10 degree elevation mask.
  • Estimate 2.2 GHz Doppler and a transparent clear-sky S-band link trend.
  • Schedule contacts under one antenna per station, spacecraft priority and a 180 second transition.
  • Measure mask sensitivity, 10 versus 20 second sampling convergence and seeded timing robustness.

Project structure

Project components

01

Data checks

Loads the retained OMM and notional-station CSV files and validates required fields, values and identifiers.

02

Orbital model

Constructs Skyfield SGP4 objects and calculates descriptive orbital period and inclination evidence.

03

Pass analysis

Transforms each orbit into station-centred geometry and interpolates mask crossings for every satellite-station pair.

04

Link estimate

Calculates unit-tested free-space loss, first-order Doppler and a declared notional C/N0 trend.

05

Contact scheduler

Applies deterministic priority and one-antenna transition constraints while retaining selected and rejected evidence.

06

Sensitivity study

Compares elevation masks, sampling steps and two thousand seeded timing perturbations.

Methodology

Project workflow

  1. 01
    Verify the snapshot

    The study loads four fixed public OMM rows and four explicitly notional Indian reference locations.

  2. 02
    Propagate geometry

    SGP4 states are transformed into topocentric elevation, azimuth, range and range-rate series.

  3. 03
    Build candidates

    Interpolated mask crossings create complete pass records with duration, Doppler and link descriptors.

  4. 04
    Resolve conflicts

    The scheduler selects feasible contacts at each station under priority and transition rules.

  5. 05
    Test assumptions

    Mask, sampling and timing experiments measure how sensitive the result is to declared choices.

  6. 06
    Review the evidence

    CSV, JSON, figures, tests and documentation trace every headline result to retained inputs.

Demonstration scenario

Across the fixed 48-hour interval, the 10 degree mask produces 107 candidates. The scheduler retains 98 contacts and 588.713 minutes while rejecting nine conflicts. The highest pass is EOS-08 from Shillong Reference at 86.790 degrees, and the maximum sampling difference is 0.024011 minute.

Engineering

Tools and method

Tools
The project uses Python, Skyfield, SGP4, NumPy, Pandas, Matplotlib, Jupyter for subject analysis, simulation, and results.
Orbital source
Four public CelesTrak CSV OMM rows retained with epoch and provenance.
Astrodynamics
Skyfield and SGP4 for propagation, time-aware frame conversion and local observing geometry.
Numerical analysis
Python, NumPy and Pandas for interpolation, sensitivity, scheduling and machine-readable evidence.
Communication geometry
Unit-tested free-space and Doppler equations with all frequencies and distances declared explicitly.
Verification
66 tests, 99 percent branch-aware coverage, convergence checks, dependency audit and pinned Docker execution.

Testing

Evaluation

Evaluation measures

  • Candidate and scheduled contact counts by satellite and station
  • Scheduled minutes, rejected conflicts and single-antenna utilisation
  • Maximum elevation, minimum range, Doppler and notional C/N0 across each pass
  • Access-time and pass-count sensitivity to elevation mask
  • Pass-count agreement and access-time difference between 10 and 20 second sampling
  • Candidate selection probability across two thousand seeded timing perturbations
  • Reproducibility through fixed inputs, retained outputs, 66 tests and dependency audit

Project boundaries

  • All four ground locations are notional city references and are not operational station coordinates.
  • The project does not transmit, receive, command, point an antenna, track a live satellite or establish contact.
  • Public OMM predictions are educational and are not suitable for collision avoidance, flight safety or guaranteed availability.
  • The S-band link estimate omits real equipment, antenna, atmospheric, coding, interference and licensing evidence.
  • Operational use requires authorized sites, current mission data, qualified engineering review and relevant regulatory approval.

Included

  1. 01Complete Python source code
  2. 02Four retained public OMM records and four notional Indian reference locations
  3. 03Eight machine-readable result files and fifteen analytical figures
  4. 0499-page project report in PDF and editable Word formats
  5. 054-page setup and usage guide in PDF and editable Word formats
  6. 06Sixty annotated references and three public-domain NASA literature images
  7. 0766 automated tests with 99 percent branch-aware coverage

Project record

No information is collected on this page.

Permanent project ID
GP-AE-0OEHTTN
Catalogued
21 Aug 2026
Completed
27 Aug 2026
Verified
27 Aug 2026
Demonstration
Included in repository

Handover

After purchase

  1. 01
    Payment is confirmed

    The project is marked unavailable and cannot be purchased again.

  2. 02
    Repository access is granted

    The buyer's submitted GitHub account receives access to the private repository.

  3. 03
    The purchase record is delivered

    The certification sheet is prepared from the reviewed buyer details and sent privately by email.