ccsds-ndm 0.0.9

Parse and generate CCSDS Navigation Data Messages (NDM) in KVN and XML formats
Documentation

CCSDS NDM

Rust crates.io docs.rs License: MPL 2.0

A Rust crate for parsing, validating, and generating CCSDS Navigation Data Messages (NDM) in KVN and XML formats.

Installation

cargo add ccsds-ndm

Supported Message Types

Message Description
OPM Orbit Parameter Message - single state vector and orbital parameters
OMM Orbit Mean-Elements Message - mean orbital elements (TLE-like)
OEM Orbit Ephemeris Message - orbit state time series with covariance
OCM Orbit Comprehensive Message - detailed orbit data
CDM Conjunction Data Message - collision assessment data
TDM Tracking Data Message - tracking measurements
RDM Reentry Data Message - reentry prediction information
APM Attitude Parameter Message - single attitude state and parameters
AEM Attitude Ephemeris Message - attitude state time series
ACM Attitude Comprehensive Message - detailed attitude data
NDM Combined NDM Instantiation - container for multiple messages

Quick Start

use ccsds_ndm::traits::{Ndm, Validate};
use ccsds_ndm::{from_file, MessageType};

fn main() -> ccsds_ndm::error::Result<()> {
    // Auto-detect format (KVN/XML) and message type
    let msg = from_file("example.ndm")?;

    if let MessageType::Opm(opm) = msg {
        opm.validate()?;
        println!("Object: {}", opm.body.segment.metadata.object_name);
        std::fs::write("output.xml", opm.to_xml()?)?;
    }

    Ok(())
}

Parse a specific type directly when you already know it:

use ccsds_ndm::messages::opm::Opm;
use ccsds_ndm::traits::Ndm;

let opm = Opm::from_kvn("CCSDS_OPM_VERS = 3.0\n...").unwrap();

Features

  • Type-safe message model with units and enums
  • Auto-detection of input format and message type
  • Semantic validation via the shared Validate trait
  • KVN and XML read/write support
  • Builder APIs for constructing messages

## License

MPL-2.0