Skip to content

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

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
1
2
3
4
import brahe as bh

delta = bh.WalkerPattern.DELTA  # 360° RAAN spread
star = bh.WalkerPattern.STAR    # 180° RAAN spread

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.

Example
1
2
3
4
import brahe as bh

delta = bh.WalkerPattern.DELTA  # 360° RAAN spread
star = bh.WalkerPattern.STAR    # 180° RAAN spread

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.

Example
1
2
3
4
import brahe as bh

delta = bh.WalkerPattern.DELTA  # 360° RAAN spread
star = bh.WalkerPattern.STAR    # 180° RAAN spread

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
Example
import brahe as bh

epoch = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)
# Walker Delta constellation (GPS-like)
gen = bh.WalkerConstellationGenerator(
    t=24,                       # 24 total satellites
    p=3,                        # 3 orbital planes
    f=1,                        # phasing factor 1
    semi_major_axis=bh.R_EARTH + 20200e3,  # GPS altitude
    eccentricity=0.0,
    inclination=55.0,
    argument_of_perigee=0.0,
    reference_raan=0.0,
    reference_mean_anomaly=0.0,
    epoch=epoch,
    angle_format=bh.AngleFormat.DEGREES,
    pattern=bh.WalkerPattern.DELTA,  # 360° RAAN spread
)

# Generate Keplerian propagators
propagators = gen.as_keplerian_propagators(60.0)

Initialize instance.

eccentricity property

eccentricity: Any

Eccentricity.

epoch property

epoch: Any

Reference epoch.

num_planes property

num_planes: Any

Number of orbital planes.

pattern property

pattern: Any

Walker pattern (Delta or Star).

phasing property

phasing: Any

Phasing factor.

satellites_per_plane property

satellites_per_plane: Any

Number of satellites per plane (T/P).

semi_major_axis property

semi_major_axis: ndarray

Semi-major axis in meters.

total_satellites property

total_satellites: Any

Total number of satellites in the constellation.

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

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