Skip to content

ENH: Full support for multi-stage rockets #662

@Gui-FernandesBR

Description

@Gui-FernandesBR

RocketPy already allows you to run mult-stage rocket simulations. However, we all now it is not an easy task. Let's improve user's experience with this feature request.

We can divide this task into 3 main blocks:

  1. Create a Stage class
  2. Use the new Stage class in the Rocket
  3. Improves the Flight class to deal with different stage flights

Details of each part:

  1. Create the Stage class
  • The new class should work in a pretty similar way to the current Rocket class.
  • It should have methods like add_surfaces and add_motor.
  • Moment of inertias should be optional arguments
  1. Use the new stage class in the Rocket class
  • A new attribute should be available: list Rocket.stages: list[Stage] should be created
  • When you initialize a Rocket, it already comes with an empty Stage, it is selected and ready to be used.
  • Rocket.add_surfaces actually adds the surfaces to the current selected stage.
  1. Improve the Flight class.
  • Flight setting or flight model file: Before simulating the flight, we should be able to generate the "simulation model" file, which could be a .json file or something more readable. The flight class should be able to read this simulation model file.
  • The simulation flight phases/stage should be predicted before the flight actually happens. Maybe a "Flight settings" class?
  • We need a better handling of the Events om our simulation. It's time to create a FlightEvents enum.
  • We need custom exceptions in the flight class, this will make our lives pretty easier.
  • We need to make the rail length argument optional now.

Breaking changes (postponed to future versions):

  • Create a Flight.simulate() method and stop running the simulation in the init method.

Additional requirements:

  • Inertia Tensors must be stored using the new class
  • Q: is it time for a "EjectablePayload" class?

Metadata

Metadata

Labels

EnhancementNew feature or request, including adjustments in current codesFlightFlight Class related features

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions