Skip to content

Spacecraft

The spacecraft asset is the central dynamic object in ASTROLAB. It provides Orekit-backed state queries, propagation configuration, attitude information, physical properties, optional mesh metadata, constraints, and timeline bounds.

Role in the System

Spacecraft assets are used by:

Consumer Use of spacecraft
2D/3D viewers Position, velocity, attitude, mesh, orbit color, and time updates.
Coverage analysis Source endpoint for access to grid points or AOIs.
Link analysis Source or target endpoint for contact windows and RF geometry.
Power analysis Parent for solar arrays and batteries; provides eclipse and Sun geometry context.
Lifetime analysis Initial state, mass, drag/SRP properties, atmosphere and propagation settings.

Spacecraft Data Blocks

flowchart TD
    S["SpacecraftAsset"] --> G["Generic Properties"]
    S --> O["Orbit Definition"]
    S --> W["Orbit Wizard"]
    S --> A["Attitude Properties"]
    S --> M["Mesh Properties"]
    S --> C["Constraints"]
    S --> R["Runtime Propagator"]
    S --> E["Generated Ephemeris"]

Generic Properties

These properties define spacecraft physical behaviour and propagation configuration.

UI/Model field Meaning Typical use
asset_id Spacecraft name. Display, reports, registry lookup.
mass Spacecraft mass in kg. Propagation, drag, SRP, lifetime, power reports.
cd Drag coefficient. Drag acceleration and lifetime analysis.
drag_area Cross-sectional drag area in m2. Atmospheric drag model.
cr Reflectivity coefficient. Solar radiation pressure.
reflectivity_area SRP area in m2. Solar radiation pressure and lifetime settings.

Propagator Settings

The spacecraft dialog supports several propagation families.

Propagator Purpose Notes
Keplerian Fast two-body baseline. Useful for early visualization or simple checks.
Eckstein Hechler Analytical Earth gravity perturbation model. Useful for near-circular LEO-style studies where applicable.
DSST Propagator Semi-analytical long-term propagation. Recommended for lifetime-style studies and longer spans.
Numerical Propagator High-fidelity short-term propagation. More expensive; sensitive to tolerances and force model setup.

Numerical and DSST modes enable the advanced propagation fields:

Field Meaning
min_step Minimum integration step size.
max_step Maximum integration step size.
abs_tol Absolute integration tolerance.
rel_tol Relative integration tolerance.
gravity_degree Gravity field degree.
gravity_order Gravity field order.
include_drag Enables atmosphere drag force model.
include_srp Enables solar radiation pressure.
include_point_masses Enables Sun/Moon third-body effects where supported.

Environment and Atmosphere

When drag is enabled, the spacecraft environment block selects the atmospheric model and space weather source.

Field Options currently exposed Notes
atmosphere_model NRLMSISE-00, DTM2000, Harris-Priester, Simple Exponential, JB2008 Availability depends on Orekit initializer support and loaded data.
space_weather_source CSSI Space Weather, Marshall Solar Activity Forecast Used by atmosphere models that require solar/geomagnetic input.
solar_activity_level Low, Moderate, High Intended for forecast-driven scenarios.

State Query Contract

The spacecraft exposes a frame-aware physical interface:

Method Returns
get_position_at(time, frame_name) Position vector in meters.
get_velocity_at(time, frame_name) Velocity vector in m/s.
get_attitude_at(time, frame_name) Quaternion [w, x, y, z].
get_pose_at(time, frame_name) Combined position, velocity, and quaternion snapshot.
get_geodetic_at(time) Latitude, longitude, altitude on the Earth ellipsoid.

The internal quaternion convention is an active rotation using [w, x, y, z], representing model/body orientation expressed in the requested frame.

Ephemeris Behaviour

The spacecraft may generate a bounded ephemeris for faster repeated queries. If an ephemeris exists, state queries use it. If not, ASTROLAB falls back to direct propagation.

flowchart TD
    Q["State query at time t"] --> E{"Ephemeris available?"}
    E -->|Yes| B["BoundedPropagator.propagate(t)"]
    E -->|No| P["Propagator.propagate(t)"]
    B --> S["SpacecraftState"]
    P --> S
    S --> PV["PV in requested frame"]
    S --> ATT["Attitude in requested frame"]
    PV --> POSE["PoseSnapshot"]
    ATT --> POSE

Best Practices

  • Use the simplest propagator that answers the study question.
  • Use DSST for long-term lifetime-style analysis rather than a very tight numerical propagator.
  • Keep drag area, mass, and Cd consistent with the physical spacecraft.
  • Use constraints to represent mission rules rather than hard-coding filtering logic in analyses.
  • Validate the first few propagated points visually before relying on long reports.