Space System Models
Instrument
- pydantic model tatc.schemas.Instrument[source]
Remote sensing instrument.
Show JSON schema
{ "title": "Instrument", "description": "Remote sensing instrument.", "type": "object", "properties": { "name": { "title": "Name", "description": "Instrument name.", "type": "string" }, "field_of_regard": { "title": "Field Of Regard", "description": "Angular field (degrees) of possible observations (with pointing).", "default": 180, "exclusiveMinimum": 0, "maximum": 360, "example": 50, "type": "number" }, "min_access_time": { "title": "Min Access Time", "description": "Minimum access (integration) time to record an observation.", "default": 0.0, "example": "0:00:10", "type": "number", "format": "time-delta" }, "req_self_sunlit": { "title": "Req Self Sunlit", "description": "Required instrument sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" }, "req_target_sunlit": { "title": "Req Target Sunlit", "description": "Required target sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" } }, "required": [ "name" ] }
- Fields
field_of_regard (float)min_access_time (datetime.timedelta)name (str)req_self_sunlit (Optional[bool])req_target_sunlit (Optional[bool])
- field field_of_regard: float = 180
Angular field (degrees) of possible observations (with pointing).
- Constraints
exclusiveMinimum = 0
maximum = 360
- field min_access_time: timedelta = datetime.timedelta(0)
Minimum access (integration) time to record an observation.
- field req_self_sunlit: Optional[bool] = None
Required instrument sunlit state for valid observation (True: sunlit, False: eclipse, None: no requirement).
- field req_target_sunlit: Optional[bool] = None
Required target sunlit state for valid observation (True: sunlit, False: eclipse, None: no requirement).
- get_min_elevation_angle(height: float) float[source]
Get the minimum elevation angle required to observe a point.
- get_swath_width(height: float) float[source]
Gets the instrument swath width projected to the Earth’s surface.
- is_valid_observation(sat: EarthSatellite, time: Time) bool[source]
Determines if an instrument can provide a valid observations.
- Parameters
sat (EarthSatellite) – Satellite hosting this instrument.
time (Time) – Observation time(s).
- Returns
True if instrument provides a valid observation, otherwise False.
- Return type
Satellite
- pydantic model tatc.schemas.Satellite[source]
Single satellite.
Show JSON schema
{ "title": "Satellite", "description": "Single satellite.", "type": "object", "properties": { "name": { "title": "Name", "description": "Space system name.", "example": "International Space Station", "type": "string" }, "orbit": { "title": "Orbit", "description": "Orbit specification.", "anyOf": [ { "$ref": "#/definitions/TwoLineElements" }, { "$ref": "#/definitions/CircularOrbit" }, { "$ref": "#/definitions/SunSynchronousOrbit" }, { "$ref": "#/definitions/KeplerianOrbit" } ] }, "instruments": { "title": "Instruments", "description": "List of assigned instruments.", "default": [], "type": "array", "items": { "$ref": "#/definitions/Instrument" } }, "type": { "title": "Type", "description": "Space system type discriminator.", "default": "satellite", "enum": [ "satellite" ], "type": "string" } }, "required": [ "name", "orbit" ], "definitions": { "TwoLineElements": { "title": "TwoLineElements", "description": "Orbit defined with standard two line elements.", "type": "object", "properties": { "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "tle", "enum": [ "tle" ], "type": "string" }, "tle": { "title": "Tle", "description": "Two line elements.", "example": [ "1 25544U 98067A 21156.30527927 .00003432 00000-0 70541-4 0 9993", "2 25544 51.6455 41.4969 0003508 68.0432 78.3395 15.48957534286754" ], "minItems": 2, "maxItems": 2, "type": "array", "items": { "type": "string" } } }, "required": [ "tle" ] }, "CircularOrbit": { "title": "CircularOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion -- circular motion case.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "circular", "enum": [ "circular" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "SunSynchronousOrbit": { "title": "SunSynchronousOrbit", "description": "Orbit defined by sun synchronous parameters.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "exclusiveMaximum": 5980991.228584941, "minimum": 0, "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "sso", "enum": [ "sso" ], "type": "string" }, "equator_crossing_time": { "title": "Equator Crossing Time", "description": "Equator crossing time (local solar time).", "type": "string", "format": "time" }, "equator_crossing_ascending": { "title": "Equator Crossing Ascending", "description": "True, if the equator crossing time is ascending (south-to-north).", "default": true, "type": "boolean" } }, "required": [ "altitude", "equator_crossing_time" ] }, "KeplerianOrbit": { "title": "KeplerianOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "keplerian", "enum": [ "keplerian" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "eccentricity": { "title": "Eccentricity", "description": "Eccentricity.", "default": 0, "minimum": 0, "type": "number" }, "perigee_argument": { "title": "Perigee Argument", "description": "Perigee argument (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "Instrument": { "title": "Instrument", "description": "Remote sensing instrument.", "type": "object", "properties": { "name": { "title": "Name", "description": "Instrument name.", "type": "string" }, "field_of_regard": { "title": "Field Of Regard", "description": "Angular field (degrees) of possible observations (with pointing).", "default": 180, "exclusiveMinimum": 0, "maximum": 360, "example": 50, "type": "number" }, "min_access_time": { "title": "Min Access Time", "description": "Minimum access (integration) time to record an observation.", "default": 0.0, "example": "0:00:10", "type": "number", "format": "time-delta" }, "req_self_sunlit": { "title": "Req Self Sunlit", "description": "Required instrument sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" }, "req_target_sunlit": { "title": "Req Target Sunlit", "description": "Required target sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" } }, "required": [ "name" ] } } }
- Fields
instruments (List[tatc.schemas.instrument.Instrument])name (str)orbit (Union[tatc.schemas.orbit.TwoLineElements, tatc.schemas.orbit.CircularOrbit, tatc.schemas.orbit.SunSynchronousOrbit, tatc.schemas.orbit.KeplerianOrbit])type (Literal['satellite'])
- field instruments: List[Instrument] = []
List of assigned instruments.
- field orbit: Union[TwoLineElements, CircularOrbit, SunSynchronousOrbit, KeplerianOrbit] [Required]
Orbit specification.
Train Constellation
- pydantic model tatc.schemas.TrainConstellation[source]
A constellation that arranges member satellites in sequence.
Show JSON schema
{ "title": "TrainConstellation", "description": "A constellation that arranges member satellites in sequence.", "type": "object", "properties": { "name": { "title": "Name", "description": "Space system name.", "example": "International Space Station", "type": "string" }, "orbit": { "title": "Orbit", "description": "Lead orbit for this constellation.", "anyOf": [ { "$ref": "#/definitions/TwoLineElements" }, { "$ref": "#/definitions/SunSynchronousOrbit" }, { "$ref": "#/definitions/CircularOrbit" }, { "$ref": "#/definitions/KeplerianOrbit" } ] }, "instruments": { "title": "Instruments", "description": "List of assigned instruments.", "default": [], "type": "array", "items": { "$ref": "#/definitions/Instrument" } }, "type": { "title": "Type", "description": "Space system type discriminator.", "default": "train", "enum": [ "train" ], "type": "string" }, "number_satellites": { "title": "Number Satellites", "description": "The count of the number of satellites.", "default": 1, "minimum": 1, "type": "integer" }, "interval": { "title": "Interval", "description": "The local time interval between satellites in a train constellation.", "type": "number", "format": "time-delta" }, "repeat_ground_track": { "title": "Repeat Ground Track", "description": "True, if the train satellites should repeat the same ground track.", "default": true, "type": "boolean" } }, "required": [ "name", "orbit", "interval" ], "definitions": { "TwoLineElements": { "title": "TwoLineElements", "description": "Orbit defined with standard two line elements.", "type": "object", "properties": { "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "tle", "enum": [ "tle" ], "type": "string" }, "tle": { "title": "Tle", "description": "Two line elements.", "example": [ "1 25544U 98067A 21156.30527927 .00003432 00000-0 70541-4 0 9993", "2 25544 51.6455 41.4969 0003508 68.0432 78.3395 15.48957534286754" ], "minItems": 2, "maxItems": 2, "type": "array", "items": { "type": "string" } } }, "required": [ "tle" ] }, "SunSynchronousOrbit": { "title": "SunSynchronousOrbit", "description": "Orbit defined by sun synchronous parameters.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "exclusiveMaximum": 5980991.228584941, "minimum": 0, "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "sso", "enum": [ "sso" ], "type": "string" }, "equator_crossing_time": { "title": "Equator Crossing Time", "description": "Equator crossing time (local solar time).", "type": "string", "format": "time" }, "equator_crossing_ascending": { "title": "Equator Crossing Ascending", "description": "True, if the equator crossing time is ascending (south-to-north).", "default": true, "type": "boolean" } }, "required": [ "altitude", "equator_crossing_time" ] }, "CircularOrbit": { "title": "CircularOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion -- circular motion case.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "circular", "enum": [ "circular" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "KeplerianOrbit": { "title": "KeplerianOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "keplerian", "enum": [ "keplerian" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "eccentricity": { "title": "Eccentricity", "description": "Eccentricity.", "default": 0, "minimum": 0, "type": "number" }, "perigee_argument": { "title": "Perigee Argument", "description": "Perigee argument (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "Instrument": { "title": "Instrument", "description": "Remote sensing instrument.", "type": "object", "properties": { "name": { "title": "Name", "description": "Instrument name.", "type": "string" }, "field_of_regard": { "title": "Field Of Regard", "description": "Angular field (degrees) of possible observations (with pointing).", "default": 180, "exclusiveMinimum": 0, "maximum": 360, "example": 50, "type": "number" }, "min_access_time": { "title": "Min Access Time", "description": "Minimum access (integration) time to record an observation.", "default": 0.0, "example": "0:00:10", "type": "number", "format": "time-delta" }, "req_self_sunlit": { "title": "Req Self Sunlit", "description": "Required instrument sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" }, "req_target_sunlit": { "title": "Req Target Sunlit", "description": "Required target sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" } }, "required": [ "name" ] } } }
- Fields
instruments (List[tatc.schemas.instrument.Instrument])interval (datetime.timedelta)name (str)number_satellites (int)orbit (Union[tatc.schemas.orbit.TwoLineElements, tatc.schemas.orbit.SunSynchronousOrbit, tatc.schemas.orbit.CircularOrbit, tatc.schemas.orbit.KeplerianOrbit])repeat_ground_track (bool)type (Literal['train'])
- field instruments: List[Instrument] = []
List of assigned instruments.
- field interval: timedelta [Required]
The local time interval between satellites in a train constellation.
- field orbit: Union[TwoLineElements, SunSynchronousOrbit, CircularOrbit, KeplerianOrbit] [Required]
Lead orbit for this constellation.
- field repeat_ground_track: bool = True
True, if the train satellites should repeat the same ground track.
- generate_members() List[Satellite][source]
Generate space system member satellites.
- Returns
the member satellites
- Return type
List[Satellite]
Walker Constellation
- pydantic model tatc.schemas.WalkerConstellation[source]
A constellation that arranges member satellites following the Walker pattern.
Show JSON schema
{ "title": "WalkerConstellation", "description": "A constellation that arranges member satellites following the Walker pattern.", "type": "object", "properties": { "name": { "title": "Name", "description": "Space system name.", "example": "International Space Station", "type": "string" }, "orbit": { "title": "Orbit", "description": "Lead orbit for this constellation.", "anyOf": [ { "$ref": "#/definitions/TwoLineElements" }, { "$ref": "#/definitions/SunSynchronousOrbit" }, { "$ref": "#/definitions/CircularOrbit" }, { "$ref": "#/definitions/KeplerianOrbit" } ] }, "instruments": { "title": "Instruments", "description": "List of assigned instruments.", "default": [], "type": "array", "items": { "$ref": "#/definitions/Instrument" } }, "type": { "title": "Type", "description": "Space system type discriminator.", "default": "walker", "enum": [ "walker" ], "type": "string" }, "configuration": { "description": "Walker configuration.", "default": "delta", "allOf": [ { "$ref": "#/definitions/WalkerConfiguration" } ] }, "number_satellites": { "title": "Number Satellites", "description": "Number of satellites in the constellation.", "default": 1, "minimum": 1, "type": "integer" }, "number_planes": { "title": "Number Planes", "description": "The number of equally-spaced planes in a Walker Delta constellation. Ranges from 1 to (number of satellites).", "default": 1, "minimum": 1, "type": "integer" }, "relative_spacing": { "title": "Relative Spacing", "description": "Relative spacing of satellites between plans for a Walker Delta constellation. Ranges from 0 for equal true anomaly to (number of planes) - 1. For example, `relative_spacing=1` means the true anomaly is shifted by `360/number_satellites` between adjacent planes.", "default": 0, "minimum": 0, "type": "integer" } }, "required": [ "name", "orbit" ], "definitions": { "TwoLineElements": { "title": "TwoLineElements", "description": "Orbit defined with standard two line elements.", "type": "object", "properties": { "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "tle", "enum": [ "tle" ], "type": "string" }, "tle": { "title": "Tle", "description": "Two line elements.", "example": [ "1 25544U 98067A 21156.30527927 .00003432 00000-0 70541-4 0 9993", "2 25544 51.6455 41.4969 0003508 68.0432 78.3395 15.48957534286754" ], "minItems": 2, "maxItems": 2, "type": "array", "items": { "type": "string" } } }, "required": [ "tle" ] }, "SunSynchronousOrbit": { "title": "SunSynchronousOrbit", "description": "Orbit defined by sun synchronous parameters.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "exclusiveMaximum": 5980991.228584941, "minimum": 0, "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "sso", "enum": [ "sso" ], "type": "string" }, "equator_crossing_time": { "title": "Equator Crossing Time", "description": "Equator crossing time (local solar time).", "type": "string", "format": "time" }, "equator_crossing_ascending": { "title": "Equator Crossing Ascending", "description": "True, if the equator crossing time is ascending (south-to-north).", "default": true, "type": "boolean" } }, "required": [ "altitude", "equator_crossing_time" ] }, "CircularOrbit": { "title": "CircularOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion -- circular motion case.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "circular", "enum": [ "circular" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "KeplerianOrbit": { "title": "KeplerianOrbit", "description": "Orbit specification using Keplerian elements for elliptical motion.", "type": "object", "properties": { "altitude": { "title": "Altitude", "description": "Mean altitude (meters).", "type": "number" }, "true_anomaly": { "title": "True Anomaly", "description": "True anomaly (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "epoch": { "title": "Epoch", "description": "Timestamp (epoch) of the initial orbital state.", "default": "2023-04-01T19:44:08.701722+00:00", "type": "string", "format": "date-time" }, "type": { "title": "Type", "description": "Orbit type discriminator.", "default": "keplerian", "enum": [ "keplerian" ], "type": "string" }, "inclination": { "title": "Inclination", "description": "Inclination (degrees).", "default": 0, "exclusiveMaximum": 180, "minimum": 0, "type": "number" }, "right_ascension_ascending_node": { "title": "Right Ascension Ascending Node", "description": "Right ascension of ascending node (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" }, "eccentricity": { "title": "Eccentricity", "description": "Eccentricity.", "default": 0, "minimum": 0, "type": "number" }, "perigee_argument": { "title": "Perigee Argument", "description": "Perigee argument (degrees).", "default": 0, "exclusiveMaximum": 360, "minimum": 0, "type": "number" } }, "required": [ "altitude" ] }, "Instrument": { "title": "Instrument", "description": "Remote sensing instrument.", "type": "object", "properties": { "name": { "title": "Name", "description": "Instrument name.", "type": "string" }, "field_of_regard": { "title": "Field Of Regard", "description": "Angular field (degrees) of possible observations (with pointing).", "default": 180, "exclusiveMinimum": 0, "maximum": 360, "example": 50, "type": "number" }, "min_access_time": { "title": "Min Access Time", "description": "Minimum access (integration) time to record an observation.", "default": 0.0, "example": "0:00:10", "type": "number", "format": "time-delta" }, "req_self_sunlit": { "title": "Req Self Sunlit", "description": "Required instrument sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" }, "req_target_sunlit": { "title": "Req Target Sunlit", "description": "Required target sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "type": "boolean" } }, "required": [ "name" ] }, "WalkerConfiguration": { "title": "WalkerConfiguration", "description": "Enumeration of different Walker constellation configurations.", "enum": [ "delta", "star" ], "type": "string" } } }
- Fields
configuration (tatc.schemas.satellite.WalkerConfiguration)instruments (List[tatc.schemas.instrument.Instrument])name (str)number_planes (int)number_satellites (int)orbit (Union[tatc.schemas.orbit.TwoLineElements, tatc.schemas.orbit.SunSynchronousOrbit, tatc.schemas.orbit.CircularOrbit, tatc.schemas.orbit.KeplerianOrbit])relative_spacing (int)type (Literal['walker'])
- field configuration: WalkerConfiguration = WalkerConfiguration.DELTA
Walker configuration.
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field instruments: List[Instrument] = []
List of assigned instruments.
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field name: str [Required]
Space system name.
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field number_planes: int = 1
The number of equally-spaced planes in a Walker Delta constellation. Ranges from 1 to (number of satellites).
- Constraints
minimum = 1
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field number_satellites: int = 1
Number of satellites in the constellation.
- Constraints
minimum = 1
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field orbit: Union[TwoLineElements, SunSynchronousOrbit, CircularOrbit, KeplerianOrbit] [Required]
Lead orbit for this constellation.
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field relative_spacing: int = 0
Relative spacing of satellites between plans for a Walker Delta constellation. Ranges from 0 for equal true anomaly to (number of planes) - 1. For example, relative_spacing=1 means the true anomaly is shifted by 360/number_satellites between adjacent planes.
- Constraints
minimum = 0
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- field type: Literal['walker'] = 'walker'
Space system type discriminator.
- Validated by
number_planes_le_number_satellitesrelative_spacing_lt_number_planes
- generate_members() List[Satellite][source]
Generate space system member satellites.
- Returns
the member satellites
- Return type
List[Satellite]
- get_delta_mean_anomaly_between_planes() float[source]
Gets the difference in mean anomaly (decimal degrees) for adjacent member satellites between adjacent planes.
- Returns
difference in mean anomaly
- Return type
- get_delta_mean_anomaly_within_planes() float[source]
Gets the difference in mean anomaly (decimal degrees) for adjacent member satellites within a single plane.
- Returns
difference in mean anomaly
- Return type
- get_delta_raan_between_planes() float[source]
Gets the difference in right ascension of ascending node (decimal degrees) for adjacent planes of member satellites.
- Returns
difference in right ascension of ascending node
- Return type
- get_satellites_per_plane() int[source]
Gets the (max) number of satellites per plane.
- Returns
number of satellites per plane
- Return type