Rocket Launch
Contents
Rocket Launch¶
Simulating the launch of a rocket from a planet surface into orbit is supported in GE2. It allows:
initial positioning of the launch site
designation of a target inclination for the desired orbit
selection of ascent control/guidance (manual, choice of steering laws or a precalculated pitch table)
modeling of fuel consumption, throttle adjustments and staging
effects of atmospheric drag
As the above list suggests, a scene that models a rocket launch will involve some complexity. GE2 makes every effort to provide as simple as possible a set of components to model a rocket launch.
In the launch sample scenes the physical body and display objects are separated. In the
EarthAscentTwoStagex10
the heirarchy is:
There are three main branches:
ShipLocalDisplay: A local “ship view” camera that follows the booster during launch
Launch2DDisplay: A 2D vertical vs horizontal plot of the ascent trajectory
GSBodies: The physical bodies added to the controller
Each of the display scenes makes reference to bodies in the GSBodies
part of the tree.
The GSBodies/Earth/F9LaunchVehicle
contains the GSBoosterMultiStage
. Each of the GSDisplay
components has a GSStageDisplayManager
to handle the display specific logic for booster staging.
Initial Setup¶
A rocket launch begins with an object on the surface of a planet. The rocket is represented by a GSBody
component that is configured with a FIXED
propagator and initial data provided by LATLONG_POS
.
The fixed propagator ensures that the object does not move (otherwise gravity would pull it through the
surface of the planet to the interior). The LATLOG_POS
input requires that the center body have the
optional physical information initialized because it needs the radius of the planet to determine the
initial position.
Note
A future release will allow the fixed surface location to be placed on a rotating planet. This will also include the rotational velocity in the launch initial conditions.
The launch site will be at the correct radius from the planet center but this may not correspond
to a point on the sphere used to display the planet. The sphere renderer ensures that the vertices
of the triangulated sphere are the radius of the sphere but if the launch site loacation is over one
of the faces it will “hover above” the surface. The game design may choose to solve this in various ways
(e.g. rotate the model so a vertex is at the launch site). In the demo scenes the solution chosen it to
position a “shim”. A cube is positioned so that it’s top face is at the launch site and the normal is
aligned radially. See the LaunchShim
component in the EarthAscentTwoStagex10
.
The rocket GSBody
requires several external acceleration elements to model the ascent:
a
BOOSTER
external acceleration to handle the rocket thrustan
EARTH_ATMPSPHERE
model to account for air resistance and it’s variation with height
These components are described in further detail below. To simplify the creation of a rocket with these
elements the class GSBoosterMultiStage
is added to the rocket GSBody
. This component manages the
launch of the rocket GSBody
triggered by pressing spacebar. See launch.
In the example scene EarthAscentTwoStagex10
a two stage plus payload rocket is configured. The
inspector for this is:
Payload Body The GSBody
that represents the rocket.
GSController The controller for the evolution of the booster.
Display Orbit An optional reference to the component to display an orbit for the rocket.
Payload Mass(kg) The payload mass.
Stage Payload Flag to indicate if the payload is a distinct object from the final stage. For example
in the LunarAscent
of an Apollo lunar module the stage 0 and payload are the same object and do not
separate when the stage burn is completed.
Number of Stages Number of stages in the booster.
Stage Information For each stage the values of dry mass, fuel mass, thrust (N) and burn time must be provided.
Guidance The rocket ascent in the desired orbital plane can be controlled in several ways. See the section on guidance below for more details.
Guidance¶
Guiding a rocket to orbit is difficult. There is no simple mathematcial “function” that accounts for the continuous mass loss, atmospheric drag and gravity and provides “the path” to a desired orbit. GE2 provides several options.
Note
There will be future work on enhancing the options for ascent guidance.
The current launch guidance options are:
MANUAL
: Allow playewr control of ascent using the A/D keys to alter pitch in the designated launch planeLINEAR_TAN_EC
: Use a linear tangent steering lawPITCH_TABLE
: Use a file containing a series of time/pitch values to control the ascent
Linear Tangent Steering¶
TODO
Launch¶
The GSMultiStageBooster
acts a controller for the launch operation. When space
is pressed it will launch the body.
Recall that the body was initially configured as fixed. In order to be inflluenced by gravity and the external acceleration
of the rocket engine the body must be changed to a GRAVITY
propagator. The control code does this by deleting the
launch body and the re-adding as an object with a gravity propagator. The control code also adds a BOOSTER
external
acceleration configured with the number of stages and stage specifics specified in the inspector. The booster
external acceleration also manages the ascent guidance. If the Earth Atmosphere flag is enabled the controller
also adds an Earth atmosphere model.
Staging¶
Rocket staging happens automatically when all the fuel of the active stage is consumed and there is another stage in the
stack to be activated. The logic for this is part of the implementation of the BOOSTER
external acceleration. This is
necessary because the physics evolution must continue through the staging time without stopping. The GECore
generated
physics events to report on staging events and the GSBoosterMultiStage
handles these events.
A staging event requires two actions be taken:
a new body must be created in the
GECore
to represent the spent stagedisplay code needs to show the new vehicle configuration and display the spent stage in all
GSDisplay
elements that are showing the rocket
Display Logic for Ascent¶
GSStageDisplayManager
handles display components for a rocket launch. It takes action on launch and when a staging event is reported.
On a launch the manager ensures that any TrailRenderer
components on the payload display object are set to emit a trail.
The inspector for this is:
Booster A reference to the GDBoosterMultistage
controlling the rocket launch.
Stage Display Bodies A list of display bodies (initially inactive) that are to be used to represent stages once they have been dropped.
Payload Display Body The payload display body. This is active by default and generally has a series of models as children. Initially the model represents the payload and all booster stages. As stages are dropped the stage manager will inactivate this model and activate the model corresponding the active stage of the booster.
Payload Display Model per Stage The model for each active stage of the payload.
In order to align the payload and stage models with the current ascent pitch the GSDisplay
components should have their
GSDisplayBody
configured with a display object and display object mode set to VEL_ALIGN
. For example: