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¶
|
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 has time-variable orientation in a given frame. |
|
|
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 full panel |
|
Factory function for creating settings for a full panelled vehicle exterior |
|
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.). Seefull_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:
- Returns:
Object defining settings for panel geometry
- Return type:
- 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:
- Returns:
Object defining settings for panel geometry
- Return type:
- 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:
- 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:
- 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 forBodyPanelGeometrySettings
. For instance, assigning a rotation model to frameLRO_SolarArray
(dict key forpart_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:
- 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()
withpanel_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:
Classes¶
Base class for defining the geometrical properties of a single panel on the vehicle's exterior |
|
Class for defining the complete properties of a single panel on the vehicle's exterior |
|
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