Walker Constellations¶
Generator for Walker constellation patterns (Delta and Star) using T:P:F notation.
For understanding Walker constellation geometry and usage examples, see Walker Constellations.
Walker Pattern¶
WalkerPattern ¶
Walker constellation pattern type.
Defines whether the constellation uses a Delta (360°) or Star (180°) RAAN spread.
Attributes:
| Name | Type | Description |
|---|---|---|
DELTA | Any | Walker Delta pattern with 360° RAAN spread (global coverage). Used by GPS, Galileo, and similar navigation constellations. |
STAR | Any | Walker Star pattern with 180° RAAN spread (polar coverage). Used by Iridium and similar communications constellations. |
Example
Initialize instance.
DELTA class-attribute ¶
DELTA: Any = WalkerPattern.DELTA
Walker constellation pattern type.
Defines whether the constellation uses a Delta (360°) or Star (180°) RAAN spread.
Attributes:
| Name | Type | Description |
|---|---|---|
DELTA | Walker Delta pattern with 360° RAAN spread (global coverage). Used by GPS, Galileo, and similar navigation constellations. | |
STAR | Walker Star pattern with 180° RAAN spread (polar coverage). Used by Iridium and similar communications constellations. |
STAR class-attribute ¶
STAR: Any = WalkerPattern.STAR
Walker constellation pattern type.
Defines whether the constellation uses a Delta (360°) or Star (180°) RAAN spread.
Attributes:
| Name | Type | Description |
|---|---|---|
DELTA | Walker Delta pattern with 360° RAAN spread (global coverage). Used by GPS, Galileo, and similar navigation constellations. | |
STAR | Walker Star pattern with 180° RAAN spread (polar coverage). Used by Iridium and similar communications constellations. |
Walker Constellation Generator¶
WalkerConstellationGenerator ¶
WalkerConstellationGenerator(t: int, p: int, f: int, semi_major_axis: float, eccentricity: float, inclination: float, argument_of_perigee: float, reference_raan: float, reference_mean_anomaly: float, epoch: Epoch, angle_format: AngleFormat, pattern: WalkerPattern)
Generator for Walker constellation patterns using T:P:F notation.
Walker constellations place satellites in circular or near-circular orbits with: - T total satellites distributed across P planes - Each plane inclined at the same angle - Planes evenly spaced in RAAN (spread depends on pattern type) - Satellites within each plane evenly spaced in mean anomaly - Phase offset F controls inter-plane phasing
Two pattern types are supported via pattern: - WalkerPattern.DELTA: 360° RAAN spread (global coverage, e.g., GPS, Galileo) - WalkerPattern.STAR: 180° RAAN spread (polar coverage, e.g., Iridium)
All satellites in the constellation share the same semi-major axis, eccentricity, inclination, and argument of perigee. They differ only in RAAN and mean anomaly.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t | int | Total number of satellites (must be divisible by p) | required |
p | int | Number of orbital planes | required |
f | int | Phasing factor (0 to p-1) | required |
semi_major_axis | float | Semi-major axis in meters | required |
eccentricity | float | Eccentricity (dimensionless) | required |
inclination | float | Inclination in degrees or radians (based on angle_format) | required |
argument_of_perigee | float | Argument of perigee | required |
reference_raan | float | RAAN for plane 0 | required |
reference_mean_anomaly | float | Mean anomaly for first satellite | required |
epoch | Epoch | Reference epoch for ephemeris generation | required |
angle_format | AngleFormat | Format for angular inputs | required |
pattern | WalkerPattern | Pattern type (DELTA for 360° RAAN, STAR for 180° RAAN) | required |
Raises:
| Type | Description |
|---|---|
ValueError | If p is zero, t is not divisible by p, or f >= p. |
Example
Initialize instance.
as_keplerian_propagators method descriptor ¶
as_keplerian_propagators(step_size: float) -> list[KeplerianPropagator]
Generate Keplerian propagators for all satellites in the constellation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step_size | float | Step size in seconds for propagation | required |
Returns:
| Type | Description |
|---|---|
list[KeplerianPropagator] | list[KeplerianPropagator]: List of propagators, one per satellite |
as_numerical_propagators method descriptor ¶
as_numerical_propagators(propagation_config: NumericalPropagationConfig, force_config: ForceModelConfig, params: ndarray = None) -> list[DNumericalOrbitPropagator]
Generate numerical orbit propagators for all satellites in the constellation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
propagation_config | NumericalPropagationConfig | Propagation configuration | required |
force_config | ForceModelConfig | Force model configuration | required |
params | ndarray | Parameter vector [mass, drag_area, Cd, srp_area, Cr] | None |
Returns:
| Type | Description |
|---|---|
list[DNumericalOrbitPropagator] | list[DNumericalOrbitPropagator]: List of propagators, one per satellite |
as_sgp_propagators method descriptor ¶
as_sgp_propagators(step_size: float, bstar: float, ndt2: float, nddt6: float) -> list[SGPPropagator]
Generate SGP propagators for all satellites in the constellation.
This method creates TLE data for each satellite using the provided drag and mean motion derivative parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step_size | float | Step size in seconds for propagation | required |
bstar | float | B* drag term (Earth radii^-1) | required |
ndt2 | float | First derivative of mean motion divided by 2 (rev/day²) | required |
nddt6 | float | Second derivative of mean motion divided by 6 (rev/day³) | required |
Returns:
| Type | Description |
|---|---|
list[SGPPropagator] | list[SGPPropagator]: List of propagators, one per satellite |
builder staticmethod ¶
builder(t: int, p: int, f: int, semi_major_axis: float, inclination: float, epoch: Epoch) -> WalkerConstellationGeneratorBuilder
Create a builder for constructing a Walker constellation generator.
The builder takes the six required inputs directly; optional inputs are provided through chained setter calls before calling build().
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t | int | Total number of satellites (must be divisible by p) | required |
p | int | Number of orbital planes | required |
f | int | Phasing factor (0 to p-1) | required |
semi_major_axis | float | Semi-major axis in meters | required |
inclination | float | Inclination in degrees by default, or radians if | required |
epoch | Epoch | Reference epoch for ephemeris generation | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | New builder instance, with |
WalkerConstellationGeneratorBuilder |
| |
WalkerConstellationGeneratorBuilder |
| |
WalkerConstellationGeneratorBuilder | to |
satellite_elements method descriptor ¶
satellite_elements(plane_index: int, sat_index: int, angle_format: AngleFormat) -> ndarray
Get Keplerian elements for a specific satellite.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
plane_index | int | Plane index (0 to P-1) | required |
sat_index | int | Satellite index within plane (0 to T/P - 1) | required |
angle_format | AngleFormat | Output angle format | required |
Returns:
| Type | Description |
|---|---|
ndarray | np.ndarray: Keplerian elements [a, e, i, raan, argp, M] |
with_base_name method descriptor ¶
with_base_name(name: str) -> WalkerConstellationGenerator
Set a base name for satellite naming.
When set, satellites will be named as "{base_name}-P{plane}-S{sat}" (e.g., "GPS-P0-S0", "GPS-P0-S1", "GPS-P1-S0", etc.)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Base name for the constellation satellites | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGenerator | WalkerConstellationGenerator | Self with the base name set |
Walker Constellation Generator Builder¶
WalkerConstellationGeneratorBuilder ¶
Builder for WalkerConstellationGenerator.
Created by WalkerConstellationGenerator.builder(), which takes the six required inputs (t, p, f, semi_major_axis, inclination, epoch). Optional inputs are provided through chained setters and default to the same values as the flat constructor's optional parameters. build() validates the t/p/f invariants and constructs the generator, raising RuntimeError instead of panicking if they are violated.
Example
Initialize instance.
angle_format method descriptor ¶
angle_format(angle_format: AngleFormat) -> WalkerConstellationGeneratorBuilder
Set the angle format for inclination, argument_of_perigee, reference_raan, and reference_mean_anomaly.
Defaults to AngleFormat.DEGREES if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
angle_format | AngleFormat | Format for angular inputs | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
argument_of_perigee method descriptor ¶
argument_of_perigee(argument_of_perigee: float) -> WalkerConstellationGeneratorBuilder
Set the argument of perigee.
Defaults to 0.0 if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
argument_of_perigee | float | Argument of perigee. Units: (deg) by default, or (rad) based on | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
base_name method descriptor ¶
base_name(name: str) -> WalkerConstellationGeneratorBuilder
Set a base name for satellite naming.
Applied to the generator after construction, via WalkerConstellationGenerator.with_base_name(). Unset by default.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Base name for the constellation satellites | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
build method descriptor ¶
build() -> WalkerConstellationGenerator
Construct the generator from the accumulated configuration.
Validates the t/p/f invariants and constructs the generator. This consumes the builder. The builder is single-use: calling build() a second time raises RuntimeError.
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGenerator | WalkerConstellationGenerator | Initialized generator. |
Raises:
| Type | Description |
|---|---|
RuntimeError | If the builder was already consumed by a prior |
eccentricity method descriptor ¶
eccentricity(eccentricity: float) -> WalkerConstellationGeneratorBuilder
Set the eccentricity.
Defaults to 0.0 if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
eccentricity | float | Eccentricity (dimensionless, typically near 0 for Walker) | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
pattern method descriptor ¶
pattern(pattern: WalkerPattern) -> WalkerConstellationGeneratorBuilder
Set the Walker pattern type.
Defaults to WalkerPattern.DELTA if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pattern | WalkerPattern | Pattern type (DELTA for 360° RAAN, STAR for 180° RAAN) | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
reference_mean_anomaly method descriptor ¶
reference_mean_anomaly(reference_mean_anomaly: float) -> WalkerConstellationGeneratorBuilder
Set the reference mean anomaly for the first satellite.
Defaults to 0.0 if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
reference_mean_anomaly | float | Mean anomaly for first satellite. Units: (deg) by default, or (rad) based on | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
reference_raan method descriptor ¶
reference_raan(reference_raan: float) -> WalkerConstellationGeneratorBuilder
Set the reference RAAN for plane 0.
Defaults to 0.0 if not called.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
reference_raan | float | RAAN for plane 0. Units: (deg) by default, or (rad) based on | required |
Returns:
| Name | Type | Description |
|---|---|---|
WalkerConstellationGeneratorBuilder | WalkerConstellationGeneratorBuilder | The builder, for method chaining. |
See Also¶
- Walker Constellations Guide - User guide documentation