CCSDS 502.0-B-3 Orbit Ephemeris Message parser and interpolator
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add READMEs for 16 packages, fix merlint issues, add KVN tests

READMEs for all new packages. Fix missing docs (ocm, stix, globe),
naming (project_visible→visible, label_info→info, shader_kind→kind),
add .ocamlformat to csvt, add 11 KVN tests.

+41
+41
README.md
··· 1 + # oem 2 + 3 + CCSDS 502.0-B-3 Orbit Ephemeris Message parser and interpolator. 4 + 5 + Parses the KVN (Keyword=Value Notation) text format for orbit ephemeris data. Provides Hermite interpolation between state vectors for smooth position queries at arbitrary times. 6 + 7 + ## Installation 8 + 9 + ``` 10 + opam install oem 11 + ``` 12 + 13 + ## Usage 14 + 15 + ```ocaml 16 + match Oem.of_file "ephemeris.oem" with 17 + | Ok oem -> 18 + Printf.printf "Object: %s\n" (Oem.object_name oem); 19 + let (start, stop) = Oem.time_range oem in 20 + (* Interpolate at a specific time *) 21 + (match Oem.interpolate_all oem some_ptime with 22 + | Some sv -> Fmt.pr "Position: %a\n" Oem.pp_vec3 sv.pos 23 + | None -> print_endline "Time out of range") 24 + | Error e -> Fmt.epr "%a\n" Oem.pp_error e 25 + ``` 26 + 27 + ## API Overview 28 + 29 + - **`type t`** -- Complete OEM file: header + segment list 30 + - **`type segment`** -- Metadata, state vector array, optional covariance list 31 + - **`type state_vector`** -- `epoch : Ptime.t`, `pos : vec3`, `vel : vec3` 32 + - **`type covariance`** -- Epoch, reference frame, upper-triangle matrix (21 elements) 33 + - **`of_string`**, **`of_channel`**, **`of_file`** -- Parse KVN format 34 + - **`interpolate`** -- Hermite interpolation within a segment 35 + - **`interpolate_all`** -- Search all segments and interpolate 36 + - **`time_range`** -- Start/stop time spanning all segments 37 + - **`object_name`**, **`object_id`** -- Accessors 38 + 39 + ## License 40 + 41 + ISC