You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ENH: Control and Guidance to land a rocket on the ground (GFOLD) #209
Is your feature request related to a problem? Please describe.
Me and my colleagues want to implement several algorithms to land a rocket on the ground (GFOLD) is one of the solutions. Is this possible with the current state of this repo?
New Flight parameters: descent_motor, descent_trigger, guidance_schedule
Produces the guidance_schedule (thrust vs. time) that #952 replays
The key design decision discussed in #952: guidance is pre-solved offline and replayed as a thrust schedule during integration — no optimizer inside the ODE loop. This keeps Monte Carlo runs fast (~0.1 s/trajectory) while still supporting optimal landing.
Would love to coordinate if there's active work on #209 to make sure the physics API (#952) exposes what the guidance layer needs.
The dynamics prerequisite is now being discussed in #952. I suggest keeping GFOLD as a guidance layer that produces a schedule, with RocketPy's powered-descent implementation responsible for executing that schedule.
The first interface can be solver-neutral:
input: initial state, target state, vehicle limits, thrust bounds, mass model, and time bounds;
output: timestamped thrust magnitude/direction and ignition/shutdown schedule; and
status: optimal, infeasible, iteration/solver failure, with diagnostics that do not depend on one optimizer.
CasADi or another optimizer can remain an optional backend behind that interface. The core package should still be able to import and run ordinary Flight simulations without the optimization dependency installed.
Acceptance should include one fixed feasible benchmark with a known objective range, one infeasible constraint set, schedule serialization, and replay of the schedule through the #952 dynamics to verify the terminal state within stated tolerances. Guidance tests should not pass merely because the optimizer returned success; the replayed physics result is the relevant end-to-end check.
I recommend waiting until #952 has a stable event and thrust-command API before choosing public GFOLD classes. Once that prerequisite exists, I can help define the benchmark fixture and schedule protocol as a separate first milestone.
Activity
[-]Control and Guidance[/-][+]ENH: Control and Guidance to land a rocket on the ground (GFOLD)[/+]hahahuy commentedon Apr 8, 2026
Relationship to issue #952 (powered descent physics)
I've opened issue #952 which proposes the simulation physics layer that GFOLD (this issue) would need as a foundation:
#952 — Proposal: powered descent / retropropulsion module
#952
The split in scope:
u_dot_powered_descentODE derivative,descent_motorphase inFlightPhases, motor mass accounting during descentFlightparameters:descent_motor,descent_trigger,guidance_scheduleguidance_schedule(thrust vs. time) that #952 replaysThe key design decision discussed in #952: guidance is pre-solved offline and replayed as a thrust schedule during integration — no optimizer inside the ODE loop. This keeps Monte Carlo runs fast (~0.1 s/trajectory) while still supporting optimal landing.
Would love to coordinate if there's active work on #209 to make sure the physics API (#952) exposes what the guidance layer needs.
ting-hong-shieh commentedon Aug 14, 2026
The dynamics prerequisite is now being discussed in #952. I suggest keeping GFOLD as a guidance layer that produces a schedule, with RocketPy's powered-descent implementation responsible for executing that schedule.
The first interface can be solver-neutral:
CasADi or another optimizer can remain an optional backend behind that interface. The core package should still be able to import and run ordinary Flight simulations without the optimization dependency installed.
Acceptance should include one fixed feasible benchmark with a known objective range, one infeasible constraint set, schedule serialization, and replay of the schedule through the #952 dynamics to verify the terminal state within stated tolerances. Guidance tests should not pass merely because the optimizer returned success; the replayed physics result is the relevant end-to-end check.
I recommend waiting until #952 has a stable event and thrust-command API before choosing public GFOLD classes. Once that prerequisite exists, I can help define the benchmark fixture and schedule protocol as a separate first milestone.