[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<nf||(y[f-nf+i*nf*2]!=0.0&&y[f-nf+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:
http://pastebin.com/kFjQcsa4
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