[FOSS-GPS] I always get "no double-differenced residual" message with RTKLIB

Jochen jochen.brunssen at web.de
Tue Oct 16 00:19:23 PDT 2012

Hello, I can't seem to get a float or fix solution with RTKLIB and instead
always get the error message "no double-differenced residual".

I use a LEA6-T as Rover with RXM-RAW and RXM-SFRB messages enabled and
running at 5 Hz.
For the base station I use a Magellan MB 500 located on the roof of the
building, sending the RTCM 3.1 messages 1004 and 1012 for observation data
and 1006 and 1033 as station position / antenna information.
I use the newest RTKLIB 2.4.1 and installed the patches 1 to 7.

I've set RTKLIB to Kinematic mode and use options that work for other
people, which are mostly the default settings but disabling the
ionosphere/troposphere corrections. I've also set the base station position
to use the RTCM Antenna position.

When I tried to find out what is wrong i enabled Level 5 debug tracing and
checked in the source code.
Here I think I found the reason why i get the error message (Line 1348 in
rtkpos.c, happens when the result of ddres is <1).

In the function ddres the double-differenced residuals are created, but most
of the function is skipped for me, because the function validobs always
seems to return false.

if (!validobs(iu[j],ir[j],f,opt->nf,y)) continue;

The function validobs is defined here:

static int validobs(int i, int j, int f, int nf, double *y)
    return y[f+i*nf*2]!=0.0&&y[f+j*nf*2]!=0.0&&

f goes from 0 to 2, opt->nf is 1.
iu and ir can be seen here:
4 ( 0) sat=  3 iu= 0 ir=10
4 ( 1) sat=  6 iu= 1 ir=11
4 ( 2) sat= 16 iu= 3 ir=13
4 ( 3) sat= 18 iu= 4 ir=14
4 ( 4) sat= 21 iu= 6 ir=16
4 ( 5) sat= 30 iu= 9 ir=19

And y is this:
4 y=
 -23012251.828 -21675375.492         0.000 -21310832.789 -23640048.910        
0.000 -21318045.204         0.000         0.000 -20762161.510
   -227313.046   -110335.098         0.000   -333592.475   -194475.586        
0.000   -335261.293         0.000         0.000   -376683.126

So y is an array with 20 values (index 0 to 19). 

Now the problem is this: y[f+j*nf*2]!=0.0
j is here the value ir for each satellite. As shown above ir goes from 10 to
19. Because it is multiplied by 2 the result is always >= 20. And as the
array y has a maximum index of 19, the function always tries to read a value
that is out of bounds, which is most likely 0. So the function validobs
always returns false.

I've uploaded the trace file part for one step here:

I can also upload the logged data from the streams in raw or converted into
obs/nav files.

I hope you can help me get this to work :)

View this message in context: http://open-source-gps-related-discussion-and-support.1099874.n2.nabble.com/I-always-get-no-double-differenced-residual-message-with-RTKLIB-tp7572550.html
Sent from the Open Source GPS-related discussion and support mailing list archive at Nabble.com.

More information about the FOSS-GPS mailing list