Conjunction
/conjunction/screenThis is a design-stage screening filter, not an operational conjunction assessment service. Do not use its output to decide whether to execute an avoidance maneuver. Operational decisions require current, high-accuracy state estimates with maintained covariance from an authoritative source.
Its legitimate use is architectural: does this constellation geometry create conjunction pressure, and how does that change if the design changes? See accuracy and limitations.
Purpose
Propagates every object over a window, finds close approaches under a distance threshold, and reports time of closest approach and miss distance. With a hard-body radius supplied it also computes collision probability.
Request
| Parameter | Type | Unit | Default | Required | Description |
|---|---|---|---|---|---|
constellation_id | string | n/a | — | Yes | Identifier of an existing constellation. |
start | string | RFC 3339 UTC | 2026-01-01T00:00:00Z | No | Screening window start epoch. |
duration_hours | number | h | 72 | No | Window length. |
threshold_km | number | km | 10 | No | Report approaches closer than this. |
step_seconds | number | s | 60 | No | Coarse scan step. Candidate approaches are refined. |
catalog | string | n/a | — | No | TLE catalog. Screens constellation against catalog instead of against itself. |
hard_body_m | number | m | — | No | Combined hard-body radius. Enables Foster 2D collision probability. |
Example
Screening a 60-satellite Walker shell against itself over 24 hours:
curl -s -X POST http://127.0.0.1:8080/conjunction/screen \
-H 'content-type: application/json' \
-d '{
"constellation_id": "demo",
"duration_hours": 24.0,
"threshold_km": 10.0
}'{
"status": "ok",
"object_count": 60,
"catalog_count": 0,
"event_count": 0,
"events": []
}Zero events is the expected result
For a well-phased Walker pattern, an empty events array is what should happen.
Satellites within a plane are evenly spaced along track, and the phasing offset
staggers adjacent planes so that plane crossings do not coincide with satellites
arriving at the crossing point.
A non-zero intra-constellation count is a design finding, not an operations problem. It usually means the phasing factor is wrong for the plane count, and it is fixed by changing the design rather than by planning maneuvers.
catalog_count: 0 confirms this was an intra-constellation screen. Supplying
catalog screens against external objects instead, and a non-zero count there
means something entirely different.
Collision probability
Supplying hard_body_m enables a probability calculation on each event, using
per-object position uncertainty in the radial, in-track, and cross-track
directions. In-track uncertainty is conventionally the largest, because
along-track error grows fastest under almost every error source.
The probability is only as meaningful as the covariance supplied. Default sigmas are placeholders, and substituting real covariance from an orbit determination solution changes the answer by orders of magnitude.
A probability computed from placeholder sigmas must never be quoted as a risk figure.
Step size and missed events
The coarse scan samples at step_seconds. Two objects in low Earth orbit can
close at several kilometers per second, so a 60-second step advances the relative
position by hundreds of kilometers. Candidates found by the coarse scan are
refined to locate the true closest approach.
The practical consequence: a threshold much smaller than the distance traveled per step relies entirely on refinement. Verify convergence by halving the step and confirming the event list is unchanged.
See also
orbitforge conjunction screen.- Accuracy and limitations for why this must not drive operational decisions.
main (pre-release)