vehicle_systems#

This module contains a set of factory functions for setting up physical and system properties of a vehicle. For various high-accuracy models of non-conservative spacecraft dynamics, a so-called macromodel is required which defines the external shape of the vehicle. This macromodel is typically defined by a set of panels, with each panel assigned specific properties of how it interacts with the environment. At present, the spacecraft macromodel in Tudat is only used for the calculation of a panelled radiation pressure acceleration, but future updates will also use it for the calculation of aerodynamic coefficients in both rarefied and hypersonic flow.

The current panels in Tudat allow a list of panels to be defined, with the geometrical properties of panel \(i\) defined by the surface normal vector \(\hat{\mathbf{n}}_{i}\) and the surface area \(A_{i}\). Note that, since the panel shape or location is not yet defined, computing torques due to surface forces, or incorporating shadowing into the panel force calculatuion, is not yet supported.

The panel surface normal may be defined in either the body-fixed frame \(\mathcal{B}\) of the vehicle, or to a ‘vehicle-part-fixed frame’ \(\mathcal{F}_{j}\). A ‘vehicle part’ is defined as a part of the vehicle that can move/rotate w.r.t. the body-fixed frame of the spacecraft. Typical examples are the solar arrays and an movable antenna.

The panel surface normal (in either the body frame or the part frame), may be defined by the frame_fixed_panel_geometry(), time_varying_panel_geometry() or body_tracking_panel_geometry() functions, where the latter is used to ensure that a panel normal automatically points to/away from another bodY (e.g. the Sun for solar panels).

A full panel is created by defining its geometry, and models for its interaction with the environment (currently limited to a reflection law to compute the influence of radiation pressure) using the body_panel_settings() function.

The vehicle macromodel, and the rotation models from the body-fixed frame to the (optional) part-fixed frames are defined by using the full_panelled_body_settings() function, and assigned to the vehicle_shape_settings attribute of the BodySettings class. When a full macromodel is not available to the user, a ‘box-wing’ model may also be used, which creates the macromodel bassed on user settings, using the box_wing_panelled_body_settings() function.

Functions#

frame_fixed_panel_geometry(surface_normal, area)

Factory function for creating settings for a vehicle exterior panel that is fixed to a given frame.

time_varying_panel_geometry(...)

Factory function for creating settings for a vehicle exterior panel that has time-variable orientation in a given frame.

body_tracking_panel_geometry(body_to_track, ...)

Factory function for creating settings for a vehicle exterior panel where the surface normal tracks a given body.

body_panel_settings(panel_geometry[, ...])

Factory function for creating settings for a full panel

full_panelled_body_settings(panel_settings)

Factory function for creating settings for a full panelled vehicle exterior

box_wing_panelled_body_settings(length, ...)

Factory function for creating a simple box-wing spacecraft exterior shape with reflection law settings.

frame_fixed_panel_geometry(surface_normal: numpy.ndarray[numpy.float64[3, 1]], area: float, frame_orientation: str = '') tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelGeometrySettings#

Factory function for creating settings for a vehicle exterior panel that is fixed to a given frame.

Factory function for creating settings for a vehicle exterior panel that is fixed to a given frame, meaning that the orientation of the panel is fully defined by the rotation model(s) defined in the vehicle. The constant surface normal \(\hat{\mathbf{n}}^{\mathcal{F}}\) in frame \(\mathcal{F}\) is provided by the user. If the frame_orientation of this function is left empty, the panel is fixed to the body-frame, and \(\mathcal{F}\) is the body-fixed frame \(\mathcal{B}\).

Alternatively, the frame_orientation may be defined as the identifier of the frame fixed to one of the vehicle parts (solar array, antenna, etc.). See full_panelled_body_settings() for the definition of rotation models of vehicle parts.

Note that this panel model does not contain information on panel location or shape, only its area and surface normal, and is therefore not suitable for computation of panel shadowing of torque computations.

Parameters:
  • surface_normal (np.array) – Panel outward surface normal vector (in specified frame)

  • area (float) – Panel surface area

  • frame_orientation (str, default = "") – Identifier of the frame to which the panel is fixed (if body-fixed frame, this can be left empty)

Returns:

Object defining settings for panel geometry

Return type:

BodyPanelGeometrySettings

time_varying_panel_geometry(surface_normal_function: Callable[[], numpy.ndarray[numpy.float64[3, 1]]], area: float, frame_orientation: str) tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelGeometrySettings#

Factory function for creating settings for a vehicle exterior panel that has time-variable orientation in a given frame.

As frame_fixed_panel_geometry(), but with a time-variable outward surface normal \(\hat{\mathbf{n}}^{\mathcal{F}}(t)\)

Parameters:
  • surface_normal_function (np.array) – Panel outward surface normal vector (in specified frame)

  • area (float) – Panel surface area

  • frame_orientation (str, default = "") – Identifier of the frame to which the panel is fixed (if body-fixed frame, this can be left empty)

Returns:

Object defining settings for panel geometry

Return type:

BodyPanelGeometrySettings

body_tracking_panel_geometry(body_to_track: str, towards_tracked_body: bool, area: float, frame_orientation: str = '') tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelGeometrySettings#

Factory function for creating settings for a vehicle exterior panel where the surface normal tracks a given body.

Factory function for creating settings for a vehicle exterior panel where the surface normal tracks a given body, for instance to define the surface normal of a solar array to always point towards the Sun, or an antenna to always point towards the Earth. When using this option, the panel surface normal \(\hat{\mathbf{n}}\) is computed in an inertial frame based on the tracked body, and then (if necessary) rotated to the body-fixed frame. Note that this panel model does not contain information on panel location or shape, only its area and surface normal, and is therefore not suitable for computation of panel shadowing of torque computations.

Parameters:
  • body_to_track (str) – Name of the body towards (or away from) which the panel surface normal is to point

  • towards_tracked_body (bool) – Boolean defining whether the normal vector points towards (if true) or away from (if false) the tracked body

  • area (float) – Panel surface area

  • frame_orientation (str, default = "") – Identifier of the frame in which the panel is defined (with time-variable orientation, defined by tracked body). Note that this option is typically only relevant for internal book-keeping, and can be left empty

Returns:

Object defining settings for panel geometry

Return type:

BodyPanelGeometrySettings

body_panel_settings(panel_geometry: tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelGeometrySettings, panel_reflection_law: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.BodyPanelReflectionLawSettings = None, panel_type_id: str = '') tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelSettings#

Factory function for creating settings for a full panel

Factory function for creating settings for a full panel (presently only geometry and reflection properties). The panel can also be endowed with an identifier to specify the type of the panel. This has no direct consequences for the model, but may be useful in estimation, to for instance estimate the reflection properties of all panels specified with identified “MLI” as a single parameter

Parameters:
  • panel_geometry (BodyPanelGeometrySettings) – Geometric properties of the panel (size and orientation, at least)

  • panel_reflection_law (BodyPanelReflectionLawSettings, default = None) – Reflection law settings of the panel (default none)

  • panel_type_id (str, default = "") – Optional identifier for panel type

Returns:

Object defining settings for a panel

Return type:

BodyPanelSettings

full_panelled_body_settings(panel_settings: list[tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.BodyPanelSettings], part_rotation_model_settings: dict[str, tudatpy.kernel.numerical_simulation.environment_setup.rotation_model.RotationModelSettings] = {}) tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.FullPanelledBodySettings#

Factory function for creating settings for a full panelled vehicle exterior

Factory function for creating settings for a full panelled vehicle exterior, taking a list of panel settings, and (optionally) a list of rotation model settings for vehicle parts. The identifiers for the rotation models are used to specify the names of part-fixed frames, which are used by the frame_orientation inputs to factory functions creating settings for BodyPanelGeometrySettings. For instance, assigning a rotation model to frame LRO_SolarArray (dict key for part_rotation_model_settings) allows panels defined in the frame with this same frame orientation to be defined. The associated rotation model defines rotations from body-fixed frame \(\mathcal{B}\) to part-fixed frame \(\mathcal{F}_{j}\) (for part \(j\)). The rotation from part-fixed (where the surface normal is defined) to inertial frame is then computed from \(\mathbf{R}^{I/\mathcal{F}_{j}}=\mathbf{R}^{I/\mathcal{B}}\mathbf{R}^{\mathcal{B}/\mathcal{F}_{j}}\), where \(\mathbf{R}^{I/\mathcal{B}}\) defines the body’s orientation, and \(\mathbf{R}^{\mathcal{B}/\mathcal{F}_{j}}\) the part orientation (w.r.t. a body-fixed frame)

Parameters:
  • panel_settings (list[BodyPanelSettings]) – List of settings for body panels.

  • part_rotation_model_settings (dict[str,RotationModelSettings], default = dict()) – Rotation model settings per vehicle part (default empty, indicating no part-fixed frames are defined)

Returns:

Object defining full panelled vehicle exterior

Return type:

FullPanelledBodySettings

box_wing_panelled_body_settings(length: float, width: float, height: float, solar_array_area: float, box_specular_reflectivity: float, box_diffuse_reflectivity: float, solar_array_specular_reflectivity: float, solar_array_diffuse_reflectivity: float, box_instantaneous_reradiation: bool = True, solar_array_instantaneous_reradiation: bool = True) tudatpy.kernel.numerical_simulation.environment_setup.vehicle_systems.FullPanelledBodySettings#

Factory function for creating a simple box-wing spacecraft exterior shape with reflection law settings.

This function creates a full_panelled_body_settings() with panel_settings generated from simple box-wing settings. The assumptions behind the box-wing model are:

  • The spacecraft shape is defined by a rectangular box (cuboid) and solar array

  • The box has its faces parallel to the xy-, xz- and yz-planes

  • The solar array surface normal always points towards the Sun

  • Each box face has identical reflection law settings, defined by specular_diffuse_body_panel_reflection() settings.

  • The solar array has reflection law settings, defined by specular_diffuse_body_panel_reflection() settings.

Parameters:
  • length (float) – Box length (size in body-fixed x-direction).

  • width (float) – Box width (size in body-fixed y-direction).

  • height (float) – Box height (size in body-fixed z-direction).

  • solar_array_area (float) – Surface area of the solar array.

  • box_specular_reflectivity (float) – Box secular reflectivity \(\rho\).

  • box_diffuse_reflectivity (float) – Box secular reflectivity \(\delta\).

  • solar_array_specular_reflectivity (float) – Solar array secular reflectivity \(\rho\).

  • solar_array_diffuse_reflectivity (float) – Solar array secular reflectivity \(\delta\).

  • box_instantaneous_reradiation (bool) – Boolean denoting whether absorbed radiation is instantaneously retransmitted from box (yes, if true).

  • solar_array_instantaneous_reradiation (bool) – Boolean denoting whether absorbed radiation is instantaneously retransmitted from solar array (yes, if true).

Returns:

Object defining full panelled vehicle exterior

Return type:

FullPanelledBodySettings

Classes#

BodyPanelGeometrySettings

Base class for defining the geometrical properties of a single panel on the vehicle's exterior

BodyPanelSettings

Class for defining the complete properties of a single panel on the vehicle's exterior

FullPanelledBodySettings

Class for providing the complete settings for a panelled body exterior

class BodyPanelGeometrySettings#

Base class for defining the geometrical properties of a single panel on the vehicle’s exterior

class BodyPanelSettings#

Class for defining the complete properties of a single panel on the vehicle’s exterior

class FullPanelledBodySettings#

Class for providing the complete settings for a panelled body exterior