Skip to content

hodini007/orbisense

Repository files navigation

🌍 OrbiSense

An interactive, high-precision Python satellite tracking application. Predict passes and map ground-tracks for Weather satellites, the ISS, Starlink, and Amateur Radio using the robust skyfield SGP4 physics engine.

Python CustomTkinter Skyfield


🚀 Overview

OrbiSense combines raw mathematical orbital mechanics with a beautiful, dark-mode customtkinter UI. Originally built to intercept weather-satellite telemetry during severe cyclones, it has evolved into a fully generalized tracking suite. Simply launch the application, pick an orbital category, and instantly visualize the satellite's exact position on a 2D map—or automate a 7-day scan to find the optimal reception windows!

⚙️ Architecture & Data Flow

The application follows a strict modular design, separating the visual interface from the heavy orbital calculations.

sequenceDiagram
    autonumber
    actor User
    participant UI as Main.py (UI)
    participant TLE as TLE Loader (Data)
    participant Engine as Orbit Engine (Physics)
    participant API as CelesTrak / Skyfield
    
    User->>UI: Selects Category & Coordinates
    UI->>TLE: fetch_tles(category)
    TLE->>API: Download TLE (24h Cache)
    API-->>TLE: raw tle text
    TLE-->>UI: Return EarthSatellites
    
    User->>UI: Clicks "Check Passes"
    UI->>Engine: calculate_passes(satellite, lat, lon)
    Engine->>API: SGP4 Propagation (satellite.at(t))
    API-->>Engine: ECI Coordinates
    Engine-->>UI: Array of Azimuth, Elevation, Time
    UI-->>User: Renders Ground Track Map & Table
Loading

🧠 Core Modules

  1. tle_loader.py (Data Acquisition)
    • Manages local caching in the tle_cache directory with a 24-hour TTL (Time-To-Live).
    • Parses NORAD 3-line elements into usable Python objects without spamming upstream servers.
  2. orbit_engine.py (Physics "Brain")
    • Uses Skyfield to convert geocentric coordinates to observer-relative Topos coordinates (WGS84).
    • Utilizes root-finding algorithms to mathematically solve for the exact moments a satellite's elevation crosses the 0° horizon.
  3. main.py (Visualization "Face")
    • Features heavily threaded operations (threading.Thread) to keep the UI fluid while iterating through 7-day orbital predictions for over 50+ satellites.

🛠️ Built With

  • CustomTkinter - For the modern, dark-mode GUI.
  • Skyfield - The core physics engine handling SGP4 propagation and time arrays.
  • Matplotlib - Embedded directly into Tkinter to render the dynamic 2D Ground Track map.
  • Requests - Handles HTTP requests for fresh TLE data from CelesTrak.
  • Numpy - Used by Skyfield and Matplotlib for blazing-fast array math operations.

About

An interactive, high-precision Python satellite tracking application. Predict passes and map ground-tracks for Weather satellites, the ISS, Starlink, and Amateur Radio.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages