goGPS-Project/goGPS_Java

Introduction of LAMBDA method for integer ambiguity resolution

Opened this issue · 36 comments

It would be useful to add the use of the LAMBDA method to resolve integer values for phase ambiguities after the Kalman filter update on phase double differences. Reference code in goGPS MATLAB:

http://sourceforge.net/p/gogps/code/HEAD/tree/trunk/positioning/kalman/goGPS_KF_DD_code_phase_loop.m#l843

http://sourceforge.net/p/gogps/code/HEAD/tree/trunk/positioning/lambda/lambdafix.m

The latest MATLAB implementation of LAMBDA (v3) can be downloaded from here: http://gnss.curtin.edu.au/research/lambda.cfm

Not sure if a Java implementation of LAMBDA already exists somewhere...

Question: Lambda takes several epochs to converge, as far as I remember, or can it be applied to a single epoch?

[Update] @ege010 has already replied #19 (comment)

Also, how does the current java code deal with phase ambiguities? I see the Kalman filter is implemented and appear to deal with phase double differenced

Typically it takes some epochs to converge, unless the baseline is very
short.
Recently I also implemented the stand-alone version of the goGPS Kalman
filter; both double-differenced phase ambiguities and stand-alone phase
ambiguities are added as state variables in the two versions of the Kalman
filter. Anyway, LAMBDA should be applied to double-differenced ones.

As we were already discussing in another thread, phase ambiguities are kept
as float values in the Kalman filter; goGPS MATLAB version applies then the
LAMBDA algorithm at each epoch separately, after the Kalman filter update
step (see here, from line 843:
http://sourceforge.net/p/gogps/code/HEAD/tree/trunk/positioning/kalman/goGPS_KF_DD_code_phase_loop.m#l807
).

2016-01-13 22:03 GMT+01:00 Emanuele Ziglioli notifications@github.com:

Also, how does the current java code deal with phase ambiguities? I see
the Kalman filter is implemented and appear to deal with phase double
differenced


Reply to this email directly or view it on GitHub
#21 (comment)
.

Thanks @ege010 , I now understand the concept of float values for ambiguities, it comes from Tenuissen's papers.
So, just to make it clear, Lambda allows you to converge those ambiguities more rapidly, is that right?
At what point do you actually round those values up to their integer part?

I've been experimenting myself with float ambiguities, I was curious to see if I could solve 20ms ambiguities by treating them as state variables. Not having a master station, I simply added equations that linked the N(k) ambiguities to that 20ms length.
Then I would solve the system by keeping the position constant.
Unfortunately I didn't get the result I was hoping for because the N(k) values would converge to very small values (less than 0.5), so either I was doing something wrong or methods like Lambda do something more sophisticated I don't understand yet.

Sorry, it took a bit long to reply...

The EKF itself makes the float ambiguities converge. The Lambda method does
not accelerate this process, but it allows to "round" them to the
(hopefully correct) integer value in an optimal way (Integer Least Squares).
In the goGPS MATLAB implementation, the Lambda algorithm is applied at
every epoch
after the EKF update step, without touching the EKF variables
themselves (i.e. the EKF continues independently from the Lambda results,
and "sees" just the float estimates).

2016-01-14 22:38 GMT+01:00 Emanuele Ziglioli notifications@github.com:

Thanks @ege010 https://github.com/ege010 , I now understand the concept
of float values for ambiguities, it comes from Tenuissen's papers.
So, just to make it clear, Lambda allows you to converge those ambiguity
more rapidly, is that right?
At what point do you actually round those values to their integer part?

I've been experimenting myself with float ambiguities, I was curious to
see if I could solve 20ms ambiguities by treating them as state variables.
Not having a master station, I simply added equations that linked the N(k)
ambiguities to that 20ms length.
Then I would solve the system by keeping the position constant.
Unfortunately I didn't get the result I was hoping for because the N(k)
values would converge to very small values (less than 0.5), so either I was
doing something wrong or methods like Lambda do something more
sophisticated I don't understand yet.


Reply to this email directly or view it on GitHub
#21 (comment)
.

Thanks Eugenio!

Could you perhaps write a wiki/tutorial page about how to define a model for the Kalman filter?
I'm thinking I'd like to track parameters such as the coarse time error with the Kalman filter.
I've been able to process sets down to 3 satellites in the coarse time case! Although I simply apply the offset I've computed from the previous set, while the Kalman filter would be perfect to track this slow changing parameter.

Are there others methods to resolve carrier phase integer ambiguity resolution? is there a relation among lambda and DD?

@Reimobar I'm not an expert here, @ege010 ?

@ZiglioNZ @ege010 Good Afternoon! I am Reinaldo , i am a master student at Beihang University in China and I am really interesting about lambda method.

Hi @Reimobar , sorry it took some time to reply!
On Navipedia you can find some basic information about ambiguity resolution here: http://www.navipedia.net/index.php/Carrier_Phase_Ambiguity_Fixing, and in particular, I would take a look at references cited here: http://www.navipedia.net/index.php/Carrier_phase_ambiguity_fixing_with_two_frequencies#cite_note-3

Another invaluable source of information is the Bernese manual, that is freely downlodable here: http://www.bernese.unibe.ch/docs50/DOCU50.pdf - the chapter about ambiguity resolution starts at page 167 (page 195 of the PDF).

If you are particularly interested about the LAMBDA method, there is also this document about implementation aspects: http://www.citg.tudelft.nl/fileadmin/Faculteit/CiTG/Over_de_faculteit/Afdelingen/Afdeling_Geoscience_and_Remote_Sensing/pubs/lgr12.pdf

@ege010 thanks for the information, do you use MATLAB to prove Lambda method?

thank you, have your ever heard about ARCE (ambiguity resolution constrain equation) to solve ambiguity?
I need to work with two signal GPS and Beidu, and use these two method (lambda and ARCE). do you where can I get the information about both signal in RINEX format? thank you for you time.

@ege010 thank you, have your ever heard about ARCE (ambiguity resolution constrain equation) to solve ambiguity?
I need to work with two signal GPS and Beidu, and use these two method (lambda and ARCE). do you know where can I get the information about both signal in RINEX format? thank you for you time. the name of my investigation is Carrier phase integer ambiguity resolution for GNSS single frequency RTK

@ege010 Good afternoon Sir, I was checking your code using MAtlab2017 and I had a problem. I cant find getID in matlab to run it well.

working with getepoch

Hi @Reimobar ...I changed the name of a function in GPS_Time, and I did not propagate it everywhere, now I should have fixed the problem, see: goGPS-Project/goGPS_MATLAB@6396fb3. If you find any bug in the MATLAB code please add an issue here on github, it's very useful for us! Thanks for the report!

@Reimobar I work with Eugenio, unfortunately, we only use the lambda methods simply because we are not enough people to develop all the ideas that we have for goGPS ;-) ...up to now, we have no code for other fixing approaches.

@ege010 @clicat Good Afternoon, sorry for the too many questions I'm doing, is jut because I want to understand everything about y try to use it. I have 3 questions about this software to ask:

  1. I want to make it works with a single frequency, is it posible to works with a RTK single frequency?
  2. How Algorithms are working in this Software?
  3. Can I use Matlab2007 or it is prefer to use Matlab2009?

Thank you, I'm working on it.
REinaldo

@ege010 @clicat Good Afternoon, sorry for the too many questions I'm doing, is jut because I want to understand everything about y try to use it. I have 3 questions about this software to ask:

  1. I want to make it works with a single frequency, is it posible to works with a RTK single frequency?
  2. How Algorithms are working in this Software?
  3. Can I use Matlab2007 or it is prefer to use Matlab2009?
    Thank you, I'm working on it.
    REinald

Hi @Reimobar!

  1. the software was born to work on single frequency low-cost receiver in real time, but I cannot even recall the last time I tried to use it for that purpose.
  2. the main "Algorithm" used for the processing is, for a historical reason, the Kalman filter (https://en.wikipedia.org/wiki/Kalman_filter) goGPS was born to show to the students how the KF works.
  3. I think that with the latest version of the code such an old compatibility died, probably a long ago! For the development of the updates, we are currently using MATLAB 2016a and MATLAB 2017a

@Reimobar I'm not using Skype very often but you can try to contact me, my username is "gatti.andrea"

@clicat thank you very much. Andrea from Cernobbio, Italy?

@clicat hello sir, I added you I think so by skype

Hello i have download the script for LAMBDA algorithm in solving the phased ambiguity. However i cant run it seems it required at least 2 parameter which is known as float ambiguity solution and variance-covariance matrices. Can someone help me how to calculate these two parameters?

I try to find some article and journal on how to calculate these two parameter but still not found. Most of the article and journal skip this step so it makes me cant understand the step to resolve the ambiguity.

hi, these codes didn't solve my problem, do you know any other matlab code?

I am using 3 gnss receiver and 3 antenna

this project is not active anymore, have you tried GoGPS MATLAB? or perhaps RTK-LIB