Skip to content

Maneuver Modelling

Maneuver nodes capture the intent of each burn and keep execution consistent across the worker, mission planner, and analytics tools.

Node Representation

  • Immutable ManeuverNode entities store execution time, inertial delta-v, optional TNW coordinates, and metadata.
  • ManeuverService owns CRUD operations, orbit cache invalidation, and execution history per spacecraft.
  • Nodes authored in TNW (delta-v_R, delta-v_T, delta-v_N) pass through CoordinateTransforms.transformTNWToInertialWithPropagation. The rotation matrix is built from spacecraft position/velocity at the planned execution epoch:
    delta_v_ECI = T_TNW->ECI * delta_v_TNW

Burn Execution

  • During propagation the service evaluates shouldExecuteAtTime against the integrator step. Matching nodes sum directly into spacecraft velocity for impulsive burns.
  • Finite burns integrate through ThrustIntegrator, which slices each burn, updates mass flow, and accumulates delta-v:
    m(t) = m0 - m_dot * t
    m_dot = T / (Isp * g0)
    delta_v = integral(T / m(t) dt) = Isp * g0 * ln(m0 / m1)
  • PropulsionSystemService validates thrust, I_sp, and dry-mass constraints. If propellant is insufficient, the burn truncates and surfaces a warning in the mission planner.

Planning Tools

  • ManeuverPlanner runs Lambert solves over departure/time-of-flight grids to build porkchop plots. Output includes departure and arrival delta-v costs for each cell.
  • Mission planner previews use the same node infrastructure, so approved plans flow directly into the worker without reformatting.
  • Execution results (velocity before/after, delta-v applied) stream into orbit caches for timeline, analytics, and replay tooling.

When extending manoeuvre logic, prefer adding new burn modes or planners that emit standard nodes instead of bypassing the service; the rest of the simulation ecosystem assumes nodes remain immutable once scheduled.

Built with VitePress