Ambiguity resolving

Good afternoon. Tell me, please, in orekit implemented the ability to resolve the real phase ambiguity (the one that is adding to the estimator via addmodifier() and can be estimated with another parameters)? I found only ils methods(if I’m not mistaken, they are used to resolve float ambiguity, after the real part of the ambiguity is found (for example, by the double difference method). I would be very grateful if you had any test or example

Hi @Suslov46

I am far to be an expert of ambiguity solving but I can try to help you. Maybe somebody will provide you a better answer.

If you want to estimate the ambiguity of the phase measurement during an orbit determination process, you can use the ambiguityDriver parameter of the Phase measurement class. Please note that by default this parameter is not estimated. The user must specify it. Furthermore, a phase ambiguity is related to the satellite which emits the signal. Therefore, it is also recommended to change the name. Here a small code allowing to do this:

// Initialize the phase measurement
final Phase phase = ...
// Loop on measurement parameter drivers
for (ParameterDriver driver : phase.getParametersDrivers()) {
  // Verify if the current driver corresponds to the phase ambiguity
  if (driver.getName() == Phase.AMBIGUITY_NAME) {
    // Set to selected
    driver.setSelected(true);
    // Update the name
    driver.setName(Phase.AMBIGUITY_NAME + satName);
  }
}

Please note that I have just written this code snippet in the forum editor. Therefore, it may contain errors. I realize that it could be helpful to add a getter in Phase class to directly access this parameter. Something like: getAnbiguityDriver(). It allow to remove the “for” and “if” loops. Could you open an issue to add this method please?

Another important information with phase ambiguities is that, if a cycle slip occurs between two measurements, you must reinitialized the ambiguity. In order to reinitialized the ambiguity, I recommend to simply use another name. Something like driver.setName(Phase.AMBIGUITY_NAME + satName + " [" + index + "]"). Which index indicates the index of the cycle slip (i.e. 0 before the first cycle slip, 1 after the first one, 2 after the second one, etc.).

Now, if you want to fix integer ambiguities from float ambiguities, you can look at the AmbiguitySolver test class. It provides and example using LAMBDA method.

Regards,
Bryan

Thank you very much, Bryan. I appreciate your help and advice. your answer was very helpful to me. p. s. I opened an issue with your suggestion

1 Like