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:

Booster Heirarchy

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 thrust

  • an 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:

GSMultiStageBooster

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 plane

  • LINEAR_TAN_EC: Use a linear tangent steering law

  • PITCH_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 stage

  • display 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:

GSStageDisplay

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:

Payload GSDisplayBody