Orbit Comprehensive Message (OCM)

class ccsds_ndm.Ocm(header, segment)

Orbit Comprehensive Message (OCM).

An OCM specifies position and velocity of either a single object or an en masse parent/child deployment scenario stemming from a single object. The OCM aggregates and extends OPM, OEM, and OMM content in a single comprehensive hybrid message.

Key features: - Support for single object or parent/child deployment scenarios. - Aggregation of OPM, OMM, and OEM content. - Extensive optional content including physical properties, covariance, maneuvers, and perturbations. - Well-suited for exchanges involving automated interaction and large object catalogs.

Parameters:
static from_file(path, format=None)

Create an OCM message from a file.

Parameters:
  • path (str) – Path to the input file.

  • format (str, optional) – Format (‘kvn’ or ‘xml’). Auto-detected if None.

Returns:

The parsed OCM object.

Return type:

Ocm

static from_str(data, format=None)

Create an OCM message from a string.

Parameters:
  • data (str) – Input string/content.

  • format (str, optional) – Format (‘kvn’ or ‘xml’). Auto-detected if None.

Returns:

The parsed Ocm object.

Return type:

Ocm

header

Orbit Comprehensive Message (OCM).

An OCM specifies position and velocity of either a single object or an en masse parent/child deployment scenario stemming from a single object. The OCM aggregates and extends OPM, OEM, and OMM content in a single comprehensive hybrid message.

Key features: - Support for single object or parent/child deployment scenarios. - Aggregation of OPM, OMM, and OEM content. - Extensive optional content including physical properties, covariance, maneuvers, and perturbations. - Well-suited for exchanges involving automated interaction and large object catalogs.

Type:

OdmHeader

id

The message identifier.

Type:

Optional[str]

segment

The OCM data segment.

Type:

OcmSegment

to_file(path, format, validate=True)

Write to file.

Parameters:
  • path (str) – Output file path.

  • format (str) – Output format (‘kvn’ or ‘xml’).

  • validate (bool, optional) – Whether to validate the message before writing (default: True).

to_str(format, validate=True)

Serialize to string.

Parameters:
  • format (str) – Output format (‘kvn’ or ‘xml’).

  • validate (bool, optional) – Whether to validate the message before writing (default: True).

Returns:

The serialized string.

Return type:

str

validate(strict=True)

Validate the message against CCSDS rules.

Parameters:

strict (bool, optional) – If True (default), raises ValueError on the first error found. If False, returns a list of validation error messages (or None if valid).

version

The message version.

Type:

str

class ccsds_ndm.OcmSegment(metadata, data)

A single segment of the OCM.

Contains metadata and data sections.

Parameters:
data

Segment data blocks.

Type:

OcmData

metadata

A single segment of the OCM.

Contains metadata and data sections.

Type:

OcmMetadata

class ccsds_ndm.OcmMetadata(*, epoch_tzero, time_system=None, object_name=None, international_designator=None, catalog_name=None, object_designator=None, alternate_names=None, originator_poc=None, originator_position=None, originator_phone=None, originator_email=None, originator_address=None, tech_org=None, tech_poc=None, tech_position=None, tech_phone=None, tech_email=None, tech_address=None, previous_message_id=None, next_message_id=None, adm_msg_link=None, cdm_msg_link=None, prm_msg_link=None, rdm_msg_link=None, tdm_msg_link=None, operator=None, owner=None, country=None, constellation=None, object_type=None, ops_status=None, orbit_category=None, ocm_data_elements=None, sclk_offset_at_epoch=None, sclk_sec_per_si_sec=None, previous_message_epoch=None, next_message_epoch=None, start_time=None, stop_time=None, time_span=None, taimutc_at_tzero=None, next_leap_epoch=None, next_leap_taimutc=None, ut1mutc_at_tzero=None, eop_source=None, interp_method_eop=None, celestial_source=None, comment=None)

OCM Metadata Section.

Parameters:
  • time_system (str) – Time system that shall be used for all absolute time stamps in the message.

  • epoch_tzero (str) – Epoch to which all relative times in the message are referenced (ISO 8601).

  • object_name (str, optional) – Name of the space object that the message is associated with.

  • international_designator (str, optional) – The COSPAR international designator of the space object.

  • catalog_name (str, optional) – The name of the satellite catalog used for the space object identification.

  • object_designator (str, optional) – The unique satellite identification designator used in the specified catalog.

  • alternate_names (str, optional) – Alternate name(s) by which the space object is known.

  • originator_poc (str, optional) – Originator Point-of-Contact.

  • originator_position (str, optional) – Contact position of the originator PoC.

  • originator_phone (str, optional) – Originator PoC phone number.

  • originator_email (str, optional) – Originator PoC email address.

  • originator_address (str, optional) – Originator’s physical address.

  • tech_org (str, optional) – Technical organization (creating agency or operator).

  • tech_poc (str, optional) – Technical Point-of-Contact.

  • tech_position (str, optional) – Contact position of the technical PoC.

  • tech_phone (str, optional) – Technical PoC phone number.

  • tech_email (str, optional) – Technical PoC email address.

  • tech_address (str, optional) – Technical PoC physical address.

  • previous_message_id (str, optional) – Identifier for the previous OCM message.

  • next_message_id (str, optional) – Identifier for the anticipated next OCM message.

  • adm_msg_link (str, optional) – Identifier of linked Attitude Data Message.

  • cdm_msg_link (str, optional) – Identifier of linked Conjunction Data Message.

  • prm_msg_link (str, optional) – Identifier of linked Pointing Request Message.

  • rdm_msg_link (str, optional) – Identifier of linked Reentry Data Message.

  • tdm_msg_link (str, optional) – Identifier of linked Tracking Data Message.

  • operator (str, optional) – Operator of the space object.

  • owner (str, optional) – Owner of the space object.

  • country (str, optional) – Country of the owner or operator of the space object.

  • constellation (str, optional) – Name of the constellation the space object belongs to.

  • object_type (str, optional) – Type of object (PAYLOAD, ROCKET_BODY, DEBRIS, etc.).

  • ops_status (str, optional) – Operational status of the space object.

  • orbit_category (str, optional) – Orbit category (LEO, GEO, HEO, etc.).

  • ocm_data_elements (str, optional) – List of data elements included in the OCM message.

  • sclk_offset_at_epoch (float, optional) – Spacecraft clock offset at EPOCH_TZERO (s).

  • sclk_sec_per_si_sec (float, optional) – Spacecraft clock scale factor (s/SI-s).

  • previous_message_epoch (str, optional) – Epoch of the previous message (ISO 8601).

  • next_message_epoch (str, optional) – Anticipated epoch of the next message (ISO 8601).

  • start_time (str, optional) – Time of the earliest data in the message (ISO 8601).

  • stop_time (str, optional) – Time of the latest data in the message (ISO 8601).

  • time_span (float, optional) – Approximate time span covered by the data (d).

  • taimutc_at_tzero (float, optional) – TAI minus UTC difference at EPOCH_TZERO (s).

  • next_leap_epoch (str, optional) – Epoch of the next leap second (ISO 8601).

  • next_leap_taimutc (float, optional) – TAI minus UTC difference at NEXT_LEAP_EPOCH (s).

  • ut1mutc_at_tzero (float, optional) – UT1 minus UTC difference at EPOCH_TZERO (s).

  • eop_source (str, optional) – Source of Earth Orientation Parameters.

  • interp_method_eop (str, optional) – Interpolation method for EOP data.

  • celestial_source (str, optional) – Source of celestial body ephemerides.

  • comment (list[str], optional) – Comments for the metadata block.

Variables:
  • time_system (str) – Time system.

  • epoch_tzero (str) – Epoch T-Zero. … (see Parameters for full list)

Free-text field containing a unique identifier of Attitude Data Message (ADM) (reference [10]) that are linked (relevant) to this Orbit Data Message.

Examples: ADM_MSG_35132.txt, ADM_ID_0572

Type:

Optional[str]

alternate_names

Free-text comma-delimited field containing alternate name(s) of this space object, including assigned names used by spacecraft operator, State Actors, commercial SSA providers, and/or media.

Examples: SV08, IN8

Type:

Optional[str]

catalog_name

Free-text field containing the satellite catalog source (or source agency or operator, value to be drawn from the SANA registry list of Space Object Catalogs at <https://sanaregistry.org/r/space_object_catalog>, or alternatively, from the list of organizations listed in the ‘Abbreviation’ column of the SANA Organizations registry at <https://www.sanaregistry.org/r/organizations>) from which ‘OBJECT_DESIGNATOR’ was obtained.

Examples: CSPOC, RFSA, ESA, COMSPOC

Type:

Optional[str]

Free-text field containing a unique identifier of Conjunction Data Message (CDM) (reference [14]) that are linked (relevant) to this Orbit Data Message.

Examples: CDM_MSG_35132.txt, CDM_ID_8257

Type:

Optional[str]

celestial_source

Free-text field specifying the source and version of the message originator’s celestial body (e.g., Sun/Earth/Planetary) ephemeris data used in the creation of this message.

Examples: JPL_DE_FILES

Type:

Optional[str]

comment

Comments (a contiguous set of one or more comment lines may be provided in the OCM Metadata section; see 7.8 for comment formatting rules).

Type:

list[str]

constellation

Free-text field containing the name of the constellation to which this space object belongs.

Examples: SPIRE

Type:

Optional[str]

country

Free-text field containing the name of the country, country code, or country abbreviation where the space object owner is based.

Examples: US, SPAIN

Type:

Optional[str]

eop_source

Free-text field specifying the source and version of the message originator’s Earth Orientation Parameters (EOP) used in the creation of this message, including leap seconds, TAI – UT1, etc.

Examples: CELESTRAK_20201028

Type:

Optional[str]

epoch_tzero

Default epoch to which all relative times are referenced in data blocks (for format specification, see 7.5.10). The time scale of EPOCH_TZERO is controlled via the ‘TIME_SYSTEM’ keyword, with the exception that for the SCLK timescale, EPOCH_TZERO shall be interpreted as being in the UTC timescale. This field is used by all OCM data blocks.

Examples: 2001-11-06T11:17:33

Type:

str

international_designator

Free-text field containing an international designator for the object as assigned by the UN Committee on Space Research (COSPAR). Such designator values shall have the following COSPAR format: YYYY-NNNP{PP}, where: YYYY = Year of launch. NNN = Three-digit serial number of launch in year YYYY (with leading zeros). P{PP} = At least one capital letter for the identification of the part brought into space by the launch. If the object has no international designator or the content is either unknown (uncorrelated) or cannot be disclosed, the value should be set to UNKNOWN (or this keyword omitted). NOTE—The international designator was typically specified by ‘OBJECT_ID’ in the OPM, OMM, and OEM.

Examples: 2000-052A, 1996-068A, 2000-053A, 1996-008A, UNKNOWN

Type:

Optional[str]

interp_method_eop

Free-text field specifying the method used to select or interpolate sequential EOP data.

Examples: PRECEDING_VALUE, NEAREST_NEIGHBOR, LINEAR, LAGRANGE_ORDER_5

Type:

Optional[str]

next_leap_epoch

Epoch of next leap second, specified as an absolute time tag.

Examples: 2016-12-31T23:59:60

Type:

Optional[str]

next_leap_taimutc

Difference (TAI – UTC) in seconds (i.e., total number of leap seconds elapsed since 1958) incorporated by the message originator at epoch ‘NEXT_LEAP_EPOCH’. This keyword should be provided if NEXT_LEAP_EPOCH is supplied.

Units: s

Type:

Optional[float]

next_message_epoch

Anticipated (or actual) epoch of the next message from this originator for this space object. (For format specification, see 7.5.10.) NOTE—One may provide the next message epoch without supplying the NEXT_MESSAGE_ID, and vice versa.

Examples: 2001-11-07T11:17:33

Type:

Optional[str]

next_message_id

Free-text field containing an ID that uniquely identifies the next message from this message originator for this space object. The format and content of the message identifier value are at the discretion of the originator. NOTE—One may provide the next message ID without supplying the ‘NEXT_MESSAGE_EPOCH’ keyword, and vice versa.

Examples: OCM 201113719186, ABC-12_35

Type:

Optional[str]

object_designator

Free-text field specification of the unique satellite identification designator for the object, as reflected in the catalog whose name is ‘CATALOG_NAME’. If the ID is not known (uncorrelated object) or cannot be disclosed, ‘UNKNOWN’ may be used (or this keyword omitted).

Examples: 22444, 18SPCS 18571, 2147483648_04ae[…]d84c, UNKNOWN

Type:

Optional[str]

object_name

Free-text field containing the name of the object. While there is no CCSDS-based restriction on the value for this keyword, it is recommended to use names from either the UN Office of Outer Space Affairs designator index (reference [3], which include Object name and international designator of the participant), the spacecraft operator, or a State Actor or commercial Space Situational Awareness (SSA) provider maintaining the ‘CATALOG_NAME’ space catalog. If OBJECT_NAME is not listed in reference [3] or the content is either unknown (uncorrelated) or cannot be disclosed, the value should be set to UNKNOWN (or this keyword omitted).

Examples: SPOT-7, ENVISAT, IRIDIUM NEXT-8, INTELSAT G-15, UNKNOWN

Type:

Optional[str]

object_type

Specification of the type of object. Select from the accepted set of values indicated in annex B, subsection B11.

Examples: PAYLOAD, ROCKET BODY, DEBRIS, UNKNOWN, OTHER

Type:

Optional[str]

ocm_data_elements

Comma-delimited list of elements of information data blocks included in this message. The order shall be the same as the order of the data blocks in the message. Values shall be confined to the following list: ORB, PHYS, COV, MAN, PERT, OD, and USER. If the OCM contains multiple ORB, COV, or MAN data blocks (as allowed by table 6-1), the corresponding ORB, COV, or MAN entry shall be duplicated to match.

Examples: ORB, ORB, PHYS, COV, MAN, MAN, PERT, OD, USER

Type:

Optional[str]

operator

Free-text field containing the operator of the space object.

Examples: INTELSAT

Type:

Optional[str]

ops_status

Specification of the operational status of the space object. Select from the accepted set of values indicated in annex B, subsection B12.

Examples: OPERATIONAL

Type:

Optional[str]

orbit_category

Specification of the type of orbit. Select from the accepted set of values indicated in annex B, subsection B14.

Examples: GEO, LEO

Type:

Optional[str]

originator_address

Free-text field containing originator’s physical address information for OCM creator (suggest comma-delimited address lines).

Examples: 5040 Spaceflight Ave., Cocoa Beach, FL, USA, 12345

Type:

Optional[str]

originator_email

Free-text field containing originator PoC email address.

Examples: JOHN.DOE@SOMEWHERE.ORG

Type:

Optional[str]

originator_phone

Free-text field containing originator PoC phone number.

Examples: +12345678901

Type:

Optional[str]

originator_poc

Free-text field containing originator or programmatic Point-of-Contact (POC) for OCM.

Examples: Mr. Rodgers

Type:

Optional[str]

originator_position

Free-text field containing contact position of the originator PoC.

Examples: Flight Dynamics, Mission Design Lead

Type:

Optional[str]

owner

Free-text field containing the owner of the space object.

Examples: SIRIUS

Type:

Optional[str]

previous_message_epoch

Creation epoch of the previous message from this originator for this space object. (For format specification, see 7.5.10.) NOTE—One may provide the previous message epoch without supplying the PREVIOUS_MESSAGE_ID, and vice versa.

Examples: 2001-11-06T11:17:33, 2002-204T15:56:23Z

Type:

Optional[str]

previous_message_id

Free-text field containing an ID that uniquely identifies the previous message from this message originator for this space object. The format and content of the message identifier value are at the discretion of the originator. NOTE—One may provide the previous message ID without supplying the ‘PREVIOUS_MESSAGE_EPOCH’ keyword, and vice versa.

Examples: OCM 201113719184, ABC-12_33

Type:

Optional[str]

Free-text field containing a unique identifier of Pointing Request Message (PRM) (reference [13]) that are linked (relevant) to this Orbit Data Message.

Examples: PRM_MSG_35132.txt, PRM_ID_6897

Type:

Optional[str]

Free-text field containing a unique identifier of Reentry Data Message (RDM) (reference [12]) that are linked (relevant) to this Orbit Data Message.

Examples: RDM_MSG_35132.txt, RDM_ID_1839

Type:

Optional[str]

sclk_offset_at_epoch

Defines the number of spacecraft clock counts existing at EPOCH_TZERO. This is only used if the SCLK timescale is employed by the user.

Units: s

Type:

Optional[float]

sclk_sec_per_si_sec

Defines the current number of clock seconds occurring during one SI second. It should be noted that this clock rate may vary with time and is the current approximate value. This is only used if the SCLK timescale is employed by the user.

Units: s

Type:

Optional[float]

start_time

Time of the earliest data contained in the OCM, specified as either a relative or absolute time tag.

Examples: 2001-11-06T00:00:00

Type:

Optional[str]

stop_time

Time of the latest data contained in the OCM, specified as either a relative or absolute time tag.

Examples: 2001-11-08T00:00:00

Type:

Optional[str]

taimutc_at_tzero

Difference (TAI – UTC) in seconds (i.e., total number of leap seconds elapsed since 1958) as modeled by the message originator at epoch ‘EPOCH_TZERO’.

Units: s

Type:

Optional[float]

Free-text string containing a comma-separated list of file name(s) and/or associated identification number(s) of Tracking Data Message (TDM) (reference [9]) observations upon which this OD is based.

Examples: TDM_MSG_37.txt, TDM_835, TDM_836

Type:

Optional[str]

tech_address

Free-text field containing technical PoC physical address information for OCM creator (suggest comma-delimited address lines).

Examples: 5040 Spaceflight Ave., Cocoa Beach, FL, USA, 12345

Type:

Optional[str]

tech_email

Free-text field containing technical PoC email address.

Examples: JOHN.DOE@SOMEWHERE.ORG

Type:

Optional[str]

tech_org

Free-text field containing the creating agency or operator (value should be drawn from the ‘Abbreviation’ column of the SANA Organizations registry at <https://www.sanaregistry.org/r/organizations>).

Examples: NASA, ESA, JAXA

Type:

Optional[str]

tech_phone

Free-text field containing technical PoC phone number.

Examples: +49615130312

Type:

Optional[str]

tech_poc

Free-text field containing technical PoC for OCM.

Examples: Maxwell Smart

Type:

Optional[str]

tech_position

Free-text field containing contact position of the technical PoC.

Examples: Flight Dynamics, Mission Design Lead

Type:

Optional[str]

time_span

Span of time that the OCM covers, measured in days. TIME_SPAN is defined as (STOP_TIME-START_TIME), measured in days, irrespective of whether START_TIME or STOP_TIME are provided by the message creator.

Units: d

Type:

Optional[float]

time_system

Time system for all absolute time stamps in this OCM including EPOCH_TZERO. Select from the accepted set of values indicated in annex B, subsection B3. This field is used by all OCM data blocks. If the SCLK timescale is selected, then ‘EPOCH_TZERO’ shall be interpreted as the spacecraft clock epoch and both SCLK_OFFSET_AT_EPOCH and SCLK_SEC_PER_SI_SEC shall be supplied.

Examples: UTC

Type:

str

ut1mutc_at_tzero

Difference (UT1 – UTC) in seconds, as modeled by the originator at epoch ‘EPOCH_TZERO’.

Units: s

Type:

Optional[float]

class ccsds_ndm.OcmData

OCM Data Section.

This struct is the primary data container for the OCM. It holds all the different data blocks, such as trajectory, physical properties, covariance, maneuvers, and other related information.

cov

List of covariance time history blocks.

Type:

list[OcmCovarianceMatrix]

man

List of maneuver specifications.

Type:

list[OcmManeuverParameters]

od

Orbit determination data.

Type:

Optional[OcmOdParameters]

pert

Perturbation parameters.

Type:

Optional[OcmPerturbations]

phys

Space object physical characteristics.

Type:

Optional[OcmPhysicalDescription]

traj

List of trajectory state time history blocks.

Type:

list[OcmTrajState]

user

User-defined parameters.

Type:

UserDefined | None

class ccsds_ndm.OcmTrajState(*, center_name, traj_ref_frame, traj_type, traj_lines, traj_id=None, traj_prev_id=None, traj_next_id=None, traj_basis=None, traj_basis_id=None, interpolation=None, interpolation_degree=None, propagator=None, traj_frame_epoch=None, useable_start_time=None, useable_stop_time=None, orb_revnum=None, orb_revnum_basis=None, orb_averaging=None, traj_units=None, comment=None)

A block of trajectory state data, which can be a time history of states.

Parameters:
  • center_name (str) – Origin of the orbit reference frame.

  • traj_ref_frame (str) – Reference frame of the trajectory state time history.

  • traj_type (str) – Specifies the trajectory state element set type.

  • traj_lines (list[TrajLine]) – Contiguous set of trajectory state data lines.

  • traj_id (str, optional) – Identification number for this trajectory state time history block.

  • traj_prev_id (str, optional) – Identification number for the previous trajectory state time history.

  • traj_next_id (str, optional) – Identification number for the next trajectory state time history.

  • traj_basis (str, optional) – The basis of this trajectory state time history data (PREDICTED, DETERMINED, etc.).

  • traj_basis_id (str, optional) – Identification number for the telemetry dataset, orbit determination, or simulation.

  • interpolation (str, optional) – Recommended interpolation method for the ephemeris data.

  • interpolation_degree (int, optional) – Recommended interpolation degree.

  • propagator (str, optional) – Name of the orbit propagator used to create this trajectory state time history.

  • traj_frame_epoch (str, optional) – Epoch of the orbit data reference frame, if not intrinsic to the definition.

  • useable_start_time (str, optional) – Start time of the useable time span covered by the ephemeris data.

  • useable_stop_time (str, optional) – Stop time of the useable time span covered by the ephemeris data.

  • orb_revnum (float, optional) – The integer orbit revolution number associated with the first trajectory state.

  • orb_revnum_basis (str, optional) – Specifies the message creator’s basis for their orbit revolution counter (0 or 1).

  • orb_averaging (str, optional) – Specifies whether the orbit elements are osculating elements or mean elements.

  • traj_units (str, optional) – Comma-delimited set of SI unit designations for the trajectory state elements.

  • comment (list[str], optional) – Comments.

center_name

Origin of the orbit reference frame, which may be a natural solar system body (planets, asteroids, comets, and natural satellites), including any planet barycenter or the solar system barycenter, or another reference frame center (such as a spacecraft, formation flying reference ‘chief’ spacecraft, etc.). Natural bodies shall be selected from the accepted set of values indicated in annex B, subsection B2. For spacecraft, it is recommended to use either the ‘OBJECT_NAME’ or ‘INTERNATIONAL_DESIGNATOR’ of the participant as catalogued in the UN Office of Outer Space Affairs designator index (reference [3]). Alternately, the ‘OBJECT_DESIGNATOR’ may be used. For other reference frame origins, this field is a free-text descriptor which may draw upon other naming conventions and sources.

Examples: EARTH, MOON, ISS, EROS

Type:

str

comment

Comments (a contiguous set of one or more comment lines may be provided in the Trajectory State Time History section only immediately after the TRAJ_START keyword; see 7.8 for comment formatting rules).

Type:

list[str]

interpolation

This keyword may be used to specify the recommended interpolation method for ephemeris data in the immediately following set of ephemeris lines. PROPAGATE indicates that orbit propagation is the preferred method to obtain states at intermediate times, via either a midpoint-switching or endpoint switching approach.

Examples: HERMITE, LINEAR, LAGRANGE, PROPAGATE

Type:

Optional[str]

interpolation_degree

Recommended interpolation degree for ephemeris data in the immediately following set of ephemeris lines. Must be an integer value. This keyword must be provided if the ‘INTERPOLATION’ keyword is used and set to anything other than PROPAGATE.

Examples: 5, 1

Type:

Optional[int]

orb_averaging

If orbital elements are provided, specifies whether those elements are osculating elements or mean elements, and if mean elements, which mean element definition is employed. The intent of this field is to allow the user to correctly interpret how to use the provided orbit elements and know how to use them operationally. This field is not required if one of the orbital element types selected by the “TRAJ_TYPE” keyword is Cartesian (e.g., CARTP, CARTPV, or CARTPVA) or spherical elements (e.g., LDBARV, ADBARV, or GEODETIC). Values should be selected from the accepted set indicated in annex B, subsection B13. If an alternate single- or double-averaging formulation other than that provided is used, the user may name it as mutually agreed upon by message exchange participants.

Examples: OSCULATING, BROUWER, KOZAI

Type:

Optional[str]

orb_revnum

The integer orbit revolution number associated with the first trajectory state in this trajectory state time history block. NOTE—The first ascending node crossing that occurs AFTER launch or deployment is designated to be the beginning of orbit revolution number = one (‘1’).

Examples: 1500, 30007

Type:

Optional[float]

orb_revnum_basis

Specifies the message creator’s basis for their orbit revolution counter, with ‘0’, designating that the first launch or deployment trajectory state corresponds to a revolution number of 0.XXXX, where XXXX represents the fraction of an orbit revolution measured from the equatorial plane, and orbit revolution 1.0 begins at the very next (subsequent) ascending node passage; ‘1’, designating that the first launch or deployment trajectory state corresponds to a revolution number of 1.XXXX, and orbit revolution 2.0 begins at the very next ascending node passage. This keyword shall be provided if ORB_REVNUM is specified.

Examples: 0, 1

Type:

Optional[str]

propagator

Free-text field containing the name of the orbit propagator used to create this trajectory state time history.

Examples: HPOP, SP, SGP4

Type:

Optional[str]

traj_basis

The basis of this trajectory state time history data. This is a free-text field with the following suggested values: a) ‘PREDICTED’. b) ‘DETERMINED’ when estimated from observation-based orbit determination, reconstruction, and/or calibration. For definitive OD performed onboard spacecraft whose solutions have been telemetered to the ground for inclusion in an OCM, the TRAJ_BASIS shall be DETERMINED. c) ‘TELEMETRY’ when the trajectory states are read directly from telemetry, for example, based on inertial navigation systems or GNSS data. d) ‘SIMULATED’ for generic simulations, future mission design studies, and optimization studies. e) ‘OTHER’ for other bases of this data.

Examples: PREDICTED

Type:

Optional[str]

traj_basis_id

Free-text field containing the identification number for the telemetry dataset, orbit determination, navigation solution, or simulation upon which this trajectory state time history block is based. When a matching orbit determination block accompanies this trajectory state time history, the TRAJ_BASIS_ID should match the corresponding OD_ID (see table 6-11).

Examples: OD_5910

Type:

Optional[str]

traj_frame_epoch

Epoch of the orbit data reference frame, if not intrinsic to the definition of the reference frame. (See 7.5.10 for formatting rules.)

Examples: 2001-11-06T11:17:33, 2002-204T15:56:23Z

Type:

Optional[str]

traj_id

Free-text field containing the identification number for this trajectory state time history block.

Examples: TRAJ_20160402_XYZ

Type:

Optional[str]

traj_lines

Contiguous set of trajectory state data lines.

Type:

list[TrajLine]

traj_next_id

Free-text field containing the identification number for the next trajectory state time history, contained either within this message, or presented in a future OCM. NOTE—If this message is not part of a sequence of orbit time histories or if this trajectory state time history is the last in a sequence of orbit time histories, then TRAJ_NEXT_ID should be excluded from this message.

Examples: ORB20160305C

Type:

Optional[str]

traj_prev_id

Free-text field containing the identification number for the previous trajectory state time history, contained either within this message or presented in a previous OCM. NOTE—If this message is not part of a sequence of orbit time histories or if this trajectory state time history is the first in a sequence of orbit time histories, then TRAJ_PREV_ID should be excluded from this message.

Examples: ORB20160305A

Type:

Optional[str]

traj_ref_frame

Reference frame of the trajectory state time history. Select from the accepted set of values indicated in annex B, subsection B4.

Examples: ICRF3, J2000

Type:

str

traj_type

Specifies the trajectory state type; selected per annex B, subsection B7.

Examples: CARTP, CARTPV

Type:

str

traj_units

A comma-delimited set of SI unit designations for each element of the trajectory state time history following the trajectory state time tag solely for informational purposes, provided as a free-text field enclosed in square brackets. When provided, each trajectory state element shall have a corresponding units entry, with non-dimensional values (such as orbit eccentricity) denoted by ‘n/a’. NOTE—The listing of units via the TRAJ_UNITS keyword does not override the mandatory units specified for the selected TRAJ_TYPE (links to the relevant SANA registries provided in annex B, subsection B7).

Examples: [km,km,km,km/s,km/s,km/s], [km,n/a,deg, deg, deg, deg]

Type:

Optional[str]

useable_start_time

Start time of USEABLE time span covered by ephemeris data immediately following this metadata block. (For format specification, see 7.5.10.) NOTES 1. This optional keyword allows the message creator to introduce fictitious (but numerically smooth) data nodes following the actual data time history to support interpolation methods requiring more than two nodes (e.g., pure higher-order Lagrange interpolation methods). The use of this keyword and introduction of fictitious node points are optional and may not be necessary. 2. If this keyword is not supplied, then all data shall be assumed to be valid.

Examples: 1996-12-18T14:28:15.1172, 1996-277T07:22:54

Type:

Optional[str]

useable_stop_time

Stop time of USEABLE time span covered by ephemeris data immediately following this metadata block. (For format specification, see 7.5.10.) NOTES 1. This optional keyword allows the message creator to introduce fictitious (but numerically smooth) data nodes following the actual data time history to support interpolation methods requiring more than two nodes (e.g., pure higher-order Lagrange interpolation methods). The use of this keyword and introduction of fictitious node points are optional and may not be necessary. 2. If this keyword is not supplied, then all data shall be assumed to be valid.

Examples: 1996-12-18T14:28:15.1172, 1996-277T07:22:54

Type:

Optional[str]

class ccsds_ndm.TrajLine(*, epoch, values)

A single line in a trajectory state time history.

Parameters:
  • epoch (str) – Absolute or relative time tag. (Mandatory)

  • values (list of float) – Trajectory state elements for this epoch. (Mandatory)

epoch

Absolute or relative time tag.

Type:

str

values

Trajectory state elements for this epoch.

Type:

list[float]

class ccsds_ndm.OcmPhysicalDescription(*, manufacturer=None, bus_model=None, docked_with=None, drag_const_area=None, drag_coeff_nom=None, drag_uncertainty=None, initial_wet_mass=None, wet_mass=None, dry_mass=None, oeb_parent_frame=None, oeb_parent_frame_epoch=None, oeb_q1=None, oeb_q2=None, oeb_q3=None, oeb_qc=None, oeb_max=None, oeb_int=None, oeb_min=None, area_along_oeb_max=None, area_along_oeb_int=None, area_along_oeb_min=None, area_min_for_pc=None, area_max_for_pc=None, area_typ_for_pc=None, rcs=None, rcs_min=None, rcs_max=None, srp_const_area=None, solar_rad_coeff=None, solar_rad_uncertainty=None, vm_absolute=None, vm_apparent_min=None, vm_apparent=None, vm_apparent_max=None, reflectance=None, att_control_mode=None, att_actuator_type=None, att_knowledge=None, att_control=None, att_pointing=None, avg_maneuver_freq=None, max_thrust=None, dv_bol=None, dv_remaining=None, ixx=None, iyy=None, izz=None, ixy=None, ixz=None, iyz=None, comment=None)

Space Object Physical Characteristics.

Parameters:
  • manufacturer (str, optional) – The manufacturer of the space object. (Optional)

  • comment (list[str], optional) – Comments. (Optional)

area_along_oeb_int

Attitude-dependent cross-sectional area of space object (not already included in DRAG_CONST_AREA and SRP_CONST_AREA) when viewed along intermediate OEB (Ŷoeb) direction as defined in annex F.

Examples: 0.3

Units: m²

Type:

Optional[float]

area_along_oeb_max

Attitude-dependent cross-sectional area of space object (not already included in DRAG_CONST_AREA and SRP_CONST_AREA) when viewed along max OEB (Xoeb) direction as defined in annex F.

Examples: 0.15

Units: m²

Type:

Optional[float]

area_along_oeb_min

Attitude-dependent cross-sectional area of space object (not already included in DRAG_CONST_AREA and SRP_CONST_AREA) when viewed along minimum OEB (Ẑoeb) direction as defined in annex F.

Examples: 0.5

Units: m²

Type:

Optional[float]

area_max_for_pc

Maximum cross-sectional area for collision probability estimation purposes.

Examples: 1.0

Units: m²

Type:

Optional[float]

area_min_for_pc

Minimum cross-sectional area for collision probability estimation purposes.

Examples: 1.0

Units: m²

Type:

Optional[float]

area_typ_for_pc

Typical (50th percentile) cross-sectional area sampled over all space object orientations for collision probability estimation purposes.

Units: m²

Type:

Optional[float]

att_actuator_type

Free-text specification of type of actuator for attitude control. Suggested examples include: ATT_THRUSTERS, ACTIVE_MAG_TORQUE, PASSIVE_MAG_TORQUE, REACTION_WHEELS, MOMENTUM_WHEELS, CONTROL_MOMENT_GYROSCOPE, NONE, OTHER

Examples: ATT_THRUSTERS

Type:

Optional[str]

att_control

Accuracy of attitude control system (ACS) to maintain attitude, assuming attitude knowledge was perfect (i.e., deadbands).

Examples: 2.0

Units: deg

Type:

Optional[float]

att_control_mode

Free-text specification of primary mode of attitude control for the space object. Suggested examples include: THREE_AXIS, SPIN, DUAL_SPIN, TUMBLING, GRAVITY_GRADIENT

Examples: SPIN

Type:

Optional[str]

att_knowledge

Accuracy of attitude knowledge.

Examples: 0.3

Units: deg

Type:

Optional[float]

att_pointing

Overall accuracy of spacecraft to maintain attitude, including attitude knowledge errors and ACS operation.

Examples: 2.3

Units: deg

Type:

Optional[float]

avg_maneuver_freq

Average maneuver frequency, measured in the number of orbit- or attitude-adjust maneuvers per year.

Examples: 20.0

Units: #/yr

Type:

Optional[float]

bus_model

Free-text field containing the satellite manufacturer’s spacecraft bus model name.

Examples: 702

Type:

Optional[str]

comment

Comments (a contiguous set of one or more comment lines may be provided in the OCM Space Object Physical Characteristics only immediately after the PHYS_START keyword; see 7.8 for comment formatting rules).

Type:

list[str]

docked_with

Free-text field containing a comma-separated list of other space objects that this object is docked to.

Examples: ISS

Type:

Optional[str]

drag_coeff_nom

Nominal drag Coefficient (CD Nom). If the atmospheric drag coefficient, CD, is set to zero, no atmospheric drag shall be considered.

Examples: 2.2

Type:

Optional[float]

drag_const_area

Attitude-independent drag cross-sectional area (AD) facing the relative wind vector, not already incorporated into the attitude-dependent ‘AREA_ALONG_OEB’ parameters.

Examples: 2.5

Units: m²

Type:

Optional[float]

drag_uncertainty

Drag coefficient one sigma (1σ) percent uncertainty, where the actual range of drag coefficients to within 1σ shall be obtained from [1.0 ± DRAG_UNCERTAINTY/100.0] * (CD Nom). This factor is intended to allow operators to supply the nominal ballistic coefficient components while accommodating ballistic coefficient uncertainties.

Examples: 10.0

Units: %

Type:

Optional[float]

dry_mass

Space object dry mass (without propellant).

Examples: 300

Units: kg

Type:

Optional[float]

dv_bol

Total ΔV capability of the spacecraft at beginning of life.

Examples: 1.0

Units: km/s

Type:

Optional[float]

dv_remaining

Total ΔV remaining for the spacecraft.

Examples: 0.2

Units: km/s

Type:

Optional[float]

initial_wet_mass

Space object total mass at beginning of life.

Examples: 500

Units: kg

Type:

Optional[float]

ixx

Moment of Inertia about the X-axis of the space object’s primary body frame (e.g., SC_Body_1) (see reference [H1]).

Examples: 1000.0

Units: kg·m²

Type:

Optional[float]

ixy

Inertia Cross Product of the X & Y axes.

Examples: 20.0

Units: kg·m²

Type:

Optional[float]

ixz

Inertia Cross Product of the X & Z axes.

Examples: 40.0

Units: kg·m²

Type:

Optional[float]

iyy

Moment of Inertia about the Y-axis.

Examples: 800.0

Units: kg·m²

Type:

Optional[float]

iyz

Inertia Cross Product of the Y & Z axes.

Examples: 60.0

Units: kg·m²

Type:

Optional[float]

izz

Moment of Inertia about the Z-axis.

Examples: 400.0

Units: kg·m²

Type:

Optional[float]

manufacturer

Free-text field containing the satellite manufacturer’s name.

Examples: BOEING

Type:

Optional[str]

max_thrust

Maximum composite thrust the spacecraft can accomplish in any single body-fixed direction.

Examples: 1.0

Units: N

Type:

Optional[float]

oeb_int

Intermediate physical dimension (along Ŷoeb) of OEB normal to OEB_MAX direction.

Examples: 0.5

Units: m

Type:

Optional[float]

oeb_max

Maximum physical dimension (along Xoeb) of the OEB.

Examples: 1

Units: m

Type:

Optional[float]

oeb_min

Minimum physical dimension (along Ẑoeb) of OEB in direction normal to both OEB_MAX and OEB_INT directions.

Examples: 0.3

Units: m

Type:

Optional[float]

oeb_parent_frame

Parent reference frame that maps to the OEB frame via the quaternion-based transformation defined in annex F, subsection F1. Select from the accepted set of values indicated in B, subsections B4 and B5. This keyword shall be provided if OEB_Q1,2,3,4 are specified.

Examples: ITRF1997

Type:

Optional[str]

oeb_parent_frame_epoch

Epoch of the OEB parent frame, if OEB_PARENT_FRAME is provided and its epoch is not intrinsic to the definition of the reference frame. (See 7.5.10 for formatting rules.)

Examples: 2001-11-06T11:17:33, 2002-204T15:56:23Z

Type:

Optional[str]

oeb_q1

q1 = e1 * sin(φ/2), where per reference [H1], φ = Euler rotation angle and e1 = 1st component of Euler rotation axis for the rotation that maps from the OEB_PARENT_FRAME (defined above) to the frame aligned with the OEB (defined in annex F, subsection F1). A value of ‘-999’ denotes a tumbling space object.

Examples: -0.575131822

Type:

Optional[float]

oeb_q2

q2 = e2 * sin(φ/2), where per reference [H1], φ = Euler rotation angle and e2 = 2nd component of Euler rotation axis for the rotation that maps from the OEB_PARENT_FRAME (defined above) to the frame aligned with the Optimally Encompassing Box (defined in annex F, subsection F1). A value of ‘-999’ denotes a tumbling space object.

Examples: -0.280510532

Type:

Optional[float]

oeb_q3

q3 = e3 * sin(φ/2), where per reference [H1], φ = Euler rotation angle and e3 = 3rd component of Euler rotation axis for the rotation that maps from the OEB_PARENT_FRAME (defined above) to the frame aligned with the Optimally Encompassing Box (defined in annex F, subsection F1). A value of ‘-999’ denotes a tumbling space object.

Examples: -0.195634856

Type:

Optional[float]

oeb_qc

qc = cos(φ/2), where per reference [H1], φ = the Euler rotation angle for the rotation that maps from the OEB_PARENT_FRAME (defined above) to the frame aligned with the Optimally Encompassing Box (annex F, subsection F1). qc shall be made non-negative by convention. A value of ‘-999’ denotes a tumbling space object.

Examples: 0.743144825

Type:

Optional[float]

rcs

Typical (50th percentile) effective Radar Cross Section of the space object sampled over all possible viewing angles.

Units: m²

Type:

Optional[float]

rcs_max

Maximum Radar Cross Section observed for this object.

Units: m²

Type:

Optional[float]

rcs_min

Minimum Radar Cross Section observed for this object.

Units: m²

Type:

Optional[float]

reflectance

Typical (50th percentile) coefficient of REFLECTANCE of the space object over all possible viewing angles, ranging from 0 (none) to 1 (perfect reflectance).

Examples: 0.7

Type:

Optional[float]

solar_rad_coeff

Nominal Solar Radiation Pressure Coefficient (CR NOM). If the solar radiation coefficient, CR, is set to zero, no solar radiation pressure shall be considered.

Type:

Optional[float]

solar_rad_uncertainty

SRP one sigma (1σ) percent uncertainty, where the actual range of SRP coefficients to within 1σ shall be obtained from [1.0 ± 0.01*SRP_UNCERTAINTY] (CR NOM). This factor is intended to allow operators to supply the nominal ballistic coefficient components while accommodating ballistic coefficient uncertainties.

Units: %

Type:

Optional[float]

srp_const_area

Attitude-independent solar radiation pressure cross-sectional area (AR) facing the Sun, not already incorporated into the attitude-dependent ‘AREA_ALONG_OEB’ parameters.

Units: m²

Type:

Optional[float]

vm_absolute

Typical (50th percentile) Visual Magnitude of the space object sampled over all possible viewing angles and sampled over all possible viewing angles and ‘normalized’ as specified in informative annex F, subsection F2 to a 1 AU Sun-to-target distance, a phase angle of 0°, and a 40,000 km target-to-sensor distance (equivalent of GEO satellite tracked at 15.6° above local horizon).

Examples: 15.0

Type:

Optional[float]

vm_apparent

Typical (50th percentile) apparent Visual Magnitude observed for this space object.

Examples: 15.0

Type:

Optional[float]

vm_apparent_max

Maximum apparent Visual Magnitude observed for this space object. NOTE—The ‘MAX’ value represents the brightest observation, which associates with a lower Vmag.

Examples: 16.0

Type:

Optional[float]

vm_apparent_min

Minimum apparent Visual Magnitude observed for this space object.

Examples: 19.0

Type:

Optional[float]

wet_mass

Space object total mass (including propellant, i.e., ‘wet mass’) at the current reference epoch ‘EPOCH_TZERO’.

Examples: 472.3

Units: kg

Type:

Optional[float]

class ccsds_ndm.OcmManeuverParameters(*, man_id, man_device_id, man_composition, man_ref_frame, man_lines, man_prev_id=None, man_next_id=None, man_basis=None, man_basis_id=None, man_prev_epoch=None, man_next_epoch=None, man_purpose=None, man_pred_source=None, man_frame_epoch=None, grav_assist_name=None, dc_type=None, dc_win_open=None, dc_win_close=None, dc_min_cycles=None, dc_max_cycles=None, dc_exec_start=None, dc_exec_stop=None, dc_ref_time=None, dc_time_pulse_duration=None, dc_time_pulse_period=None, dc_ref_dir=None, dc_body_frame=None, dc_body_trigger=None, dc_pa_start_angle=None, dc_pa_stop_angle=None, man_units=None, comment=None)

OCM Maneuver Parameters.

Parameters:
  • man_id (str) – Identifier for the maneuver block.

  • man_device_id (str) – Identifier for the maneuver device (e.g., thruster name).

  • man_composition (str) – Specifies the maneuver composition (e.g., ‘VECTOR’, ‘SCALAR’).

  • man_ref_frame (str) – Reference frame for the maneuver data.

  • man_lines (list of ManLine) – A list of maneuver data lines.

  • man_prev_id (str, optional) – Identifier for the previous maneuver block for this space object.

  • man_next_id (str, optional) – Identifier for the next maneuver block for this space object.

  • man_basis (str, optional) – Basis of the maneuver data (‘Observed’, ‘Predicted’, etc.).

  • man_basis_id (str, optional) – Identifier for the orbit determination or simulation basis.

  • man_prev_epoch (str, optional) – Epoch of the previous maneuver.

  • man_next_epoch (str, optional) – Epoch of the next maneuver.

  • man_purpose (str, optional) – Purpose of the maneuver.

  • man_pred_source (str, optional) – Source of the predicted maneuver data.

  • man_frame_epoch (str, optional) – Epoch of the maneuver reference frame.

  • grav_assist_name (str, optional) – Name of the gravity assist body.

  • dc_type (str, optional) – Type of duty cycle (‘Continuous’, ‘Impulsive’, ‘Duration’).

  • man_units (str, optional) – SI unit designations for the maneuver elements.

  • comment (list of str, optional) – Comments for this maneuver block.

comment

Comments (a contiguous set of one or more comment lines may be provided in the OCM Maneuver Specification only immediately after the MAN_START keyword; see 7.8 for comment formatting rules).

Type:

list[str]

dc_body_frame

For phase angle thruster duty cycles (DC_TYPE=TIME_AND_ANGLE); specifies the body reference frame in which DC_BODY_TRIGGER will be specified. Select from the accepted set of values indicated in annex B, subsection B6. This keyword shall be set if DC_TYPE = ‘TIME_AND_ANGLE’.

Type:

Optional[str]

dc_body_trigger

For phase angle thruster duty cycles (DC_TYPE=TIME_AND_ANGLE); specifies the body frame reference vector direction in the ‘DC_BODY_FRAME’ reference frame at which, when its projection onto the spin plane crosses the corresponding projection of DC_REF_DIR onto the spin plane, this angle-based duty cycle is initiated (see DC_PA_START_ANGLE for phasing). This tripartite value shall be provided if DC_TYPE = ‘TIME_AND_ANGLE’.

Type:

Optional[list[float]]

dc_exec_start

Start time of the initial duty cycle-based maneuver sequence execution. DC_EXEC_START is defined to occur on or prior to the first maneuver ‘ON’ portion within the duty cycle sequence. DC_EXEC_START must be scheduled to occur coincident with or after DC_WIN_OPEN. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Type:

Optional[str]

dc_exec_stop

End time of the final duty cycle-based maneuver sequence execution. DC_EXEC_STOP typically occurs on or after the end of the final maneuver ‘ON’ portion within the duty cycle sequence. DC_EXEC_STOP must be scheduled to occur coincident with or prior to DC_WIN_CLOSE. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Type:

Optional[str]

dc_max_cycles

Maximum number of ‘ON’ duty cycles (may override DC_EXEC_STOP). This value is optional even if DC_TYPE = ‘CONTINUOUS’.

Type:

Optional[int]

dc_min_cycles

Minimum number of ‘ON’ duty cycles (may override DC_EXEC_STOP). This value is optional even if DC_TYPE = ‘CONTINUOUS’.

Type:

Optional[int]

dc_pa_start_angle

For phase angle thruster duty cycles (DC_TYPE=TIME_AND_ANGLE); specifies the phase angle offset of thruster pulse start, measured with respect to the occurrence of a DC_BODY_TRIGGER crossing of the DC_REF_DIR direction when both are projected into the spin plane (normal to the body spin axis). This phase angle offset can be positive or negative to allow the duty cycle to begin prior to the next crossing of the DC_REF_DIR. As this angular direction is to be used in a modulo sense, there is no requirement for the magnitude of the phase angle offset to be less than 360 degrees. This keyword shall be set if DC_TYPE = ‘TIME_AND_ANGLE’.

Units: deg

Type:

Optional[float]

dc_pa_stop_angle

For phase angle thruster duty cycles (DC_TYPE=TIME_AND_ANGLE); specifies the phase angle of thruster pulse stop, measured with respect to the DC_BODY_TRIGGER crossing of the DC_REF_DIR direction when both are projected into the spin plane. This phase angle offset can be positive or negative to allow the duty cycle to end after to the next crossing of the DC_REF_DIR. As this angular direction is to be used in a modulo sense, there is no requirement for the magnitude of the phase angle offset to be less than 360 degrees. This keyword shall be set if DC_TYPE = ‘TIME_AND_ANGLE’.

Units: deg

Type:

Optional[float]

dc_ref_dir

For phase angle thruster duty cycles (DC_TYPE=TIME_AND_ANGLE); specifies the reference vector direction in the ‘MAN_REF_FRAME’ reference frame at which, when mapped into the space object’s spin plane (normal to the spin axis), the duty cycle is triggered (see DC_PA_START_ANGLE for phasing). This (tripartite, or three-element vector) value shall be provided if DC_TYPE = ‘TIME_AND_ANGLE’. This reference direction does not represent the duty cycle midpoint.

Type:

Optional[list[float]]

dc_ref_time

Reference time for the THRUST duty cycle, specified as either time in seconds (relative to EPOCH_TZERO), or as an absolute ‘<epoch>’ (see 7.5.10 for formatting rules). NOTE—Depending upon EPOCH_TZERO, DC_REF_TIME relative times may be negative. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Type:

Optional[str]

dc_time_pulse_duration

Thruster pulse ‘ON’ duration, initiated at first satisfaction of the burn ‘ON’ time constraint or upon completion of the previous DC_TIME_PULSE_PERIOD cycle. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Units: s

Type:

Optional[float]

dc_time_pulse_period

Elapsed time between the start of one pulse and the start of the next. Must be greater than or equal to DC_TIME_PULSE_DURATION. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Units: s

Type:

Optional[float]

dc_type

CONTINUOUS denotes full/continuous thrust <default>; TIME denotes a time-based duty cycle driven by time past a reference time and the duty cycle ON and OFF durations; TIME_AND_ANGLE denotes a duty cycle driven by the phasing/clocking of a space object body frame ‘trigger’ direction past a reference direction.

Type:

str

Type:

Duty cycle type to use for this maneuver time history section

dc_win_close

End time of the duty cycle-based maneuver window that occurs on or after the actual maneuver execution end time. For example, this may identify the time at which the satellite is taken out of a special duty-cycle-based maneuver mode. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Type:

Optional[str]

dc_win_open

Start time of the duty cycle-based maneuver window that occurs on or prior to the actual maneuver execution start time. For example, this may identify the time at which the satellite is first placed into a special duty-cycle-based maneuver mode. This keyword shall be set if DC_TYPE ≠ ‘CONTINUOUS’.

Type:

Optional[str]

grav_assist_name

Origin of maneuver gravitational assist body, which may be a natural solar system body (planets, asteroids, comets, and natural satellites), including any planet barycenter or the solar system barycenter. (See annex B, subsection B2, for acceptable GRAV_ASSIST_NAME values and the procedure to propose new values.)

Type:

Optional[str]

man_basis

Basis of this maneuver time history data, which shall be selected from one of the following values: ‘CANDIDATE’ for a proposed operational or a hypothetical (i.e., mission design and optimization studies) future maneuver, ‘PLANNED’ for a currently planned future maneuver, ‘ANTICIPATED’ for a non-cooperative future maneuver that is anticipated (i.e., likely) to occur (e.g., based upon patterns-of-life analysis), ‘TELEMETRY’ when the maneuver is determined directly from telemetry (e.g., based on inertial navigation systems or accelerometers), ‘DETERMINED’ when a past maneuver is estimated from observation-based orbit determination reconstruction and/or calibration, ‘SIMULATED’ for generic maneuver simulations, future mission design studies, and optimization studies, ‘OTHER’ for other bases of this data.

Type:

Optional[str]

man_basis_id

Free-text field containing the identification number for the orbit determination, navigation solution, or simulation upon which this maneuver time history block is based. Where a matching orbit determination block accompanies this maneuver time history, the MAN_BASIS_ID should match the corresponding OD_ID (see table 6-11).

Type:

Optional[str]

man_composition

The comma-delimited ordered set of maneuver elements of information contained on every maneuver time history line, with values selected from table 6-8. Within this maneuver data section, the maneuver composition shall include only one TIME specification (TIME_ABSOLUTE or TIME_RELATIVE).

Type:

str

man_device_id

Free-text field containing the maneuver device identifier used for this maneuver. ‘ALL’ indicates that this maneuver represents the summed acceleration, velocity increment, or thrust imparted by any/all thrusters utilized in the maneuver.

Type:

str

man_frame_epoch

Epoch of the maneuver data reference frame, if not intrinsic to the definition of the reference frame. (See 7.5.10 for formatting rules.)

Type:

Optional[str]

man_id

Free-text field containing the unique maneuver identification number for this maneuver. All supplied maneuver ‘constituents’ within the same MAN_BASIS and MAN_REF_FRAME categories shall be added together to represent the total composite maneuver description.

Type:

str

man_lines

Maneuver time history data lines.

Type:

list[ManLine]

man_next_epoch

Identifies the start time of the next maneuver for this MAN_BASIS.

Type:

Optional[str]

man_next_id

Free-text field containing the identification number of the next maneuver for this MAN_BASIS, contained either within this message, or presented in a future OCM. If this message is not part of a sequence of maneuver messages or if this maneuver is the last in a sequence of maneuvers, then MAN_NEXT_ID should be excluded from this message.

Type:

Optional[str]

man_pred_source

For future maneuvers, specifies the source of the orbit and/or attitude state(s) upon which the maneuver is based. While there is no CCSDS-based restriction on the value for this free-text keyword, it is suggested to consider using TRAJ_ID and OD_ID keywords as described in tables 6-4 and 6-11, respectively, or a combination thereof.

Type:

Optional[str]

man_prev_epoch

Identifies the completion time of the previous maneuver for this MAN_BASIS.

Type:

Optional[str]

man_prev_id

Free-text field containing the identification number of the previous maneuver for this MAN_BASIS, contained either within this message, or presented in a previous OCM. If this message is not part of a sequence of maneuver messages or if this maneuver is the first in a sequence of maneuvers, then MAN_PREV_ID should be excluded from this message.

Type:

Optional[str]

man_purpose

A free-text field used to specify the intention(s) of the maneuver. Multiple maneuver purposes can be provided as a comma-delimited list.

Type:

Optional[str]

man_ref_frame

Reference frame in which all maneuver vector direction data is provided in this maneuver data block. Select from the accepted set of values indicated in annex B, subsections B4 and B5. The reference frame must be the same for all data elements within a given maneuver time history block.

Type:

str

man_units

A comma-delimited set of SI unit designations for each and every element of the maneuver time history following the maneuver time tag(s), solely for informational purposes, provided as a free-text field enclosed in square brackets. When MAN_UNITS is provided, all elements of MAN_COMPOSITION AFTER the maneuver time tag(s) must have a corresponding units entry; percentages shall be denoted by ‘%’, and control switches, non-dimensional values, and text strings shall be labelled as ‘n/a’. NOTE—The listing of units via the MAN_UNITS keyword does not override the mandatory units for the selected MAN_COMPOSITION, as specified in table 6-8 or table 6-9.

Type:

Optional[str]

class ccsds_ndm.ManLine(*, epoch, values)

A single line in a maneuver time history.

Parameters:
  • epoch (str) – Ignition epoch.

  • values (list of str) – Maneuver elements for this epoch.

epoch

Ignition epoch.

Type:

str

values

Maneuver elements for this epoch.

Type:

list[str]

class ccsds_ndm.OcmCovarianceMatrix(*, cov_ref_frame, cov_type, cov_ordering, cov_lines, cov_id=None, cov_prev_id=None, cov_next_id=None, cov_basis=None, cov_basis_id=None, cov_frame_epoch=None, cov_scale_min=None, cov_scale_max=None, cov_confidence=None, cov_units=None, comment=None)

OCM Covariance Matrix.

Parameters:
  • epoch (str)

  • matrix. (Epoch of the covariance)

  • (Mandatory)

cov_ref_framestr

Reference frame for the covariance matrix. (Mandatory)

cov_typestr

Specifies the covariance element set type. (Mandatory) cov_matrix : list of float Upper triangular part of the covariance matrix. (Mandatory)

cov_idstr, optional

Identification number for this covariance matrix time history block. (Optional)

cov_prev_idstr, optional

Identification number for the previous covariance matrix time history. (Optional)

cov_next_idstr, optional

Identification number for the next covariance matrix time history. (Optional)

cov_basisstr, optional

Basis of this covariance matrix time history data (PREDICTED, DETERMINED, etc.). (Optional)

cov_basis_idstr, optional

Identification number for the telemetry dataset, orbit determination, or simulation. (Optional)

cov_confidencefloat, optional

The confidence level associated with the covariance [0-100]. (Optional) cov_scale_factor : float, optional Scale factor to be applied to the covariance matrix. (Optional)

cov_unitsstr, optional

Comma-delimited set of SI unit designations for the covariance elements. (Optional)

commentlist[str], optional

Comments. (Optional)

comment

Comments (a contiguous set of one or more comment lines may be provided in the OCM covariance time history section only immediately after the COV_START keyword; see 7.8 for comment formatting rules).

Type:

list[str]

cov_basis

Basis of this covariance time history data. This is free-text field with the following suggested values: a) ‘PREDICTED’. b) ‘DETERMINED’ when estimated from observation-based orbit determination, reconstruction and/or calibration. For definitive OD performed onboard whose solutions have been telemetered to the ground for inclusion in an OCM, the COV_BASIS shall be considered to be DETERMINED. c) EMPIRICAL (for empirically determined such as overlap analyses). d) SIMULATED for simulation-based (including Monte Carlo) estimations, future mission design studies, and optimization studies. e) ‘OTHER’ for other bases of this data.

Examples: PREDICTED, EMPIRICAL, DETERMINED, SIMULATED, OTHER

Type:

Optional[str]

cov_basis_id

Free-text field containing the identification number for the orbit determination, navigation solution, or simulation upon which this covariance time history block is based. When a matching orbit determination block accompanies this covariance time history, the COV_BASIS_ID should match the corresponding OD_ID (see table 6-11).

Examples: OD_5910

Type:

Optional[str]

cov_confidence

A measure of the confidence in the covariance errors matching reality, as characterized via a Wald test, a Chi-squared test, the log of likelihood, or a numerical representation per mutual agreement.

Examples: 50

Units: %

Type:

Optional[float]

cov_frame_epoch

Epoch of the covariance data reference frame, if not intrinsic to the definition of the reference frame. (See 7.5.10 for formatting rules.)

Examples: 2001-11-06T11:17:33, 2002-204T15:56:23Z

Type:

Optional[str]

cov_id

Free-text field containing the identification number for this covariance time history block.

Examples: COV_20160402_XYZ

Type:

Optional[str]

cov_lines

Contiguous set of covariance matrix data lines.

Type:

list[CovLine]

cov_next_id

Free-text field containing the identification number for the next covariance time history, contained either within this message, or presented in a future OCM. NOTE—If this message is not part of a sequence of covariance time histories or if this covariance time history is the last in a sequence of covariance time histories, then COV_NEXT_ID should be excluded from this message.

Examples: COV_20160305C

Type:

Optional[str]

cov_ordering

Indicates covariance ordering as being either LTM, UTM, Full covariance, LTM covariance with cross-correlation information provided in upper triangle off-diagonal terms (LTMWCC), or UTM covariance with cross-correlation information provided in lower triangle off-diagonal terms (UTMWCC).

Examples: LTM, UTM, FULL, LTMWCC, UTMWCC

Type:

str

cov_prev_id

Free-text field containing the identification number for the previous covariance time history, contained either within this message or presented in a previous OCM. NOTE—If this message is not part of a sequence of covariance time histories or if this covariance time history is the first in a sequence of covariance time histories, then COV_PREV_ID should be excluded from this message.

Examples: COV_20160305a

Type:

Optional[str]

cov_ref_frame

Reference frame of the covariance time history. Select from the accepted set of values indicated in annex B, subsection B4 and B5.

Examples: TNW_INERTIA, J2000

Type:

str

cov_scale_max

Maximum scale factor to apply to this covariance data to achieve realism.

Examples: 5.0

Type:

Optional[float]

cov_scale_min

Minimum scale factor to apply to this covariance data to achieve realism.

Examples: 0.5

Type:

Optional[float]

cov_type

Indicates covariance composition. Select from annex B, subsections B7 and B8.

Examples: CARTP, CARTPV, ADBARV

Type:

str

cov_units

A comma-delimited set of SI unit designations for each element of the covariance time history following the covariance time tag, solely for informational purposes, provided as a free-text field enclosed in square brackets. When provided, these units designations shall correspond to the units of the standard deviations (or square roots) of each of the covariance matrix diagonal elements (or variances), respectively, and all diagonal elements shall have a corresponding units entry, with non-dimensional values (such as dispersion in orbit eccentricity) denoted by ‘n/a’. NOTE—The listing of units via the COV_UNITS keyword does not override the mandatory units specified for the selected COV_TYPE (links to the relevant SANA registries provided in annex B, subsections B7 and B8).

Examples: [km,km,km,km/s,km/s,km/s]

Type:

Optional[str]

class ccsds_ndm.CovLine(*, epoch, values)

A single line in a covariance time history.

Parameters:
  • epoch (str) – Absolute or relative time tag.

  • values (list of float) – Covariance matrix elements for this epoch.

epoch

Absolute or relative time tag.

Type:

str

values

Covariance matrix elements for this epoch.

Type:

list[float]

class ccsds_ndm.OcmPerturbations

OCM Perturbations Parameters.

Parameters:

comment (list[str], optional) – Comments. (Optional)

albedo_grid_size

Size of the albedo grid.

Type:

Optional[int]

albedo_model

Name of the albedo model.

Type:

Optional[str]

atmospheric_model

Name of atmosphere model, which shall be selected from the accepted set of values indicated in annex B, subsection B9.

Examples: MSISE90, NRLMSIS00, J70, J71, JROBERTS, DTM, JB2008

Type:

Optional[str]

central_body_rotation

Central body angular rotation rate, measured about the major principal axis of the inertia tensor of the central body, relating inertial, and central-body-fixed reference frames. NOTE—The rotation axis may be slightly offset from the inertial frame Z-axis definition.

Units: deg/s

Type:

Optional[float]

comment

Comments (a contiguous set of one or more comment lines may be provided in the OCM Perturbations Specification only immediately after the PERT_START keyword; see 7.8 for comment formatting rules).

Type:

list[str]

equatorial_radius

Oblate spheroid equatorial radius of the central body used in the message, if different from the gravity model.

Units: km

Type:

Optional[float]

fixed_f10p7

Fixed F10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_f10p7_mean

Fixed 81-day average F10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_geomag_ap

Fixed geomagnetic Ap index.

Type:

Optional[float]

fixed_geomag_dst

Fixed geomagnetic Dst index.

Type:

Optional[float]

fixed_geomag_kp

Fixed geomagnetic Kp index.

Type:

Optional[float]

fixed_m10p7

Fixed M10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_m10p7_mean

Fixed 81-day average M10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_s10p7

Fixed S10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_s10p7_mean

Fixed 81-day average S10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_y10p7

Fixed Y10.7 solar flux.

Units: SFU

Type:

Optional[float]

fixed_y10p7_mean

Fixed 81-day average Y10.7 solar flux.

Units: SFU

Type:

Optional[float]

gm

Gravitational coefficient of attracting body (Gravitational Constant × Central Mass), if different from the gravity model.

Units: km³/s²

Type:

Optional[float]

gravity_model

The gravity model (selected from the accepted set of gravity model names indicated in annex B, subsection B10), followed by the degree (D) and order (O) of the applied spherical harmonic coefficients used in the simulation. NOTE—Specifying a zero value for ‘order’ (e.g., 2D 0O) denotes zonals (J2 … JD).

Examples: EGM-96: 36D 36O, WGS-84: 8D 0O, GGM-01: 36D 36O, TEG-4: 36D 36O

Type:

Optional[str]

n_body_perturbations

One OR MORE (N-body) gravitational perturbations bodies used. Values, listed serially in comma-delimited fashion, denote a natural solar or extra-solar system body (stars, planets, asteroids, comets, and natural satellites). NOTE—Only those entries specified under CENTER_NAME in annex B, subsection B2 are acceptable values.

Examples: MOON, SUN, JUPITER

Type:

Optional[str]

oblate_flattening

Central body’s oblate spheroid oblateness for the polar-symmetric oblate central body model (e.g., for the Earth, it is approximately 1.0/298.257223563).

Type:

Optional[float]

ocean_tides_model

Name of ocean tides model (optionally specify order or constituent effects, diurnal, semi-diurnal, etc.). This is a free-text field, so if the examples on the right are insufficient, others may be used.

Examples: DIURNAL, SEMI-DIURNAL

Type:

Optional[str]

reduction_theory

Specification of the reduction theory used for precession and nutation modeling. This is a free-text field, so if the examples on the right are insufficient, others may be used.

Examples: IAU1976/FK5, IAU2010, IERS1996

Type:

Optional[str]

shadow_bodies

List of bodies included in shadow calculations (value(s) to be drawn from the SANA registry list of Orbit Centers at <https://sanaregistry.org/r/orbit_centers>).

Examples: EARTH, MOON

Type:

Optional[str]

shadow_model

Shadow model used for Solar Radiation Pressure; dual cone uses both umbra/penumbra regions. Selected option should be one of ‘NONE’, ‘CYLINDRICAL’, ‘CONE’, or ‘DUAL_CONE’.

Examples: NONE, CYLINDRICAL, CONE, DUAL_CONE

Type:

Optional[str]

solid_tides_model

Name of solid tides model (optionally specify order or constituent effects, diurnal, semi-diurnal, etc.).

Examples: DIURNAL, SEMI-DIURNAL

Type:

Optional[str]

srp_model

Name of the Solar Radiation Pressure (SRP) model.

Examples: CANNONBALL, FLAT_PLATE, BOX_WING

Type:

Optional[str]

sw_data_epoch

Epoch of the space weather data.

Type:

Optional[str]

sw_data_source

Space weather data source.

Examples: NOAA

Type:

Optional[str]

sw_interp_method

Free-text field specifying the method used to select or interpolate any and all sequential space weather data (Kp, ap, Dst, F10.7, M10.7, S10.7, Y10.7, etc.). While not constrained to specific entries, it is anticipated that the utilized method would match methods detailed in numerical analysis textbooks.

Examples: PRECEDING_VALUE, NEAREST_NEIGHBOR, LINEAR, LAGRANGE_ORDER_5

Type:

Optional[str]

class ccsds_ndm.OcmOdParameters(*, od_id, od_method, od_epoch, od_prev_id=None, comment=None)

OCM Orbit Determination Parameters.

Parameters:
  • od_id (str) – Identifier for the orbit determination parameters block. (Mandatory)

  • od_method (str) – Specifies the method used for the orbit determination. (Mandatory)

  • od_epoch (str) – Epoch of the orbit determination. (Mandatory)

  • od_prev_id (str, optional) – Identification number for the previous orbit determination block. (Optional)

  • comment (list[str], optional) – Comments. (Optional)

actual_od_span

Actual time span in days used for the OD of the object. NOTE—Should equal (DAYS_SINCE_FIRST_OBS - DAYS_SINCE_LAST_OBS).

Units: d

Type:

Optional[float]

comment

Comments (see 7.8 for formatting rules).

Type:

list[str]

consider_n

The number of consider parameters used in the orbit determination.

Type:

Optional[int]

consider_params

Free-text comma-delimited description of the consider parameters used in the orbit determination.

Type:

Optional[str]

data_types

Comma-separated list of observation data types utilized in this orbit determination. Although this is a free-text field, it is recommended at a minimum to use data type descriptor(s) as provided in table 3-5 of the TDM standard (reference [9]) (excluding the DATA_START, DATA_STOP, and COMMENT keywords). Additional descriptors/detail is encouraged if the descriptors of table 3-5 are not sufficiently clear; for example, one could replace ANGLE_1 and ANGLE_2 with RADEC (e.g., from a telescope), AZEL (e.g., from a ground radar), RANGE (whether from radar or laser ranging), etc.

Type:

Optional[str]

days_since_first_obs

Days elapsed between first accepted observation and OD_EPOCH.

Examples: 1.5

Units: d

Days elapsed between first accepted observation and OD_EPOCH. NOTE—May be positive or negative.

Units: d

Type:

Optional[float]

days_since_last_obs

Days elapsed between last accepted observation and OD_EPOCH. NOTE—May be positive or negative.

Units: d

Type:

Optional[float]

gdop

Generalized Dilution Of Precision for this orbit determination, based on the observability grammian as defined in references [H15] and [H16] and expressed in informative annex F, subsection F4. GDOP provides a rating metric of the observability of the element set from the OD. Alternate GDOP formations may be used as mutually defined by message exchange participants.

Type:

Optional[float]

maximum_obs_gap

The maximum time between observations in the OD of the object.

Units: d

Type:

Optional[float]

obs_available

The number of observations available within the actual OD time span.

Type:

Optional[int]

obs_used

The number of observations accepted within the actual OD time span.

Type:

Optional[int]

od_confidence

OD confidence metric, which spans 0 to 100% (useful only for Filter-based OD systems). The OD confidence metric shall be as mutually defined by message exchange participants.

Units: %

Type:

Optional[float]

od_epoch

Relative or absolute time tag of the orbit determination solved-for state in the selected OCM time system recorded by the TIME_SYSTEM keyword.

Examples: 2000-01-01T12:00:00Z

Type:

str

od_epoch_eigint

Positional error ellipsoid 1σ intermediate eigenvalue at the epoch of the OD.

Units: m

Type:

Optional[float]

od_epoch_eigmaj

Positional error ellipsoid 1σ major eigenvalue at the epoch of the OD.

Units: m

Type:

Optional[float]

od_epoch_eigmin

Positional error ellipsoid 1σ minor eigenvalue at the epoch of the OD.

Units: m

Type:

Optional[float]

od_id

Identification number for this orbit determination.

Examples: 1

Type:

str

od_max_pred_eigmaj

The resulting maximum predicted major eigenvalue of the 1σ positional error ellipsoid over the entire TIME_SPAN of the OCM, stemming from this OD.

Units: m

Type:

Optional[float]

od_method

Type of orbit determination method used to produce the orbit estimate.

Examples: LEAST_SQUARES, KALMAN_FILTER

Type:

str

od_min_pred_eigmin

The resulting minimum predicted minor eigenvalue of the 1σ positional error ellipsoid over the entire TIME_SPAN of the OCM, stemming from this OD.

Units: m

Type:

Optional[float]

od_prev_id

Optional identification number for the previous orbit determination.

Examples: 0

Type:

Optional[str]

recommended_od_span

Number of days of observations recommended for the OD of the object (useful only for Batch OD systems).

Units: d

Type:

Optional[float]

sedr

The Specific Energy Dissipation Rate, which is the amount of energy being removed from the object’s orbit by the non-conservative forces. This value is an average calculated during the OD. (See annex F, subsection F7 for definition.)

Units: W/kg

Type:

Optional[float]

sensors

Free-text comma-delimited description of the sensors used in the orbit determination.

Type:

Optional[str]

sensors_n

The number of sensors used in the orbit determination.

Type:

Optional[int]

solve_n

The number of solve-for states in the orbit determination.

Type:

Optional[int]

solve_states

Free-text comma-delimited description of the state elements solved for in the orbit determination.

Type:

Optional[str]

tracks_available

The number of sensor tracks available for the OD within the actual time span (see definition of ‘tracks’, 1.5.2).

Type:

Optional[int]

tracks_used

The number of sensor tracks accepted for the OD within the actual time span (see definition of ‘tracks’, 1.5.2).

Type:

Optional[int]

weighted_rms

(Useful/valid only for Batch OD systems.) The weighted RMS residual ratio, defined as: .. math:: text{Weighted RMS} = sqrt{frac{sum_{i=1}^{N} w_i(y_i - hat{y}_i)^2}{N}} Where yi is the ith observation measurement, ŷi is the current estimate of yi, wi = 1/σi² is the weight (sigma) associated with the measurement at the ith time and N is the number of observations. This is a value that can generally identify the quality of the most recent vector update and is used by the analyst in evaluating the OD process. A value of 1.00 is ideal.

Type:

Optional[float]