Resetting propagation parameters during the course of propagation

As briefed in the title, I’m looking to change/vary the propagation parameter over time during a propagation by adding a gaussian noise to the coefficients (drag/radiation/global-factor). I was wondering if this feature already exists in Orekit or does it have to be custom implemented using EventDetector/EventHandler combo.

Hello @astroPanda,

Depending on when you want to modify pour parameters, you can use a fixed step handler and/or event detector associated with event handler.

What you are looking for are ParameterDriver. Each force model parameters are driven by ParameterDriver which you can retrieve before the propagation and dynamically change during the propagation. Moreover you can use a gaussian noise generator (available in Hipparchus).

I’m answering from my phone so this message is a bit lacking. I’ll improve it when I can.

Cheers,
Vincent

Hi,
Thank you for your response.

Ideally I would like to integrate this when generating measurements. So I suppose I should be doing this at the scheduler level, when constructing MeasurementBuilder, maybe?

Thank you for confirming, that was my understanding as well.

In the case of measurement generation, I would like this updation to be triggered right after generating nth measurement and so the orbit gets updated before the next (n+1th) measurement. Wondering if that is even feasible?

Hi @Vincent , Just wanted to follow up with you whether you had a chance to look at this. Your help will be much appreciated.

Hi @astroPanda, i forgot to come back to this thread. Sorry about that :melting_face:.

I don’t think i have already used the MeasurementBuilder but i think you will have to create your own implementation of this interface by extending AbstractMeasurementBuilder (check out this link for more information about this last abstract class).

Cheers,
Vincent

Hmm… could you elaborate a bit why it should be done in the measurement builder level. As I’m I’m looking to add the noise via the reference orbit itself that shall be used by the MB to build measurements and not directly on the measurements.

I believe that this is why you would need to slightly modify existing MeasurementBuilder. You could add your own method to update the orbit after each measurement generation.

Another way of doing this, and probably more straightforward, would be to add a gaussian noise at a constant time step using an OrekitFixedStepHandler. This way, you would not have to implement your own MeasurementBuilder. I think the results will be quite similar to what you would get with a custom MeasurementBuilder.

Keep us updated !

Cheers,
Vincent

Using a white noise on a MeasurementBuilder is probably not what you want. It does not change the propagation itself, it changes the measurements equations.
You may want to look at AdaoterPropagator, with a custom differential effect, but I doubt it will be easy and I don’t think you can use that for measurement generation (but I didn’t look in depth).

The first suggestion by Vincent, based on ParameterDriver is probably easier, and it also allows to have some physical meaning for what you change (the drag coefficient for example).