You are browsing as a guest. Sign up (or log in) to start making projects!

shayanyk

@shayanyk

Joined June 27th, 2026

  • 2Devlogs
  • 1Projects
  • 0Ships
  • 0Votes
Open comments for this post

11h 32m 39s logged

After getting the basic propagator working, I moved on to the next thing I needed for Gateway Navigator: the State Transition Matrix (STM).
At first I thought this would be fairly straightforward. The idea seemed simple enough — propagate the spacecraft state and also keep track of how small changes in the initial state affect the state later on. In practice, it was a lot more annoying than I expected.
I started by going through the CR3BP equations again and deriving the Jacobian of the dynamics. The main problem was keeping track of all the partial derivatives without making a sign mistake. Since the rotating-frame equations already contain the Coriolis terms, it was surprisingly easy to convince myself that an incorrect expression was correct.
I implemented the variational equations and augmented the spacecraft state with the 36 STM elements. The first propagation technically ran, but the STM results were clearly wrong. Some elements were growing far too quickly and the numerical behaviour didn’t make physical sense.

0
0
10
Open comments for this post

1h 11m 31s logged

DEVLOG — SESSION 1
Date: June 28, 2026
Session: M1 Propagation Engine — Setup & Validation
Set up the full Gateway Navigator project structure from scratch — all 7 module files, core utilities, tests, data and figures directories. Wrote m1_propagator.py containing the CR3BP equations of motion, Jacobi constant function, and a propagate() wrapper around scipy.solve_ivp using the DOP853 integrator. Wrote tests/test_m1_validation.py to verify two gate conditions: position return error under 1 km after one orbital period, and Jacobi drift under 1e-10.
WHAT I LEARNED:
The CR3BP equations model Gateway’s motion in a rotating frame co-moving with the Earth-Moon system. In this frame both primaries are stationary and the spacecraft experiences Coriolis and centrifugal forces alongside gravity. The Jacobi constant is a conserved quantity along any uncontrolled trajectory — if it drifts, the integrator is losing energy, which means the physics is wrong. DOP853 is an 8th-order Runge-Kutta method that conserves energy far better than lower-order integrators.
WHAT BROKE / SURPRISED ME:
Initial conditions copied from blueprint literature failed the position return gate badly — 3415 km error on the first attempt, 362 km on the second. The Jacobi drift was perfect both times (below 1e-13), meaning the integrator itself was working correctly. The problem was that NRHO initial conditions are extraordinarily sensitive.FINAL VALIDATED ICs:
x0 = 1.0170375034517611
z0 = -0.1784174365278452
yd0 = -0.0921378916511874
T = 1.4451252712711455

0
0
15

Followers

Loading…