Conjunction Data Message (CDM)¶
- class ccsds_ndm.Cdm(header, body)¶
Conjunction Data Message (CDM).
The CDM contains information about a single conjunction between a primary object (Object1) and a secondary object (Object2). It allows satellite operators to evaluate the risk of collision and plan avoidance maneuvers.
The message includes: - Positions and velocities of both objects at Time of Closest Approach (TCA). - Covariance matrices for both objects at TCA. - Relative position and velocity of Object2 with respect to Object1. - Metadata describing how the data was determined (orbit determination settings).
- static from_file(path, format=None)¶
Parse a CDM from a file path with optional format.
- static from_kvn(kvn)¶
Parse a CDM from a KVN formatted string.
- static from_str(data, format=None)¶
Parse a CDM from a string with optional format.
- header¶
Conjunction Data Message (CDM).
The CDM contains information about a single conjunction between a primary object (Object1) and a secondary object (Object2). It allows satellite operators to evaluate the risk of collision and plan avoidance maneuvers.
The message includes: - Positions and velocities of both objects at Time of Closest Approach (TCA). - Covariance matrices for both objects at TCA. - Relative position and velocity of Object2 with respect to Object1. - Metadata describing how the data was determined (orbit determination settings).
- Type:
- to_file(path, format, validate=True)¶
Write the CDM to a file.
- to_str(format, validate=True)¶
Serialize the CDM to a string.
- class ccsds_ndm.CdmHeader(creation_date, originator, message_id, message_for=None, comment=Ellipsis)¶
Represents the cdmHeader complex type.
- Parameters:
- comment¶
Comments (allowed in the CDM Header only immediately after the CDM version number). (See 6.3.4 for formatting rules.)
Examples: This is a comment
- creation_date¶
Message creation date/time in Coordinated Universal Time (UTC). (See 6.3.2.6 for formatting rules.)
Examples: 2010-03-12T22:31:12.000, 2010-071T22:31:12.000
- Type:
- message_for¶
Spacecraft name(s) for which the CDM is provided.
Examples: SPOT, ENVISAT, IRIDIUM, INTELSAT
- Type:
Optional[str]
- message_id¶
ID that uniquely identifies a message from a given originator. The format and content of the message identifier value are at the discretion of the originator. (See 5.2.9 for formatting rules.)
Examples: 201113719185, ABC-12_34
- Type:
- originator¶
Creating agency or owner/operator. Value should be the ‘Abbreviation’ value from the SANA ‘Organizations’ registry (<https://sanaregistry.org/r/organizations>) for an organization that has the Role of ‘Conjunction Data Message Originator’. (See 5.2.9 for formatting rules.)
Examples: JSPOC, ESA SST, CAESAR, JPL, SDC
- Type:
- class ccsds_ndm.CdmBody(relative_metadata_data, segments)¶
The body of the CDM.
Contains relative metadata/data between the two objects and the specific segments for each object.
- Parameters:
relative_metadata_data (RelativeMetadataData) – Data describing the relative relationships between Object1 and Object2.
segments (list of CdmSegment) – The segments containing specific data for each object.
- relative_metadata_data¶
Data describing the relative relationships between Object1 and Object2.
- Type:
- segments¶
The segments containing specific data for each object.
- Type:
- class ccsds_ndm.CdmSegment(metadata, data)¶
A CDM Segment, consisting of metadata and data for a specific object.
- metadata¶
Metadata for the object.
- Type:
- class ccsds_ndm.CdmMetadata(object, object_designator, catalog_name, object_name, international_designator, ref_frame, ephemeris_name=Ellipsis, covariance_method=None, maneuverable=None, object_type=None, operator_contact_position=None, operator_organization=None, operator_phone=None, operator_email=None, orbit_center=None, gravity_model=None, atmospheric_model=None, n_body_perturbations=None, solar_rad_pressure=None, earth_tides=None, intrack_thrust=None, comment=Ellipsis)¶
Metadata Section for an object in a CDM.
Contains identification, contact, and modeling information for either Object1 or Object2.
- Parameters:
object (Union[CdmObjectType, str]) – The object identification (OBJECT1 or OBJECT2).
object_designator (str) – The satellite catalog designator for the object.
catalog_name (str) – The satellite catalog used for the object.
object_name (str) – Spacecraft name for the object.
international_designator (str) – The full international designator (YYYY-NNNP{PP}).
ephemeris_name (str) – Unique name of the external ephemeris file or ‘NONE’.
covariance_method (Union[CovarianceMethodType, str]) – Method used to calculate the covariance (CALCULATED or DEFAULT).
maneuverable (Union[ManeuverableType, str]) – The maneuver capacity of the object (YES, NO, or NA).
ref_frame (Union[ReferenceFrameType, str]) – Reference frame for state vector data (GCRF, EME2000, or ITRF).
object_type (Union[ObjectDescription, str], optional) – The object type (PAYLOAD, ROCKET BODY, DEBRIS, etc.).
operator_contact_position (str, optional) – Contact position of the owner/operator.
operator_organization (str, optional) – Contact organization.
operator_phone (str, optional) – Phone number of the contact.
operator_email (str, optional) – Email address of the contact.
orbit_center (str, optional) – The central body (e.g., EARTH, SUN).
gravity_model (str, optional) – The gravity model used for the OD.
atmospheric_model (str, optional) – The atmospheric density model used for the OD.
n_body_perturbations (str, optional) – N-body gravitational perturbations used.
solar_rad_pressure (bool, optional) – Whether solar radiation pressure was used.
earth_tides (bool, optional) – Whether solid Earth and ocean tides were used.
intrack_thrust (bool, optional) – Whether in-track thrust modeling was used.
- atmospheric_model¶
The atmospheric density model used for the OD of the object. If ‘NONE’ is specified, then no atmospheric model was used.
Examples: JACCHIA 70, MSIS, JACCHIA 70 DCA, NONE
- Type:
Optional[str]
- catalog_name¶
The satellite catalog used for the object. Value should be taken from the SANA ‘Conjunction Data Message CATALOG_NAME’ registry (<https://sanaregistry.org/r/cdm_catalog>). (See 5.2.9 for formatting rules.)
Examples: SATCAT
- Type:
- covariance_method¶
Method used to calculate the covariance during the OD that produced the state vector, or whether an arbitrary, non-calculated default value was used. Caution should be used when using the default value for calculating collision probability.
Examples: CALCULATED, DEFAULT
- Type:
- earth_tides¶
Indication of whether solid Earth and ocean tides were used for the OD of the object.
Examples: YES, NO
- Type:
Optional[bool]
- ephemeris_name¶
Unique name of the external ephemeris file used for the object or NONE. This is used to indicate whether an external (i.e., Owner/Operator [O/O] provided) ephemeris file was used to calculate the CA. If ‘NONE’ is specified, then the output of the most current Orbit Determination (OD) of the CDM originator was used in the CA.
Examples: EPHEMERIS SATELLITE A, NONE
- Type:
- gravity_model¶
The gravity model used for the OD of the object. (See annex E under GRAVITY_MODEL for definition).
Examples: EGM-96: 36D 360, WGS-84_GEOID: 24D 240, JGM-2: 41D 410
- Type:
Optional[str]
- international_designator¶
The full international designator for the object. Values shall have the format YYYY-NNNP{PP}, where: YYYY = year of launch; NNN = three-digit serial number of launch (with leading zeros); P{PP} = At least one capital letter for the identification of the part brought into space by the launch. In cases where the object has no international designator, the value UNKNOWN should be used. (See 5.2.9 for further formatting rules.)
Examples: 2002-021A, UNKNOWN
- Type:
- intrack_thrust¶
Indication of whether in-track thrust modeling was used for the OD of the object.
Examples: YES, NO
- Type:
Optional[bool]
- maneuverable¶
The maneuver capacity of the object. (See 1.4.3.1 for definition of ‘N/A’.)
Examples: YES, NO, N/A
- Type:
- n_body_perturbations¶
The N-body gravitational perturbations used for the OD of the object. If ‘NONE’ is specified, then no third-body gravitational perturbations were used.
Examples: MOON, SUN, JUPITER, NONE
- Type:
Optional[str]
- object¶
The object to which the metadata and data apply (Object1 or Object2).
Examples: OBJECT1, OBJECT2
- Type:
- object_designator¶
The satellite catalog designator for the object. (See 5.2.9 for formatting rules.)
Examples: 12345
- Type:
- object_type¶
The object type.
Examples: PAYLOAD, ROCKET BODY, DEBRIS, UNKNOWN, OTHER
- Type:
Optional[ObjectDescription]
- operator_contact_position¶
Contact position of the owner/operator of the object.
Examples: ORBITAL SAFETY ANALYST (OSA), NETWORK CONTROLLER
- Type:
Optional[str]
- operator_email¶
Email address of the contact position or organization of the object.
Examples: JOHN.DOE@SOMEWHERE.NET
- Type:
Optional[str]
- operator_organization¶
Contact organization of the object.
Examples: EUMETSAT, ESA, INTELSAT, IRIDIUM
- Type:
Optional[str]
- operator_phone¶
Phone number of the contact position or organization for the object.
Examples: +49615130312
- Type:
Optional[str]
- orbit_center¶
The central body about which Object1 and Object2 orbit. If not specified, the center is assumed to be Earth.
Examples: EARTH, SUN, MOON, MARS
- Type:
Optional[str]
- ref_frame¶
Name of the reference frame in which the state vector data are given. Value must be selected from the list of values to the right (see reference [F1]) and be the same for both Object1 and Object2.
Examples: GCRF, EME2000, ITRF
- Type:
- class ccsds_ndm.CdmData(state_vector, covariance_matrix=None, od_parameters=None, additional_parameters=None, comments=None)¶
Data Section for an object in a CDM.
Contains logical blocks for OD parameters, Additional parameters, State Vector, and Covariance Matrix.
- Parameters:
state_vector (CdmStateVector) – Object position and velocity at TCA.
covariance_matrix (CdmCovarianceMatrix) – Object covariance at TCA.
- additional_parameters¶
Additional Parameters.
- Type:
Optional[AdditionalParameters]
- covariance_matrix¶
Covariance Matrix.
- Type:
Optional[CdmCovarianceMatrix]
- covariance_matrix_numpy¶
Covariance matrix as a NumPy array (convenience method).
- Returns:
9x9 covariance matrix.
- Return type:
numpy.ndarray
- Type:
numpy.ndarray
- static from_numpy(state_vector, covariance_matrix=None, od_parameters=None, additional_parameters=None, comments=None)¶
- od_parameters¶
Orbit Determination Parameters.
- Type:
Optional[OdParameters]
- state_vector¶
State Vector.
- Type:
- state_vector_numpy¶
State vector as a NumPy array (convenience method).
- Returns:
1D array of shape (6,) containing [X, Y, Z, X_DOT, Y_DOT, Z_DOT]. Units: [km, km, km, km/s, km/s, km/s]
- Return type:
numpy.ndarray
- Type:
numpy.ndarray
- class ccsds_ndm.CdmStateVector(x, y, z, x_dot, y_dot, z_dot)¶
State Vector containing position and velocity at TCA
- Parameters:
- static from_numpy(array)¶
- to_numpy()¶
Return the state vector as a NumPy array.
- Returns:
1D array of shape (6,) containing [X, Y, Z, X_DOT, Y_DOT, Z_DOT]. Units: [km, km, km, km/s, km/s, km/s]
- Return type:
numpy.ndarray
- Type:
numpy.ndarray
- class ccsds_ndm.CdmCovarianceMatrix(cr_r, ct_r, ct_t, cn_r, cn_t, cn_n, crdot_r, crdot_t, crdot_n, crdot_rdot, ctdot_r, ctdot_t, ctdot_n, ctdot_rdot, ctdot_tdot, cndot_r, cndot_t, cndot_n, cndot_rdot, cndot_tdot, cndot_ndot, cdrg_r=None, cdrg_t=None, cdrg_n=None, cdrg_rdot=None, cdrg_tdot=None, cdrg_ndot=None, cdrg_drg=None, csrp_r=None, csrp_t=None, csrp_n=None, csrp_rdot=None, csrp_tdot=None, csrp_ndot=None, csrp_drg=None, csrp_srp=None, cthr_r=None, cthr_t=None, cthr_n=None, cthr_rdot=None, cthr_tdot=None, cthr_ndot=None, cthr_drg=None, cthr_srp=None, cthr_thr=None, comment=None)¶
Covariance Matrix.
- Parameters:
cr_r (float) – Radial position variance. Units: m^2
ct_r (float) – Transverse-Radial position covariance. Units: m^2
ct_t (float) – Transverse position variance. Units: m^2
cn_r (float) – Normal-Radial position covariance. Units: m^2
cn_t (float) – Normal-Transverse position covariance. Units: m^2
cn_n (float) – Normal position variance. Units: m^2
crdot_r (float) – Radial velocity - Radial position covariance. Units: m^2/s
crdot_t (float) – Radial velocity - Transverse position covariance. Units: m^2/s
crdot_n (float) – Radial velocity - Normal position covariance. Units: m^2/s
crdot_rdot (float) – Radial velocity variance. Units: m^2/s^2
ctdot_r (float) – Transverse velocity - Radial position covariance. Units: m^2/s
ctdot_t (float) – Transverse velocity - Transverse position covariance. Units: m^2/s
ctdot_n (float) – Transverse velocity - Normal position covariance. Units: m^2/s
ctdot_rdot (float) – Transverse velocity - Radial velocity covariance. Units: m^2/s^2
ctdot_tdot (float) – Transverse velocity variance. Units: m^2/s^2
cndot_r (float) – Normal velocity - Radial position covariance. Units: m^2/s
cndot_t (float) – Normal velocity - Transverse position covariance. Units: m^2/s
cndot_n (float) – Normal velocity - Normal position covariance. Units: m^2/s
cndot_rdot (float) – Normal velocity - Radial velocity covariance. Units: m^2/s^2
cndot_tdot (float) – Normal velocity - Transverse velocity covariance. Units: m^2/s^2
cndot_ndot (float) – Normal velocity variance. Units: m^2/s^2
cdrg_r (float) – Drag coeff - Radial position covariance.
cdrg_t (float) – Drag coeff - Transverse position covariance.
cdrg_n (float) – Drag coeff - Normal position covariance.
cdrg_rdot (float) – Drag coeff - Radial velocity covariance.
cdrg_tdot (float) – Drag coeff - Transverse velocity covariance.
cdrg_ndot (float) – Drag coeff - Normal velocity covariance.
cdrg_drg (float) – Drag coeff variance.
csrp_r (float) – SRP coeff - Radial position covariance.
csrp_t (float) – SRP coeff - Transverse position covariance.
csrp_n (float) – SRP coeff - Normal position covariance.
csrp_rdot (float) – SRP coeff - Radial velocity covariance.
csrp_tdot (float) – SRP coeff - Transverse velocity covariance.
csrp_ndot (float) – SRP coeff - Normal velocity covariance.
csrp_drg (float) – SRP coeff - Drag coeff covariance.
csrp_srp (float) – SRP coeff variance.
cthr_r (float) – Thrust - Radial position covariance.
cthr_t (float) – Thrust - Transverse position covariance.
cthr_n (float) – Thrust - Normal position covariance.
cthr_rdot (float) – Thrust - Radial velocity covariance.
cthr_tdot (float) – Thrust - Transverse velocity covariance.
cthr_ndot (float) – Thrust - Normal velocity covariance.
cthr_drg (float) – Thrust - Drag coeff covariance.
cthr_srp (float) – Thrust - SRP coeff covariance.
cthr_thr (float) – Thrust variance.
- static from_numpy(array, comment=None)¶
- to_numpy()¶
Returns the covariance matrix as a NumPy array. The size will be 6x6, 7x7, 8x8, or 9x9 depending on whether optional Drag, SRP, and Thrust parameters are provided, as per CCSDS 508.0-B-1.
- class ccsds_ndm.RelativeMetadataData(tca, miss_distance, relative_speed=None, relative_position=None, relative_velocity=None, start_screen_period=None, stop_screen_period=None, screen_volume_frame=None, screen_volume_shape=None, screen_volume_x=None, screen_volume_y=None, screen_volume_z=None, screen_entry_time=None, screen_exit_time=None, collision_probability=None, collision_probability_method=None, comment=Ellipsis, miss_distance_unit=None)¶
Metadata and data describing relative relationships between Object1 and Object2.
This section includes Time of Closest Approach (TCA), miss distance, relative speed, and screening volume information.
- Parameters:
tca (str) – The date and time in UTC of the closest approach (ISO 8601).
miss_distance (float) – The norm of the relative position vector at TCA. Units: m.
relative_speed (float, optional) – The norm of the relative velocity vector at TCA. Units: m/s.
relative_position (list of float, optional) – The [R, T, N] components of Object2’s position relative to Object1. Units: m.
relative_velocity (list of float, optional) – The [R, T, N] components of Object2’s velocity relative to Object1. Units: m/s.
start_screen_period (str, optional) – The start time in UTC of the screening period.
stop_screen_period (str, optional) – The stop time in UTC of the screening period.
screen_volume_frame (Union[ScreenVolumeFrameType, str], optional) – The reference frame for screening volume (RTN or TVN).
screen_volume_shape (Union[ScreenVolumeShapeType, str], optional) – The shape of the screening volume (ELLIPSOID or BOX).
screen_volume_x (float, optional) – The X component size of the screening volume. Units: m.
screen_volume_y (float, optional) – The Y component size of the screening volume. Units: m.
screen_volume_z (float, optional) – The Z component size of the screening volume. Units: m.
screen_entry_time (str, optional) – The time in UTC when Object2 enters the screening volume.
screen_exit_time (str, optional) – The time in UTC when Object2 exits the screening volume.
collision_probability (float, optional) – The probability that Object1 and Object2 will collide (0.0 to 1.0).
collision_probability_method (str, optional) – The method used to calculate the collision probability.
miss_distance_unit (str, optional) – Optional unit string for validation (must be ‘m’).
- collision_probability¶
The probability (denoted ‘p’ where 0.0<=p<=1.0), that Object1 and Object2 will collide. Data type = double.
- Type:
Optional[float]
- collision_probability_method¶
The method that was used to calculate the collision probability. (See annex E for definition.)
- Type:
Optional[str]
- miss_distance¶
The norm of the relative position vector. It indicates how close the two objects are at TCA. Data type = double.
Units: m
- Type:
- relative_speed¶
The norm of the relative velocity vector. It indicates how fast the two objects are moving relative to each other at TCA. Data type = double.
Units: m/s
- Type:
Optional[float]
- relative_state_vector¶
Relative state vector [R, T, N, VR, VT, VN] (combined position and velocity).
- Type:
Optional[RelativeStateVector]
- screen_entry_time¶
The time in UTC when Object2 enters the screening volume. (See 6.3.2.6 for formatting rules.)
- Type:
Optional[str]
- screen_exit_time¶
The time in UTC when Object2 exits the screening volume. (See 6.3.2.6 for formatting rules.)
- Type:
Optional[str]
- screen_volume_frame¶
Name of the Object1 centered reference frame in which the screening volume data are given. Available options are RTN and Transverse, Velocity, and Normal (TVN). (See annex E for definition.)
- Type:
Optional[ScreenVolumeFrameType]
- screen_volume_shape¶
ELLIPSOID or BOX.
- Type:
Optional[ScreenVolumeShapeType]
- Type:
Shape of the screening volume
- screen_volume_x¶
The R or T (depending on if RTN or TVN is selected) component size of the screening volume in the SCREEN_VOLUME_FRAME. Data type = double.
Units: m
- Type:
Optional[float]
- screen_volume_y¶
The T or V (depending on if RTN or TVN is selected) component size of the screening volume in the SCREEN_VOLUME_FRAME. Data type = double.
Units: m
- Type:
Optional[float]
- screen_volume_z¶
The N component size of the screening volume in the SCREEN_VOLUME_FRAME. Data type = double.
Units: m
- Type:
Optional[float]
- start_screen_period¶
The start time in UTC of the screening period for the conjunction assessment. (See 6.3.2.6 for formatting rules.)
- Type:
Optional[str]
- class ccsds_ndm.AdditionalParameters(area_pc, area_drg, area_srp, mass, cd_area_over_mass, cr_area_over_mass, thrust_acceleration, sedr, comment)¶
Additional Parameters.
- Parameters:
area_pc (float, optional) – Projected area. Units: m^2
area_drg (float, optional) – Drag area. Units: m^2
area_srp (float, optional) – SRP area. Units: m^2
mass (float, optional) – Mass. Units: kg
cd_area_over_mass (float, optional) – Drag coefficient * Area / Mass. Units: m^2/kg
cr_area_over_mass (float, optional) – Reflectivity coefficient * Area / Mass. Units: m^2/kg
thrust_acceleration (float, optional) – Thrust acceleration. Units: m/s^2
sedr (float, optional) – Solar energy dissipation rate. Units: W/kg
- area_drg¶
The effective area of the object exposed to atmospheric drag. (See annex E for definition.)
Units: m²
- Type:
Optional[float]
- area_pc¶
The actual area of the object. (See annex E for definition.)
Units: m²
- Type:
Optional[float]
- area_srp¶
The effective area of the object exposed to solar radiation pressure. (See annex E for definition.)
Units: m²
- Type:
Optional[float]
- cd_area_over_mass¶
The object’s CD•A/m used to propagate the state vector and covariance to TCA. (See annex E for definition.)
Units: m²/kg
- Type:
Optional[float]
- cr_area_over_mass¶
The object’s CR•A/m used to propagate the state vector and covariance to TCA. (See annex E for definition.)
Units: m²/kg
- Type:
Optional[float]
- class ccsds_ndm.OdParameters(time_lastob_start=None, time_lastob_end=None, recommended_od_span=None, actual_od_span=None, obs_available=None, obs_used=None, tracks_available=None, tracks_used=None, residuals_accepted=None, weighted_rms=None, comment=Ellipsis)¶
Orbit Determination Parameters.
- Parameters:
time_lastob_start (str, optional) – Time of last observation start.
time_lastob_end (str, optional) – Time of last observation end.
recommended_od_span (float, optional) – Recommended OD span. Units: d
actual_od_span (float, optional) – Actual OD span. Units: d
obs_available (int, optional) – Observations available.
obs_used (int, optional) – Observations used.
tracks_available (int, optional) – Tracks available.
tracks_used (int, optional) – Tracks used.
residuals_accepted (float, optional) – Residuals accepted. Units: %
weighted_rms (float, optional) – Weighted RMS.
- actual_od_span¶
Based on the observations available and the RECOMMENDED_OD_SPAN, the actual time span used for the OD of the object. (See annex E for definition.)
Examples: 14, 20.0
Units: days
- Type:
Optional[float]
- obs_available¶
The total number of observations available for orbit determination.
- Type:
Optional[int]
- recommended_od_span¶
The recommended OD time span calculated for the object.
Examples: 14, 20.0
Units: days
- Type:
Optional[float]
- residuals_accepted¶
The percentage of residuals accepted during orbit determination.
Units: %
- Type:
Optional[float]
- time_lastob_end¶
The end of a time interval (UTC) that contains the time of the last accepted observation. (See 6.3.2.6 for formatting rules.) For an exact time, the time interval is of zero duration (i.e., same value as that of TIME_LASTOB_START).
- Type:
Optional[str]
Enums¶
- class ccsds_ndm.CdmObjectType¶
Covariance Matrix at TCA.
Provides uncertainty information for the state vector. Can be converted to a NumPy array using to_numpy().
- Object1 = CdmObjectType.OBJECT1¶
- Object2 = CdmObjectType.OBJECT2¶
- class ccsds_ndm.ScreenVolumeFrameType¶
- Rtn = ScreenVolumeFrameType.RTN¶
- Tvn = ScreenVolumeFrameType.TVN¶
- class ccsds_ndm.ScreenVolumeShapeType¶
- Box = ScreenVolumeShapeType.BOX¶
- Ellipsoid = ScreenVolumeShapeType.ELLIPSOID¶
- class ccsds_ndm.ReferenceFrameType¶
- Eme2000 = ReferenceFrameType.EME2000¶
- Gcrf = ReferenceFrameType.GCRF¶
- Itrf = ReferenceFrameType.ITRF¶
- class ccsds_ndm.CovarianceMethodType¶
- Calculated = CovarianceMethodType.CALCULATED¶
- Default = CovarianceMethodType.DEFAULT¶