Satellite Orbit Propagator
Predict where any satellite will be, minute by minute
Last reviewed: March 2026Overview
There are over 10,000 active satellites orbiting Earth right now, and someone has to know where each one is at every moment. Orbit propagation — predicting a satellite's future position from its current state — is one of the foundational skills in space engineering.
In this project, you'll build an orbit propagator from first principles. Starting with Keplerian two-body mechanics, you'll implement the equations of motion, add J2 perturbation (Earth's oblateness), and validate your predictions against real satellite tracking data from NORAD.
You can use either Python (with NumPy/SciPy) or MATLAB — both are standard tools for orbital mechanics work. By the end, you'll be able to input a satellite's orbital elements and predict its position days into the future.
What You'll Learn
- ✓ Implement the two-body equations of motion and numerical integration (RK4)
- ✓ Convert between orbital elements and Cartesian state vectors
- ✓ Add J2 perturbation to model Earth's oblateness
- ✓ Parse TLE (Two-Line Element) data from NORAD/CelesTrak
- ✓ Validate propagated positions against real tracking data
- ✓ Visualize orbits in 3D and ground tracks on a world map
Step-by-Step Guide
Implement Two-Body Equations of Motion
Start with Newton's law of gravitation: a = -μ/r³ × r, where μ is Earth's gravitational parameter (3.986×10¹⁴ m³/s²). Implement a 4th-order Runge-Kutta (RK4) integrator to propagate the state vector [x, y, z, vx, vy, vz] forward in time.
Test with a known circular orbit at 400 km altitude (ISS-like). The period should be about 92.6 minutes. If your propagated orbit drifts or energy isn't conserved, debug your integrator.
Add Orbital Element Conversions
Implement functions to convert between classical orbital elements (a, e, i, Ω, ω, ν) and Cartesian state vectors (r, v). This lets you initialize orbits from standard catalog data and interpret results intuitively.
Test edge cases: circular orbits (e≈0), equatorial orbits (i≈0), and the singularities that classical elements have in these cases.
Add J2 Perturbation
Earth isn't a perfect sphere — it bulges at the equator. The J2 perturbation is the dominant gravitational perturbation and causes two important effects: nodal regression (Ω drifts) and apsidal precession (ω rotates).
Add the J2 acceleration to your equations of motion. J2 = 1.08263×10⁻³. Propagate a polar orbit and verify that the right ascension of ascending node (RAAN) regresses at the predicted rate.
Parse Real TLE Data
Download Two-Line Element (TLE) data for the ISS from CelesTrak. Write a parser that extracts the orbital elements from the TLE format. Convert the mean elements to osculating elements for your propagator.
For a simpler approach, use the SGP4 algorithm (available as a Python library) as a reference to compare against your propagator.
Propagate and Validate
Propagate the ISS orbit forward 24 hours using your code. Compare your predicted position against the actual ISS position from CelesTrak or NASA's Horizons system.
Quantify the error: How far off is your prediction after 1 orbit? After 10 orbits? After 24 hours? Without drag modeling, your error will grow — this shows you why atmospheric drag matters for LEO satellites.
Visualize the Results
Create a 3D orbit visualization using matplotlib's 3D plotting or a library like Plotly. Show the orbit around an Earth sphere with the ground track projected below.
Plot the ground track on a 2D world map. For the ISS, you should see the distinctive sinusoidal pattern shifting westward with each orbit due to Earth's rotation.
Career Connection
See how this project connects to real aerospace careers.
Space Operations →
Orbit propagation is the fundamental skill for satellite operators, conjunction analysts, and mission planners
Aerospace Engineer →
Orbital mechanics is core to mission design — from selecting orbits to planning maneuvers and transfers
Air Traffic Control →
Space traffic management is an emerging field that applies orbit prediction to prevent satellite collisions
Astronaut →
Astronauts must understand orbital mechanics for rendezvous, docking, and EVA planning
Go Further
Expand your orbital mechanics capabilities:
- Add atmospheric drag — implement an exponential atmosphere model and see how it affects LEO orbit lifetime
- Implement Hohmann transfers — calculate and simulate orbital maneuvers between two orbits
- Build a conjunction assessment tool — compare propagated orbits of two objects and calculate closest approach
- Try Ansys STK — set up the same scenario in STK and compare with your from-scratch results