4.3. Thrust Guidance¶
When including thrust in the orbit propagation, it may often be desirable to modify the thrust properties of the vehicle as a function of the current environment. Depending on the settings of the system, the magnitude and direction of this force can be controlled to within certain bounds. How the thrust guidance is setup is the topic of this page.
In Tudat, we define the thrust force by two separate types of settings (which may or may not be linked):
- The direction of the thrust.
- The magnitude of the thrust.
In fact, when creating settings for a thrust force, the user needs to provide settings for these two aspects of the force model
boost::shared_ptr< ThrustDirectionGuidanceSettings > thrustDirectionSettings;
boost::shared_ptr< ThrustEngineSettings > thrustMagnitudeSettings;
SelectedAccelerationMap accelerationSettingsMap;
accelerationSettingsMap[ "Vehicle" ][ "Vehicle" ].push_back( boost::make_shared< ThrustAccelerationSettings >( thrustDirectionSettings, thrustMagnitudeSettings ) );
In the above code snippet, two things may stand out. First of all, we define the thrust force as one that the vehicle exerts on itself. Secondly, to define the thrust force, the user must provide two objects: one of type (derived from) ThrustDirectionGuidanceSettings
and ThrustEngineSettings
.
4.3.1. Thrust direction¶
For the direction of the thrust, there are presently four available types of guidance. As is done for the acceleration models, some of the types of thrust direction require a specific derived class of ThrustDirectionGuidanceSettings
, while others are defined purely by their type.
-
class
ThrustDirectionGuidanceSettings
¶ Base class for the setting for the direction of the thrust.
-
class
ThrustDirectionFromStateGuidanceSettings
¶ In various cases, the thrust direction is to be in line with the position or velocity w.r.t. some body. The user must specify:
- The central body w.r.t. which the state is to be computed. For instance, the propagation of a vehicle may be done w.r.t. the Sun, while the thrust direction is computed from the state w.r.t. the Earth.
- Whether the thrust is colinear with velocity or position w.r.t. the central body.
- Whether the thrust force is in the same direction, or opposite to the direction, of the state of the vehicle w.r.t. the central body.
-
class
CustomThrustDirectionSettings
¶ For a generalized thrust direction guidance, the thrust can be defined as an arbitrary function of time. This allows a broad range of options to be defined, at the expense of increased complexity (somehow this thrust direction needs to be manually defined). The user must specify:
- A function returning a
Eigen::Vector3d
(which should be of unit norm!) as a function of adouble
(representing time). If any help is required in defining this function for your specific application, don’t hesitate to contact the Tudat support team.
- A function returning a
-
class
CustomThrustOrientationSettings
¶ As an alternative expression for generalized thrust direction guidance, the thrust orientation can be defined as an arbitrary function of time. As with the custom thrust direction. this allows a broad range of options to be defined, at the expense of increased complexity). The user must specify:
- A function returning a
Eigen::Quateriond
as a function of adouble
(representing time). The quaternion defines the rotation from the body-fixed to the propagation frame. If any help is required in defining this function for your specific application, don’t hesitate to contact the Tudat support team.
Note
The direction of the thrust in the body-fixed frame (which is required for the computation of the thrust) is defined in the
ThrustEngineSettings
class.- A function returning a
-
Thrust direction from existing orientation
In some cases (discussed in more detail below), the vehicle’s orientation may be predefined, either due to aerodynamic guidance of concurrent propagation of the rotational equations of motion. In such a case, the thrust direction is computed from the body-fixed thrust direction and the existing vehicle orientation. This thrust direction does not require a specific derived class, but instead only requires the input of
thrust_direction_from_existing_body_orientation
to theThrustDirectionGuidanceSettings
constructor.
4.3.2. Thrust magnitude¶
To define the thrust magnitude, there are presently three available types of settings, each with its own dedicated derived class of ThrustEngineSettings
. We note that presently, the definition of the thrust direction in the body-fixed frame is also defined through these derived classes. In essence, the ThrustEngineSettings
defines all local (to the vehicle systems) settings for the thrust, while ThrustDirectionGuidanceSettings
defines how the full vehicle must orient itself in space for the required thrust direction to be achieved. At present, there is no option for thrust-vector control (i.e. modifying the thrust direction in the body-fixed frame). If your application requires such functionality, please contact the Tudat support team. The following thrust magnitude settings are available:
-
class
ThrustEngineSettings
¶ Base class for the thrust magnitude settings.
-
class
ConstantThrustEngineSettings
¶ This model defines a constant thrust force. It requires the following settings as input:
- Thrust magnitude to use (in Newtons)
- Specific impulse to use for the thrust. This quantity is used when applying a mass rate model in the propagation the vehicle dynamics, relating the thrust to the mass decrease of the vehicle.
- Body-fixed thrust direction (positive x-direction by default). Note that this should be a unit-vector, and represents the direction opposite to the nozzle direction.
-
class
FromFunctionThrustEngineSettings
¶ This model defines a thrust force and specific impulse that can vary with time. It requires the following settings as input:
- Thrust magnitude to use (in Newtons), as a function of time as a function of time.
- Specific impulse to use for the thrust, as a function of time. This quantity is used when applying a mass rate model in the propagation the vehicle dynamics, relating the thrust to the mass decrease of the vehicle.
- Body-fixed thrust direction (positive x-direction by default). Note that this should be a unit-vector, and represents the direction opposite to the nozzle direction.
-
class
FromBodyThrustEngineSettings
¶ A Body object may be endowed with a
VehicleSystems
property, which defines the suite of hardware that it carries. One of the systems that may be defined in theVehicleSystems
object is a list ofEngineModel
objects (stored in a list). In an object of theEngineModel
derived class, settings similar to those in the previous two thrust magnitude settings may be stored. However, using the interface with an engine model allows a more integrated systems/trajectory simulation to be performed, with applications in e.g. MDO. It allows multiple engine models, each with their own properties, to be defined. We provide thrust engine settings that use the thrust from one or all of theEngineModel
objects that a vehicle is endowed with, in this class. It requires the following settings:- A boolean defining whether all engines (i.e. all entries in the
engineModels
member of the VehicleSystems object in the vehicle’s Body object. - The name of the engine that is to be used for the thrust (to be empty if all engines are used)
- A boolean defining whether all engines (i.e. all entries in the