Reference API¶
A thorough documentation of the MaDDG API.
Internally, MaDDG is divided into two core components: madlib and maddg.
madlib contains the individual objects that are used to construct a simulation,
such as satellites, maneuvers, sensors. maddg provides the framework that combines
these objects into simulations and then deploys those simulations to compute nodes.
madlib¶
Satellites¶
Satellites in MaDDG can be created from an initial set of position and velocity vectors, initial Keplerian elements, or even just the latitude and longitude for a geostationary object.
The Satellite() class supports
impulsive maneuvers, while the
ContinuousThrustSatellite() class
can support continuous maneuvers.
|
Satellite class for propagating a satellite (either with or without a maneuver). |
|
Satellite subclass for propagating an orbit that uses continuous thrust (i.e. ContinuousManeuver). |
Sensors¶
Currently, MaDDG only supports optical sensors. These sensors report the angular position of a target satellite (in Right Ascension and Declination) at scheduled times. Sensors can be ground- or space-based, and each sensor can be configured with unique noise profiles and observing conditions.
|
Class is not yet implemented |
|
Generic class for optical sensors |
|
Class for modeling the observing of a satellite with an optical sensor |
|
Class for modeling observations with an optical sensor in Earth orbit. |
Multiple sensors can be combined into a network, each providing its own measurements of the target satellite.
|
Class containing multiple sensor objects that can generate a comprehensive observing schedule and collate observations. |
Observations¶
Sensors’ measurements of the target satellite’s position are called observations. In most cases, we are actually interested in the target satellite’s residuals, which are the difference between the object’s measured position and its expected position at any given time.
|
Class for holding observables. |
|
Class for holding the difference between two observables. |
|
Class for holding observed and true positions of satellites. |
Maneuvers¶
Satellites perform different types of maneuvers for a wide variety of reasons, from small burns to maintain an orbit to large burns that drastically alter the trajectory.
Maneuvers in MaDDG are divided into impulsive and continuous.
|
ImpulseManeuver class holds an impulse maneuver definition, which includes the time of the maneuver, and the impulsive delta-v. |
|
ContinuousManeuver class holds a continuous maneuver definition, which includes the acceleration function defining the maneuver, and the time range over which the maneuver occurs. |
maddg¶
Residual Calculation¶
The calculate_residuals() method
is a core simulation function. Given a network of sensors,
a target satellite, a simulation duration and a start time,
it will propagate the target and sensors through time and
return a time series of the target’s residuals in Right Ascension
and Declination.
These residuals show the difference between the target’s observed position and its expected position, making them a useful metric for detecting and characterizing satellite maneuvers.
|
Calculates the residuals. |
Launching Simulations¶
MaDDG is designed to launch multiple simulations, and it can launch them in parallel if you have a multi-core CPU or access to a SLURM cluster.
The launcher() method is used to
define a set of simulations. Users can define the satellites
and sensors, assign the compute infrastructure and
configure the simulation outputs.
|
Create a task function for hydra. |
|
Hydra job launcher wrapper. |