Skip to content

OMM XML reader misses CCSDS namespace-qualified satellite records #1669

Open

Description

@heathsanchez

Describe the bug

satOmm2elem() accepts unqualified CCSDS OMM XML but reports no OMM records when the same elements use the CCSDS namespace-qualified form. The XML parser searches for literal segment and child tag names; ElementTree represents qualified tags as {namespace}segment.

CCSDS 505.0-B-2 (2021), §4.3.4–4.3.6, explicitly allows both elementFormDefault="qualified" and "unqualified" and shows ndm:-qualified message elements:
https://www.nasa.gov/wp-content/uploads/2017/12/ccsds_xml_specifications_for_navigation_data_messages.pdf

Minimal reproduction

Using develop at 016955fba0117ac52eb58f91121668556dcca290:

from Basilisk.utilities.ommHandling import _parseOmmXml

unqualified = (
    '<omm><body><segment><metadata><OBJECT_NAME>ISS</OBJECT_NAME>'
    '</metadata></segment></body></omm>'
)
qualified = (
    '<ndm:omm xmlns:ndm="urn:ccsds:schema:ndmxml">'
    '<ndm:body><ndm:segment><ndm:metadata>'
    '<ndm:OBJECT_NAME>ISS</ndm:OBJECT_NAME>'
    '</ndm:metadata></ndm:segment></ndm:body></ndm:omm>'
)

print(len(_parseOmmXml(unqualified)))  # 1
print(len(_parseOmmXml(qualified)))    # 0, expected 1

This minimal example isolates the parser. A separate comparison used all 21 fields from the repository's src/tests/test_readOMM.py ISS fixture: unqualified XML recognized 1 record and all 21 fields; equivalently qualified XML recognized 0 records. Consequently, the public satOmm2elem() path raises found no OMM records before field validation or propagation for the qualified input.

Expected behavior

Both CCSDS-permitted XML representations should produce the same parsed fields and subsequent orbit processing. Malformed or unsupported OMM data should retain existing rejection behavior.

Suggested narrow scope

Handle unqualified and CCSDS namespace-qualified segment, metadata, data, meanElements, tleParameters, and field tags; add a regression for the qualified equivalent of the existing 21-field fixture. No XML parser replacement or new dependency is necessary.

This is a deterministic parser-boundary reproduction. Full Basilisk/SGP4 integration and CI have not been run for a patch yet; no spacecraft operational impact is claimed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

  • Status
    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions