Interpolation of covariance matrices

Hi there,

I was wondering if there was any native ways in Orekit to interpolate (in time) covariance matrices (basically position and velocity) among a list of dated ones, typically from an OEM file. I couldn’t find that in the tutorials.

Cheers,
Romain.

Hi @Serrof

Currently, there is nothing in Orekit for interpolating covariance matrices. However, we must have features for that.
To my mind, two new features can be added:

  1. A static method intepolate() in CartesianCovariance class for interpolating covariance matrices read from CCSDS files.
    The inputs can be: interpolationEpoch (AbsoluteDate), data ( Stream<CartesianCovariance>), and interpolationDegree (int).
    The output can be a CartesianCovariance representing the interpolated covariance matrix.
    The implementation can just convert the covariances to arrays and interpolate thanks to an HermiteInterpolator.

  2. A more generic feature can be to add List<RealMatrix> covariances in OrekitEphemerisFile#OrekitEphemerisSegment. Thanks to that, the interpolation can be perfomed thanks to an EphemerisSegmentPropagator using a new method getCovariance(date). This would need to put the EphemerisSegmentPropagator as a public class.

What do you think?
If you think these features are interesting, could you open feature requests in our issue tracker?

Best regards,
Bryan

Hi Bryan.

Thanks for these suggestions. Unfortunately don’t think I know Orekit enough to fully understand the second option…
Regarding the first one, does the “Stream” mean that it would only work on data from a file?

Cheers,
Romain.

Romain,

For the first feature the answer is yes. Its purpose is to interpolate parsed covariance matrices from a CCSDS file, like an OEM.
The purpose of the second feature is to be more generic in order to have an interpolation method working for ephemeris that not necessary come from CCSDS files.

Best regards,
Bryan

Hi Bryan,

I don’t think this will always produce covariance matrices. See [1] for why and some other ideas.

Regards,
Evan

[1] https://comspoc.com/Resources/Papers/Efficient-Covariance-Interpolation-using-Blending-of-Approximate-State-Error-Transitions.pdf

Thank you Evan for the reference.

Interpolating covariance matrices is not as simple as I thought.
I think we should have a look on these interpolation methods because interpolating covariance matrices can be very useful for Orekit’s users.

Best regards,
Bryan