Ambiguity Resolution

Ambiguity resolution and validation are perhaps the most popular GNSS-related research topics. A plethora of methods were developed for this purpose such as the popular ratio test, the difference test, the projector test, the W-test, etc. However, the techniques that worked for short-baseline RTK don’t perform as well for long-baseline RTK or PPP.


The main reason is the presence of the ionosphere. For short-baseline RTK, ambiguity residuals are only correlated with positioning errors. As the baseline length increases, satellite-dependent errors creep in and make the ambiguity validation process much more complex. Partial ambiguity resolution aimed at solving this problem, but knowing which satellites to select/discard is not always a simple task.


My preferred method for ambiguity resolution in kinematic applications is the so-called “BIE” approach. The first paper I know describing it was written by Blewitt [1989], although it was deemed unpractical at the time because of the heavy computational load. The basic idea consists of computing a weighted average of integer vectors. The outcome can be summarized as:

  • Poorly-defined solution = float solution
  • Precise solution = fixed solution
  • Otherwise = somewhere between the float and fixed solutions (generally!)

Hence, BIE offers a nice and smooth convergence to an ambiguity-fixed solution and is valid for short-baseline RTK or PPP. Be aware that BIE can go very wrong if your stochastic model is incorrect… but more on this topic in a subsequent post!



Blewitt, G. (1989). “Carrier-phase ambiguity resolution for the global positioning system applied to geodetic baselines up to 2000 km,” Journal of Geophysical Research, Vol. 94, No. B8, pp. 10187-10203. doi:10.1029/JB094iB08p10187.

Write a comment

Comments: 1
  • #1

    Simon Banville (Tuesday, 05 May 2015 21:35)

    Hi Denis,

    I don't know of any open-source code for BIE. I am currently using a modified version of the LAMBDA code originally provided by Delft University. In the search routine, I output a list of all "meaningful" integer vectors from which I compute the weighted average.