Skip to Content
GuidesOperatingScreening for conjunctions

Screening for conjunctions

What you will accomplish

A conjunction screen you can act on, and a clear view of which parts of the answer are geometry and which are assumptions you supplied.

Two things in this workflow produce alarming numbers that mean nothing. Both are shown here with real output.

Prerequisites

  • A constellation.
  • Optionally a TLE catalog to screen against.

Steps

Screen the fleet against itself

orbitforge conjunction screen \ --constellation ph1.json \ --duration-hours 24 --threshold-km 10 --step-seconds 60
Screened 60 objects (all pairs) over 24.0 h: 0 events under 10 km.

Screen against an external catalog

orbitforge conjunction screen \ --constellation ph1.json \ --catalog stations.tle \ --duration-hours 24 --threshold-km 10 --step-seconds 60

A well-formed Walker does not conflict with itself

The intra-constellation screen returns nothing, and raising the threshold does not change that:

ThresholdEvents
10 km0
50 km0
100 km0
200 km0

This is a real result, not a failure to look. A Walker pattern places satellites at uniform spacing within a plane and phases adjacent planes so that crossings do not coincide, so intra-constellation separations stay large by construction.

A screen that returns nothing is evidence the pattern is well formed. It is not evidence that the fleet is safe, because the risk is from objects you do not control.

Note also that conjunction screen has no --model flag. It does not accept a propagation model the way simulate and coverage do, so plan the epoch discipline for a TLE-derived fleet accordingly.

1042 events, none of them collisions

Screening a TLE-imported fleet against the catalog it came from:

Screened 24 objects vs 24 catalog entries over 24.0 h: 1042 events under 10 km. iss-49271 / FREGAT DEB: TCA 2026-06-26T02:10:14Z miss 1.164 km at 0.00 km/s (RIC [-0.000, -1.164, -0.000]) iss-53239 / CSS (WENTIAN): TCA ... miss 1.374 km at 0.00 km/s iss-53239 / TIANZHOU-10: TCA ... miss 1.375 km at 0.00 km/s

Every one of those 1042 events has a relative speed below 1.6 m/s. The maximum across the whole set is 0.0016 km/s.

A real crossing conjunction in low Earth orbit has a relative speed of several kilometers per second. Zero relative speed means the two objects are co-orbiting: either the same object appearing in both inputs, or genuinely co-located hardware such as modules and visiting vehicles at a space station.

Three signatures identify them, and all three are in the output:

  1. Relative speed near zero. The decisive one.
  2. Purely along-track separation. The cross-track component of the RIC offset comes out around a nanometer, which is numerically zero.
  3. The same pair repeating at the orbital period. The 1042 events come from only 64 distinct pairs, and the most frequent produced 17 events each over 24 hours, which is one per revolution.

The screen did exactly what it was asked. Filtering co-orbiting pairs is the analyst’s job, and the fastest filter is a minimum relative speed.

Collision probability is a statement about your covariance

Probability is only reported when you supply --ric-sigma-km:

orbitforge conjunction screen \ --constellation iss.json --catalog stations.tle \ --start 2026-06-25T19:29:47Z \ --duration-hours 2 --threshold-km 10 \ --hard-body-m 20 --ric-sigma-km 0.5,0.5,0.5

A TLE contains no covariance. Whatever you pass to --ric-sigma-km came from somewhere else, or from your imagination. The tool declines to invent one, which is why probability is absent by default.

Holding the geometry fixed at a 1.164 km miss and varying only the assumed covariance:

Assumed sigmaProbability
0.05 km4.0e-60
0.10 km2.2e-17
0.25 km7.1e-6
0.45 km9.3e-5
0.55 km1.1e-4
1.0 km7.1e-5
2.0 km2.3e-5
10.0 km1.0e-6

Same encounter, same miss distance, and the probability spans 54 orders of magnitude.

Probability dilution

Read that table again and notice it is not monotonic. Probability peaks near a sigma of 0.55 km, roughly half the miss distance, and falls away on both sides.

  • Small sigma. You know both orbits precisely, and you know they miss. Low probability, and genuinely reassuring.
  • Large sigma. The probability mass is smeared across an enormous volume, so very little of it lands on the hard body. Low probability, and not reassuring at all.

This is probability dilution, and it is the trap in the table. A low number arising from poor tracking looks identical to a low number arising from good tracking.

Never quote a probability without the covariance that produced it. A Pc of 1e-6 at 10 km sigma means “we have no idea where these objects are”, which is the opposite of what the number appears to say.

Hard-body radius scales cleanly

Unlike covariance, this one behaves predictably. At a fixed 0.5 km sigma:

Hard bodyProbability
5 m6.4e-6
10 m2.6e-5
20 m1.0e-4
50 m6.4e-4
100 m2.6e-3

Probability scales with the square of the radius, as an area should. Doubling from 10 to 20 m multiplies it by 4; going from 20 to 50 m multiplies it by 6.25.

That is a check you can run yourself, and it is worth running once on any tool before trusting its probabilities.

A workable procedure

  1. Screen at a generous threshold to see the population.
  2. Discard events below a minimum relative speed, which removes co-orbiting pairs and self-matches.
  3. Confirm your own satellites are not present in the catalog.
  4. For survivors, obtain a real covariance rather than assuming one.
  5. Compute probability across a range of plausible covariances and report the range, not a single value.
  6. Treat a low probability from a large covariance as a tracking problem, not a safety result.

Checklist

  1. Does the catalog contain your own satellites?
  2. Did you filter on relative speed?
  3. Is every probability quoted with the covariance behind it?
  4. Is the covariance measured or assumed, and does the reader know which?
  5. Is the hard-body radius realistic for both objects together?

Next steps

Question? Give us feedbackDocuments Varaha Constellation Designer main (pre-release)
Last updated on