Dynamic outlier filter and multiplexed measurements

Hello Orekit community,

I am writing to report a strange behaviour of the KalmanModel when used together with a DynamicOutlierFilter. Or maybe there is just some error in the way I use it.

More specifically, in the KalmanModel.getInnovation a call is made to KalmanModel.applyDynamicOutlierFilter before computing the innovation.

However, it seems that the outlier filters are never applied for multiplexed measurements since these modifiers are associated with the observed measurements and not with the MultiplexedMeasurements object itself (observedMeasurement.getModifiers() will return [ ]). With this behaviour, isn’t the innovation computed by possibly taking into account outliers ?

Shouldn’t the modifiers be applied as in KalmanModel.finalizeEstimation, when calling MultiplexedMeasurements.theoreticalEvaluation ?

Thanks in advance for your help,

Hi Andrea,

Your remark is very interesting.
I think that the KalmanModel.applyDynamicOutlierFilter method must be called before calculating the measurement residuals in order to take into account the fact that some measurements can be rejected. However, inside a MultiplexedMeasurements some measurements can be rejected and some other not.

There is indeed a problem of architecture for the use of DynamicOutlierFilter for a MultiplexedMeasurements inside a KalmanModel. However, I don’t know now what is the best solution, we have to discuss it.

Did you try to add the DynamicOutlierFilter at the MultiplexedMeasurements level?


Hi Brian, thanks for your quick reply.

I did not try by adding the DynamicOutlierFilter at the MultiplexedMeasurements level.

In my case, I was dealing with a batch of aberrant observations which should led to reject of the multiplex as a whole. I dealt with it by treating separately the case of MultiplexedMeasurements in KalmanModel.applyDynamicFilter and labelling the observation(s) as rejected if all the measurements where out of the prescribed sigma bounds.

The situation in which some measurements among the multiplexed are rejected while some are accepted seems different although this should be the standard case. Can we still compute a reduced innovation to correct at least a part of the state ?


Maybe I’m wrong but I think it should work. But with the current implementation of the KalmanModel it is not possible to verify.

Could you open an issue, in the Orekit issue tracker, in order to think about this problem?


Hi Brian, I have opened an issue on the tracker as you requested.

Thanks for the support.

Thank you Andrea for opening the issue. We will think about a way to fix it!

Best regards,

In my opinion the multiplex measurement behaves correctly: if part of the measurement is an outlier, then the whole measurement should be an outlier. I think that is the intention of the multiplexer. Anything else would be counter-intuitive to me.

If you’d like just part of the measurement to be accepted, then you can feed them to the estimator separately, rather than combining them with the multiplexer. The estimator can handle multiple measurements at the same time without using the multiplexer.