Control Models

Top  Previous  Next

The TrajectoryPhase object currently supports three control models: ballistic (no control), simple thruster, and ideal solar sail. All control models and their associated variables are formulated in the MJ2000 Earth Equator coordinate frame.

 

// Choose a control model

// ControlType = 0: Ballistic

// ControlType = 1: Simple Thruster

// ControlType = 2: Ideal Solar Sail

 

TrajectoryPhase phase;

phase.ControlModel.ControlType = 1;

 

Note: Assigning a new value to ControlModel.ControlType property will erase the existing control variables in the TrajectoryPhase and replace them with default values for the chosen control type.

 

Ballistic

The ballistic control model allows users to model a trajectory segment with no control. The example below demonstrates setting up a TrajectoryPhase object using the ballistic control model:

 

// Ballistic

phase.ControlModel.ControlType = 0;

 

Simple Thruster

The simple thruster control model allows users to model continuous thrust maneuvers using a thruster of constant Isp and maximum thrust. By default, the thrust level across a TrajectoryPhase that is using the simple thruster control model can vary from zero up to the maximum thrust level. The simple thruster control model allows users to have full control over thruster parameters such as DutyCycle, Isp, and Thrust through the TrajectoryPhase.SimpleThrusterOptions. The example below demonstrates setting up a TrajectoryPhase object using the simple thruster control model:

 

// Simple Thruster

phase.ControlModel.ControlType = 1;

phase.ControlModel.SimpleThrusterOptions.Thrust = 5; // N

phase.ControlModel.SimpleThrusterOptions.Isp = 800; // s

phase.ControlModel.SimpleThrusterOptions.DutyCycle = 1;  

 

Ideal Solar Sail

The concept of solar sailing provides a unique opportunity to harness the solar radiation pressure (SRP) and leverage the dynamics to maneuver a sail-based spacecraft. Light has an extremely small mass but has a very high velocity, an with such a high velocity solar photons have momentum. A solar sail consists of a large, lightweight and highly reflective surface that relies on the momentum transferred from solar photons for passive propulsion. The ideal solar sail control model allows users to have full control over sail parameters such as Area and EfficiencyFactor through the TrajectoryPhase.IdealSolarSailOptions. The example below demonstrates setting up a TrajectoryPhase object using the ideal sail control control model for a sail with a reflective efficiency of 1.

 

// Ideal Sail

phase.ControlModel.ControlType = 2;

phase.ControlModel.IdealSolarSailOptions.Area = 25; // m^2

phase.ControlModel.IdealSolarSailOptions.EfficiencyFactor = 1;

 

Shadowing Bodies

The TrajectoryPhase object allows for shadow constraints through the use of the TrajectoryPhase.AddShadowingBody() method. When shadowing bodies are present and the TrajectoryPhase.ControlType is set to 'Simple Thruster', constraints will be applied which prevents thrust when the path of the TrajectoryPhase is shadowed by at least one shadowing body. When shadowing bodies are present and the TrajectoryPhase.ControlModel.ControlType is set to 'Ideal Solar Sail', the solar sail will produce no thrust when the path of the TrajectoryPhase is shadowed by at least one shadowing body. Once a shadowing body has been added, a buffer region for turning on/off thrust before/after the shadow event can be configured through the TrajectoryPhase.SimpleThrusterOptions. The example below demonstrates adding the Moon as a shadowing body with a shadow constraint buffer factor of 1.1 to a TrajectoryPhase:

 

// Add the Moon as a shadowing body

phase.ControlModel.ControlType = 1; // Simple Thruster

phase.ControlModel.AddShadowingBody(Moon);

 

// Add a buffer factor of 2

phase.ControlModel.SimpleThrusterOptions.ShadowConstraintBufferFactor = 1.1; // Scales the spherical radius of the shadowing body

 

Note: TrajectoryPhase shadow calculations use a spherical body assumption and do not account for body flattening.

 

To remove a shadowing body from the TrajectoryPhase, use the TrajectoryPhase.RemoveShadowingBody(). To remove all shadow constraints from the TrajectoryPhase, all bodies must be removed using the TrajectoryPhase.RemoveAllShadowingBodies() method as shown below:

 

// Remove the Moon as a shadowing body

phase.ControlModel.RemoveShadowingBody(Moon);

 

// Remove all shadowing bodies

phase.ControlModel.RemoveAllShadowingBodies();

 

See Also


Trajectory Phases Guide

TrajectoryPhase Object

SimpleThrusterOptions

IdealSailOptions

Variable and Constraint Structure