Accessing OEM covariance during propagation (in step handler)


I have read in an OEM file with covariance information, and extracted a Bounded Propagator through the OemSatelliteEphemeris.getPropagator() method. If I look at the OemSegment I can see valid states and covariance entries, so I know it is in there. I would like to add a step handler to this propagator and from within the handleStep method, observe/interpolate the covariance. However from within the step handler, I only have access to either SpacecraftState or OrekitStepInterpolator Looking at both of these classes, there aren’t any additionalState or additionalStateDerivatives present when propagating.

Do I need to add an additionalState or additionalStateDerivatives to the propagator, or is there some other way of getting that covariance data?


I guess you used getEphemeris from the EphemerisSegment interface, right?

This interface was designed with several types of ephemeris. It is implemented by CPFEphemeris, OEMSegment, OrekitEphemerisSegment, SP3Ephemeris and TrajectoryStateHistory. Some of the associated containers include covariance data, some don’t.

Unfortunately, all implementations share the same default implementation of getPropagator, which just picks up the coordinates and ignores the covariances, as not all containers provide them.

So, it is a bug, and a major one I would say! :worried:

The containers that do include covariance data should make them available in the bounded propagator, by using a specialized implementation of getPropagator.

Could you file an issue in the forge?

@luc Not sure if this is already addressed in #901, but I filed #914