CCSDS OEM conversion
ChristopherRabotin opened this issue · comments
High level description
CCSDS OEM is a standard for transferring orbital element data. As such, ANISE shall support reading these files and producing them from an ephemeris.
The API should also allow for converting an ephemeris into another frame prior to the serialization of the data in OEM format.
Requirements
- Convert the OEM state data into an SPK with relevant metadata where possible.
- Copy would-be discarded data into DAF comment section
Test plans
- Generate a CCSDS OEM file from a public tool, or find one online, and convert that into an SPK file. Then make sure that when queried at the epochs present in the OEM file, the state data from the SPK matches that of the OEM file.
- Test that optional fields do not cause the parser to fail.
- Test that incorrectly formatted fields do not cause the parser to fail.
Design
Algorithm demonstration
N/A
API definition
- A new module called
ccsds
will be added along with anoem
submodule. All of the OEM parsing logic will be there. - The
ccsds
module will only be available with theccsds
crate feature, enabled by default, but not supported inno_std
environments.
High level architecture
The text version of the OEMs will likely be parsed using an abstract syntax tree. Although, it is to be see whether that is an overkill since the text file is relatively simple. The XML version, if it is to be supported at all, will use an standard XML parser.
Ref. 1: https://createlang.rs/01_calculator/ast.html
Ref. 2: https://doc.rust-lang.org/stable/nightly-rustc/rustc_ast/ast/index.html
Detailed design
The detailed design *will be used in the documentation of how ANISE works.
Feel free to fill out additional QA sections here, but these will typically be determined during the development, including the release in which this issue will be tackled.