Question about combination of GNSS measurements

Dear all,

I am currently implementing precise orbit determination for LEO satellites using GNSS carrier phase measurements.

And then calculated two types of linear combinations using GeometryFreeCombination and MelbourneWubbenaCombination classes for cycle-slip detection. I checked the results and found that the shapes of the two graphs were almost same (although at different scales), and also, the values seemed too large.

So I checked the code and found some questions.

For the geometry-free combination of phase measurements, the two frequency data are differenced in cycle unit (φGF = φ2[cycle] - φ1[cycle]), but I think the geometric distance term wouldn’t cancel unless the difference is taken after converting to meter unit.

And for the Melbourne-Wubbena combination, the difference between WL phase (cycle) and NL range (meter) is taken, but is there any problem with taking the difference between different units? This problem also applies to PhaseMinusCodeCombination and GRAPHICCombination.

The following is the result of the calculation after correcting the above problem.

I think there is no problem, but I would appreciate it if you could confirm that my understanding is correct.

Best Regards,

Hi @myu,

Welcome to the forum!
I’m not a GNSS expert at all but it does look like you found one or several bug and fixed them ! :slight_smile:
If this is the case, would you care to contribute your fixes ?
Maybe @bcazabonne and @luc who are far more knowledgeable than I am in navigation can answer you properly though.


Dear @MaximeJ

Thank you for your response.

My fixes are simple: convert the units of all phase measurements from cycles to meters when calculating the combination.

GF = λ1 * φ1 - λ2 * φ2
MW = (f1 * λ1 * φ1 - f2 * λ2 * φ2) / (f1 - f2) - (f1 * R1 + f2 * R2) / (f1 + f2)

Ri: range measurement [m]
φi: phase measurement [cycle]
λi: wavelength [m]
fi: frequency [Hz]

(reference: Combination of GNSS Measurements)

I would be grateful if you could give me your opinion on the above.

Thank you,

For the geometry-free, it looks like an ugly bug…
I’m surprise we never tested combination of measurements based on simulated measurements. That’s my fault…
For the MW combination, I’m not familiar with this method.


For Graphic and Phase minus Code, I also suspect they are bugs due to the fact the combinations are not performed in the same measurement units.
As you said, the fix is simple (multiplication by the wavelength). But we shall validate the measurements using simulated measurements.

@miyu could you open an issue?

Dear @bcazabonne

Thank you for your response.
I have opened the issue.

Thank you,

Great! Thank you!