A Conjunction Data Message (CDM), defined by the CCSDS 508.0-B-1 Conjunction Data Message standard, describes a close approach between two space objects, providing state vectors, covariance matrices, and collision probability data at the Time of Closest Approach (TCA). It is the standard format used by conjunction assessment services (e.g., 18th Space Defense Squadron) to communicate collision risk to satellite operators.
CDM: SATELLITE A vs DEBRIS FRAGMENT
Miss distance: 502.3 m
Collision probability: 0.00015
KVN output (5852 chars)
Round-trip: SATELLITE A vs DEBRIS FRAGMENT
CDM: SATELLITE A vs DEBRIS FRAGMENT
Miss distance: 502.3 m
Collision probability: Some(0.00015)
KVN output (5852 chars)
Round-trip: SATELLITE A vs DEBRIS FRAGMENT
Each object's metadata (9 mandatory fields plus optional CCSDS fields) can also be constructed with CDMObjectMetadata::builder(), which is Rust-only -- there is no Python binding for this builder. The mandatory fields are set through chained named setters, and build() returns an error naming any mandatory field left unset instead of applying a default. The flat constructor used above remains available as an alternative, taking the 9 mandatory fields positionally:
usebrahe::ccsds::cdm::CDMObjectMetadata;usebrahe::ccsds::common::CCSDSRefFrame;fnmain(){letmetadata=CDMObjectMetadata::builder().object("OBJECT1").object_designator("12345").catalog_name("SATCAT").object_name("SATELLITE A").international_designator("2020-001A").ephemeris_name("NONE").covariance_method("CALCULATED").maneuverable("YES").ref_frame(CCSDSRefFrame::EME2000).comment("Generated for conjunction screening").build().unwrap();println!("Object: {}",metadata.object_name);println!("Designator: {}",metadata.object_designator);println!("Comments: {:?}",metadata.comments);// The flat constructor takes the same 9 mandatory fields positionally,// without naming each one -- an alternative when all values are// already at hand.letmetadata_flat=CDMObjectMetadata::new("OBJECT1".to_string(),"12345".to_string(),"SATCAT".to_string(),"SATELLITE A".to_string(),"2020-001A".to_string(),"NONE".to_string(),"CALCULATED".to_string(),"YES".to_string(),CCSDSRefFrame::EME2000,);assert_eq!(metadata_flat.object_name,metadata.object_name);println!("Example validated successfully!");}
Every CDM has a header (version, creation date, originator, message ID), relative metadata (TCA, miss distance, optional collision probability and screening volume), and exactly two object sections.
Each object section contains metadata (object identity, reference frame, covariance method, force model info), OD parameters (observation spans, residuals), additional parameters (mass, drag/SRP areas, hard-body radius), a state vector at TCA, and a covariance matrix in the RTN frame.
The covariance matrix is always specified in the Radial-Transverse-Normal (RTN) frame centered on the object. The standard 6\(\times\)6 matrix covers position and velocity uncertainty. CDM also supports extended 7\(\times\)7 through 9\(\times\)9 matrices that include drag coefficient, solar radiation pressure, and thrust uncertainty correlations.