Generate a Walker constellation
What you will accomplish
A constellation built to parameters you chose, with the phasing factor selected by measurement rather than left at its default.
Prerequisites
- Installation complete.
- Constellations and orbits if plane, phasing, and inclination are unfamiliar.
Steps
Generate
orbitforge constellation walker \
--name ph1 --planes 6 --sats-per-plane 10 \
--altitude-km 550 --inclination-deg 53 --phasing 1 \
--output ph1.jsonGenerated 'ph1' with 60 satellites (6 planes x 10 per plane) -> ph1.jsonMeasure the phasing you chose
--phasing defaults to 1 and it is rarely the only sensible value. Generate an
alternative and compare on coverage:
orbitforge constellation walker \
--name ph3 --planes 6 --sats-per-plane 10 \
--altitude-km 550 --inclination-deg 53 --phasing 3 \
--output ph3.json
for f in ph1 ph3; do
orbitforge coverage --constellation $f.json \
--duration-hours 6 --step-seconds 120 \
--grid-deg 10 --min-elevation-deg 10
done--- phasing F=1 ---
mean coverage 70.1% (area-weighted), min 0.0%, fully covered 10.8%, any 68.4%
max fold 3, max coverage gap 5760 s
--- phasing F=3 ---
mean coverage 72.7% (area-weighted), min 0.0%, fully covered 12.3%, any 68.4%
max fold 3, max coverage gap 5880 sScreen the geometry
orbitforge conjunction screen \
--constellation ph3.json \
--duration-hours 24 --threshold-km 20Screened 60 objects (all pairs) over 24.0 h: 0 events under 20 km.Reading the phasing comparison
Same 60 satellites, same altitude, same inclination. Only the phasing factor differs.
| Metric | F = 1 | F = 3 | Better |
|---|---|---|---|
| Mean coverage | 70.1 percent | 72.7 percent | F = 3 |
| Fully covered points | 10.8 percent | 12.3 percent | F = 3 |
| Max coverage gap | 5760 s | 5880 s | F = 1, marginally |
| Max fold | 3 | 3 | Equal |
F = 3 buys 2.6 points of mean coverage and 1.5 points more continuously covered area, and costs 120 seconds on the worst gap.
Which of those matters depends entirely on the requirement. A service sized by average availability prefers F = 3. A service with a hard maximum-outage requirement may prefer F = 1, because the worst gap is the binding number and the mean is irrelevant to it.
The default of 1 is a starting point, not a recommendation. Two minutes of comparison turns it into a decision.
Both configurations show min 0.0%, because at 53 degrees inclination neither
reaches the poles. Phasing redistributes coverage between the latitudes the
design can reach; it cannot extend that reach.
What screening does and does not tell you
Zero events at a 20 km threshold is the expected result for a well-phased Walker pattern, and both configurations produced it. Screening did not distinguish them here.
That is worth stating plainly rather than implying screening is a phasing test. It is a safety check: it confirms your chosen phasing has not clustered satellites at plane crossings. A clean result means nothing is wrong, not that the choice is optimal.
Run it whenever you change the phasing factor, and use coverage to choose between options that both screen clean.
Choosing the other parameters
| Parameter | Question it answers | Watch for |
|---|---|---|
--inclination-deg | Which latitudes can be covered at all | A hard ceiling; nothing above it is ever covered |
--altitude-km | Footprint size against path loss and revisit | Higher needs fewer satellites and costs link margin |
--planes | Longitude distribution | More planes cost more launches |
--sats-per-plane | Along-track gap within a plane | More satellites shorten the in-plane gap |
--phasing | Inter-plane stagger | Measure it, as above |
Next steps
- Coverage and revisit to converge the numbers used above.
- Synthesize from requirements to have the solver choose these parameters instead.
main (pre-release)