Constellation Design – ephemerista.constellation.design
¶
The design.py module.
This module provides several classes for modelling various types of satellite constellations.
- pydantic model ephemerista.constellation.design.AbstractConstellation¶
Abstract base class for all constellation types.
- Fields:
-
field inclination:
float
[Required]¶ Inclination, in degrees
- Constraints:
ge = 0
-
field name:
str
= 'My Constellation'¶ Name of the Constellation
-
field periapsis_argument:
float
[Required] (alias 'periapsisArgument')¶ Argument of Perigee, in degrees
- Constraints:
ge = 0
- abstractmethod define_satellites()¶
Return a list of Keplerian objects that define the constellation’s satellites.
- Return type:
dict
[str
,Keplerian
]
- to_dataframe(data='satellites')¶
Return a dataframe of the Keplerian elements of each satellite.
- Parameters:
data (str, optional) – Flag to return plane or satellite data. Defaults to “satellites”
- Returns:
Dataframe of Keplerian elements of each satellite
- Return type:
pd.DataFrame
- property inclination_radians: float¶
- pydantic model ephemerista.constellation.design.AbstractWalker¶
Abstract base class for Walker Star or Delta constellations.
- Fields:
-
field phasing:
int
= 0¶ Phasing between satellites in adjacent planes
- Constraints:
ge = 0
- pydantic model ephemerista.constellation.design.AbstractWalkerOrSocConstellation¶
Abstract base class for Walker or streets-of-coverage constellations.
-
field eccentricity:
float
[Required]¶ Eccentricity
- Constraints:
ge = 0
-
field nplanes:
int
[Required]¶ Number of orbital planes in the constellation
- Constraints:
gt = 0
-
field nsats:
int
[Required]¶ Number of satellites in the constellation
- Constraints:
gt = 0
-
field semi_major_axis:
float
[Required] (alias 'semiMajorAxis')¶ Semi major axis, in km
- Constraints:
gt = 0
- abstractmethod define_planes()¶
Return a list of Plane objects that define the constellation.
- Return type:
dict
[int
,Plane
]
- to_dataframe(data='planes')¶
Return a data frame of the constellation parameters.
This will either be the Keplerian elements of each plane in the constellation, or the satellites in each plane, depending on the input.
- Parameters:
data (str, optional) – Flag to return plane or satellite data. Defaults to “planes”
- Returns:
Dataframe of Keplerian elements of each constellation, or the satellites in each plane, depending on the input
- Return type:
pd.DataFrame
-
field eccentricity:
- pydantic model ephemerista.constellation.design.Constellation¶
The main class for modelling constellations.
- Fields:
-
field comms:
list
[CommunicationSystem
] = []¶
-
field constellation_id:
Annotated
[UUID
] [Optional] (alias 'id')¶ Constellation UUID4
- Constraints:
uuid_version = 4
-
field model:
TypeAliasType
[Required]¶
-
field name:
str
= 'Default Constellation'¶
-
field params:
OrekitPropagatorParams
= OrekitPropagatorParams(prop_min_step=0.001, prop_max_step=3600.0, prop_init_step=60.0, prop_position_error=10.0, mass=1000.0, cross_section=1.0, grav_degree_order=(4, 4), third_bodies=[], c_r=0.75, enable_srp=False, c_d=2.0, enable_drag=False)¶
-
field propagator:
Literal
['semi-analytical'
,'numerical'
] = 'semi-analytical'¶
- pydantic model ephemerista.constellation.design.Flower¶
The Flower class.
This class models a Flower constellation.
References
[1] M. P. Wilkins, The Flower Constellations: Theory, design process, and applications. Texas A&M University, 2004. https://search.proquest.com/openview/d2a1245a4defb3f086c797b56e1a5b22/1?pq-origsite=gscholar&cbl=18750&diss=y
[2] https://gitlab.com/open-galactic/satellite-constellation
- Fields:
-
field constellation_type:
Literal
['flower'
] = 'flower' (alias 'type')¶ The type of constellation
-
field n_days:
int
[Required] (alias 'nDays')¶ Number of sidereal days for the constellation to repeat its ground track
- Constraints:
gt = 0
-
field n_petals:
int
[Required] (alias 'nPetals')¶ Number of petals
- Constraints:
gt = 0
-
field nsats:
int
[Required]¶ Desired number of satellites in the constellation
- Constraints:
gt = 0
-
field perigee_altitude:
float
[Required] (alias 'perigeeAltitude')¶ Perigee altitude, in km
- Constraints:
gt = 0
-
field phasing_d:
int
[Required] (alias 'phasingD')¶ d phasing parameter
- Constraints:
gt = 0
-
field phasing_n:
int
[Required] (alias 'phasingN')¶ n phasing parameter
- Constraints:
gt = 0
- pydantic model ephemerista.constellation.design.StreetOfCoverage¶
The StreetOfCoverage class.
This class models a streets-of-coverage constellation.
References
- [1] S. Huang, C. Colombo, and F. Bernelli-Zazzera,
“Multi-criteria design of continuous global coverage Walker and Street-of-Coverage constellations through property assessment” Acta Astronautica, vol. 188, pp. 151-170, Nov. 2021, doi: 10.1016/j.actaastro.2021.07.002.
-
field constellation_type:
Literal
['street_of_coverage'
] = 'street_of_coverage' (alias 'type')¶ The type of constellation
-
field j:
int
= 1 (alias 'coverage_fold')¶ Number of satellites that must provide simultaneous coverage of a ground location
- Constraints:
ge = 1
le = 4
- define_planes()¶
Return a list of Plane objects that define the constellation.
- Return type:
dict
[int
,Plane
]
- define_satellites()¶
Return a list of Keplerian objects that define the constellation’s satellites.
- Return type:
dict
[str
,Keplerian
]
- get_nu_bounds()¶
Compute initial bounds of the central angle of coverage in radians.
- Return type:
tuple
[float
,float
]
- pydantic model ephemerista.constellation.design.WalkerDelta¶
The WalkerDelta class.
This class models a Walker Delta constellation.
-
field constellation_type:
Literal
['walker_delta'
] = 'walker_delta' (alias 'type')¶ The type of constellation
-
field constellation_type:
- pydantic model ephemerista.constellation.design.WalkerStar¶
The WalkerStar class.
This class models a Walker Star constellation.
-
field constellation_type:
Literal
['walker_star'
] = 'walker_star' (alias 'type')¶ The type of constellation
-
field constellation_type:
- ephemerista.constellation.design.c_j(nu, s, j)¶
Compute the minimum half-width of Street-of-Coverage required for j-fold continuous global coverage.
- Parameters:
nu (
float
) – Central angle of coverage in radians, variable that will be optimizeds (
float
) – number of satellites per planej (
int
) – coverage fold
- Return type:
float
Ref: Equation 3 of [1]