How would one incorporate DOR / Delta-DOR measurements in Orekit?

Is there a simple way to do this?

Hi,

I don’t think Orekit is currently able to support Delta-DOR measurements. If you want to use this type of measurements, you will have to add it on Orekit.

To add a new measurement in Orekit, you have to extend the abstract class AbstractMeasurement and implement the method theoreticalEvaluation. The aim of this method is to compute a theoretical value of the measurement without considering the disruptive effects (e.g. tropospheric and ionospheric delays). To implement this method, you can have a look on the implementations of Range and RangeRate classes.

Please note that the modelling of the clock errors has to be considered in the theoreticalEvaluation method whereas the atmospheric effects are added as measurement modifiers (see modifiers package). Maybe you will also have to implement the specific measurement modifiers for the Delta-DOR measurement. To do this, you can have a look on the different TroposphericDelayModifier and IonosphericDelayModifier classes.

As Orekit is an Open-Source project, if you are interested in contributing this new measurement to Orekit, you can follow the steps of our contributing guide. We would be happy to add your contribution in Orekit.

Kind regards,
Bryan

Thanks! I’ve never written Java before (I’m using the Python wrapper), but I’m happy to contribute.

I’m not sure how deep the Python wrapper goes. Is it possible I could prototype these classes in Python, still deriving them from the appropriate Orekit Java classes? I had a lot of difficulty getting the Python wrapper working directly from the repository — I ended up having to install directly from Conda.

You can definitely prototype the classes in Python. You can see in this example from @petrus.hyvonen how to inherit an Orekit Java class: https://gitlab.orekit.org/orekit-labs/python-wrapper/-/blob/master/examples/Example_EarthObservation_-_Attitude_Sequence.ipynb . You could also find information in his slides from the Orekit Day 2019: https://orekit.org/doc/orekit-day/2019/4%20-%20Orekit%20in%20Python%20-%20SSC%20-%202019_2.pdf

Note that your Python class should not inherit directly the Orekit Java class but a “modified” Python class, for instance PythonOrekitFixedStepHandler instead of OrekitFixedStepHandler.

I use the Orekit Python wrapper from the conda forge too, which is the recommended way. The only use of installing the wrapper manually that I see is if you need a (Java) feature that is not merged into a release yet.

Hi!

You can likely use the Python version for prototyping, but your performance may have a penalty compared to pure java.

I am currently working on updating documentation for the Python Wrapper, and the example linked below is now updated for latest 10.1.

The Basics document is also updated, not finished but includes a bit more info.

In general, the examples directory is good to look at as well as the test cases directory.

And yes, it quite involved to compile it from scratch, so I recommend using the conda package. If you need to compile it, have a look at the orekit-feedstock git repo in the coda-forge project.