Skip to content

CDM — Conjunction Data Message

Parses CCSDS Conjunction Data Messages containing state vectors, covariance matrices, and collision probability for two-object close approaches.


CDM

CDM(originator: str, message_id: str, tca: Epoch, miss_distance: float, object1: CDMObject, object2: CDMObject)

A CCSDS Conjunction Data Message (CDM).

CDM messages describe a conjunction between two space objects, containing state vectors, covariance matrices, and collision probability data.

Can be created programmatically or parsed from KVN/XML/JSON.

Parameters:

Name Type Description Default
originator str

Originator of the message

required
message_id str

Unique message identifier

required
tca Epoch

Time of Closest Approach

required
miss_distance float

Miss distance in meters

required
object1 CDMObject

First conjunction object

required
object2 CDMObject

Second conjunction object

required
Example
from brahe.ccsds import CDM, CDMObject, CDMStateVector, CDMRTNCovariance
import numpy as np

sv1 = CDMStateVector([7000e3, 0.0, 0.0], [0.0, 7500.0, 0.0])
cov1 = CDMRTNCovariance(np.eye(6).tolist())
obj1 = CDMObject("12345", "SATCAT", "SAT A", "2020-001A",
                  "NONE", "CALCULATED", "YES", "EME2000", sv1, cov1)

sv2 = CDMStateVector([7001e3, 0.0, 0.0], [0.0, -7500.0, 0.0])
cov2 = CDMRTNCovariance(np.eye(6).tolist())
obj2 = CDMObject("67890", "SATCAT", "SAT B", "2021-002B",
                  "NONE", "CALCULATED", "NO", "EME2000", sv2, cov2)

tca = Epoch.from_datetime(2024, 1, 15, 12, 0, 0.0, 0.0, TimeSystem.UTC)
cdm = CDM(originator="TEST_ORG", message_id="MSG001",
          tca=tca, miss_distance=715.0, object1=obj1, object2=obj2)
print(cdm.miss_distance)

Initialize instance.

collision_probability property

collision_probability: Any

Optional[float]: Collision probability

collision_probability_method property

collision_probability_method: Any

Optional[str]: Collision probability method

creation_date property

creation_date: Tuple[int, ...]

Epoch: Creation date of the message

format_version property

format_version: Any

float: CDM format version (e.g. 1.0, 2.0)

message_for property

message_for: Any

Optional[str]: Spacecraft name(s) CDM applies to

message_id property

message_id: Any

str: Unique message identifier

miss_distance property

miss_distance: Any

float: Miss distance in meters

object1_covariance property

object1_covariance: Any

numpy.ndarray: Object 1 RTN covariance matrix (6x6) in m², m²/s, m²/s²

object1_designator property

object1_designator: Any

str: Object 1 designator (catalog ID)

object1_international_designator property

object1_international_designator: Any

str: Object 1 international designator

object1_name property

object1_name: Any

str: Object 1 name

object1_ref_frame property

object1_ref_frame: Any

str: Object 1 reference frame

object1_state property

object1_state: ndarray

numpy.ndarray: Object 1 state vector [x, y, z, vx, vy, vz] in m and m/s

object2_covariance property

object2_covariance: Any

numpy.ndarray: Object 2 RTN covariance matrix (6x6) in m², m²/s, m²/s²

object2_designator property

object2_designator: Any

str: Object 2 designator (catalog ID)

object2_international_designator property

object2_international_designator: Any

str: Object 2 international designator

object2_name property

object2_name: Any

str: Object 2 name

object2_ref_frame property

object2_ref_frame: Any

str: Object 2 reference frame

object2_state property

object2_state: ndarray

numpy.ndarray: Object 2 state vector [x, y, z, vx, vy, vz] in m and m/s

originator property

originator: Any

str: Originator of the message

relative_speed property

relative_speed: Any

Optional[float]: Relative speed in m/s

tca property

tca: Any

Epoch: Time of Closest Approach

from_file staticmethod

from_file(path: str) -> CDM

Parse a CDM from a file, auto-detecting the format.

Parameters:

Name Type Description Default
path str

Path to the CDM file

required

Returns:

Name Type Description
CDM CDM

Parsed CDM message

from_str staticmethod

from_str(content: str) -> CDM

Parse a CDM from a string, auto-detecting the format.

Parameters:

Name Type Description Default
content str

String content of the CDM message

required

Returns:

Name Type Description
CDM CDM

Parsed CDM message

to_file method descriptor

to_file(path: str, format: str) -> Any

Write the CDM to a file in the specified format.

Parameters:

Name Type Description Default
path str

Output file path

required
format str

Output format - "KVN", "XML", or "JSON"

required

to_json_string method descriptor

to_json_string(uppercase_keys: bool = False) -> str

Write the CDM to JSON with explicit key case control.

Parameters:

Name Type Description Default
uppercase_keys bool

If True, use uppercase CCSDS keywords. Default: False.

False

Returns:

Name Type Description
str str

Serialized JSON string

to_string method descriptor

to_string(format: str) -> str

Write the CDM to a string in the specified format.

Parameters:

Name Type Description Default
format str

Output format - "KVN", "XML", or "JSON"

required

Returns:

Name Type Description
str str

Serialized CDM string


CDMObject

CDMObject(designator: str, catalog_name: str, name: str, international_designator: str, ephemeris_name: str, covariance_method: str, maneuverable: str, ref_frame: str, state_vector: CDMStateVector, rtn_covariance: CDMRTNCovariance)

One object in a CDM (metadata + state vector + covariance).

Combines object identity, reference frame, state at TCA, and RTN covariance.

Parameters:

Name Type Description Default
designator str

Catalog ID (e.g. "12345")

required
catalog_name str

Catalog source (e.g. "SATCAT")

required
name str

Object name (e.g. "SATELLITE A")

required
international_designator str

COSPAR ID (e.g. "2020-001A")

required
ephemeris_name str

Ephemeris source (e.g. "NONE")

required
covariance_method str

"CALCULATED" or "DEFAULT"

required
maneuverable str

"YES", "NO", "N/A", or "UNKNOWN"

required
ref_frame str

Reference frame (e.g. "EME2000")

required
state_vector CDMStateVector

State at TCA

required
rtn_covariance CDMRTNCovariance

RTN covariance matrix

required
Example
from brahe.ccsds import CDMObject, CDMStateVector, CDMRTNCovariance
import numpy as np

sv = CDMStateVector([7000e3, 0.0, 0.0], [0.0, 7500.0, 0.0])
cov = CDMRTNCovariance(np.eye(6).tolist())
obj = CDMObject(
    designator="12345",
    catalog_name="SATCAT",
    name="SAT A",
    international_designator="2020-001A",
    ephemeris_name="NONE",
    covariance_method="CALCULATED",
    maneuverable="YES",
    ref_frame="EME2000",
    state_vector=sv,
    rtn_covariance=cov,
)

Initialize instance.

catalog_name property

catalog_name: Any

str: Catalog source

covariance property

covariance: Any

numpy.ndarray: RTN covariance matrix (6x6)

covariance_method property

covariance_method: Any

str: Covariance method (CALCULATED or DEFAULT)

designator property

designator: Any

str: Catalog ID

ephemeris_name property

ephemeris_name: Any

str: Ephemeris name

international_designator property

international_designator: Any

str: COSPAR international designator

maneuverable property

maneuverable: Any

str: Maneuverable flag (YES, NO, N/A, UNKNOWN)

name property

name: Any

str: Object name

ref_frame property

ref_frame: Any

str: Reference frame

state property

state: ndarray

numpy.ndarray: State vector [x, y, z, vx, vy, vz] in m and m/s


CDMStateVector

CDMStateVector(position: list[float], velocity: list[float])

A CDM state vector with position and velocity at TCA.

Parameters:

Name Type Description Default
position list[float]

Position [x, y, z] in meters

required
velocity list[float]

Velocity [vx, vy, vz] in m/s

required
Example
1
2
3
4
5
6
from brahe.ccsds import CDMStateVector
sv = CDMStateVector(
    position=[7000e3, 0.0, 0.0],
    velocity=[0.0, 7500.0, 0.0],
)
print(sv.position)

Initialize instance.

position property

position: Any

numpy.ndarray: Position [x, y, z] in meters

velocity property

velocity: Any

numpy.ndarray: Velocity [vx, vy, vz] in m/s


CDMRTNCovariance

CDMRTNCovariance(matrix: list[list[float]])

A CDM RTN covariance matrix (6x6 position/velocity).

Parameters:

Name Type Description Default
matrix list[list[float]]

6x6 symmetric covariance matrix in RTN frame. Units: position-position m², position-velocity m²/s, velocity-velocity m²/s²

required
Example
1
2
3
4
import numpy as np
from brahe.ccsds import CDMRTNCovariance
cov = CDMRTNCovariance(matrix=np.eye(6).tolist())
print(cov.matrix[0][0])

Initialize instance.

matrix property

matrix: ndarray

numpy.ndarray: 6x6 RTN covariance matrix


See Also