From cd2b42b1ce9039860ee439566498020618e51cc6 Mon Sep 17 00:00:00 2001 From: Tim Everett <tim.everett3@gmail.com> Date: Wed, 18 Dec 2019 11:44:22 -0700 Subject: [PATCH] - Add option to create CSV file of raw measurements in RTKCONV (set trace level to 1) - Move RTKCONV trace file to output file location and change name to match output file name - Minor fixes, improvements, and cleanup --- app/convbin/convbin.c | 2 +- app/rtkconv/convmain.cpp | 7 ++++--- app/rtkconv/convmain.dfm | Bin 19082 -> 36939 bytes src/pntpos.c | 2 +- src/rinex.c | 11 +++++++++++ src/rtkcmn.c | 4 ++++ src/rtklib.h | 11 ++++++----- src/rtkpos.c | 16 ++++++++++++++-- 8 files changed, 41 insertions(+), 12 deletions(-) diff --git a/app/convbin/convbin.c b/app/convbin/convbin.c index d3c7e70..3ae7410 100644 --- a/app/convbin/convbin.c +++ b/app/convbin/convbin.c @@ -561,7 +561,7 @@ int main(int argc, char **argv) fprintf(stderr,"input format can not be recognized\n"); return -1; } - sprintf(opt.prog,"%s %s",PRGNAME,VER_RTKLIB); + sprintf(opt.prog,"%s %s %s",PRGNAME,VER_RTKLIB,PATCH_LEVEL); sprintf(opt.comment[0],"log: %-55.55s",ifile); sprintf(opt.comment[1],"format: %s",formatstrs[format]); if (*opt.rcvopt) { diff --git a/app/rtkconv/convmain.cpp b/app/rtkconv/convmain.cpp index eede251..369f9af 100644 --- a/app/rtkconv/convmain.cpp +++ b/app/rtkconv/convmain.cpp @@ -38,7 +38,6 @@ TMainWindow *MainWindow; #define PRGNAME "RTKCONV" // program name #define MAXHIST 20 // max number of histories #define TSTARTMARGIN 60.0 // time margin for file name replacement -#define TRACEFILE "rtkconv.trace" // trace file static int abortf=0; @@ -788,7 +787,7 @@ void __fastcall TMainWindow::ConvertFile(void) AnsiString OutFile9_Text=OutFile9->Text; int i,format,sat; char file[1024]="",*ofile[9],ofile_[9][1024]={""},msg[256],*p; - char buff[256],tstr[32]; + char buff[256],tstr[32],tracefile[1024]; double RNXVER[]={2.10,2.11,2.12,3.00,3.01,3.02,3.03}; FILE *fp; @@ -927,7 +926,9 @@ void __fastcall TMainWindow::ConvertFile(void) Message ->Caption=""; if (TraceLevel>0) { - traceopen(TRACEFILE); + strcpy(tracefile,ofile[0]); + strcat(tracefile,".trace"); + traceopen(tracefile); tracelevel(TraceLevel); } // convert to rinex diff --git a/app/rtkconv/convmain.dfm b/app/rtkconv/convmain.dfm index 2014eaa50577a7d5dec2f5e9cc538cb58c4e6fd6..96a5f160616c083279e88cc59837221722d1d602 100644 GIT binary patch literal 36939 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 literal 19082 zcmeHP&2J<}74PY>r{}}=dN*q}2?Rz+tdfv;$K&122Lfb|y=y1_TF>lygM^@GrsHY0 z-EDf>UOO^Mq`;8_7Z4&BBrb>pLL4|C;1Hqw1)xZX3lb9I1_*In-mCYj`eS;=UN6~L zXhwE-SJkgx)qC};kABtN4~kl2b#8fWYk6&9eM_rM?!BgIjg1?XQe)M$-7VW~d-sds z<;aTlW}s`?hPSJ0rFqY9TmEv(bGxOnrd>bm2G-81<?a=m_NwjLJN8?aX4K5x!1mmn zvDtXNw!U^}tmfF38!TD&b|=VwJ5!?Ymfa3I*$*?LHP7*U!)Q5M9Xqh5Y9KxEp)x^t zdeuDOY(LAy6Kq!{T#V&FB~b9+GGjM9H<+$<OuuUd#<_*X8*{f;8egj|&282f8%0VL zWsgDGLi2`o5R^m$N!R~f5TP}5$I9gzX2;txDPui2bgYs#vF@~MzGVj1I+`Y*-|)IN zYHv*Jdi9oXS#Aw<xBOhaWja<nZ>+mD$Lm@K2=;fxWgeo02m?ezoVd=dyY-HD-^gPW zUX5?q2bR;_0Q<YGj{fx`)|G2HuH_mVrfWGlah#o;bL?%fL(o|@{cYRr7N{LF*pAt? z%qW@YkC_|`cxsG+)1tjIB^kta&y35^CbpoSnULXmF9^IHJu@oGGe%7Z@Wpv+-*T2+ z*Yb^gbAQvcyH=Yb*Z05@MxnXC;@!7=tDR{2lQ&qd<=phm!-s0B$qmzorkFQd_qKg+ z&u!<66oW0C&o|7bXhK~FW3HG@%Q051Zr9wl$acEu13H`T*UEHLtbE>dh}Q*Sj2$S- z$Ok61etvE*@aoVz@(GnoR0Yum^0^iB(A&do4rMDX9_%`H%MP#^M#g1`TJM*c2^pbi zpp7-^yO!0S--Cv6^Yei_*93_|gY0ia^XsgFen~dI)W9$u(ZH$$XTCgg!!d)xN82vZ zRuH|zZrwA+W!1r^t$SlqQDkTKcNtBK6TUi-@cN5MzGussL4?<iBfR!MB783;LmFma zSlG0>z!_sq^y(^wBs)ujqs#6M+hK<0V+{R)Cfj#hHR#iujoRu9<;~ii^5)!D+4IYr z%WI2w%j@%Xw5X6cCXUcklY*DoivLUz{G5_=Wo_=xm7922!ow{*tiYjcy6tj3QV!K0 zM>muCxkvo`9F?PgwzvK{f@^V_p98LNeec-T{TX8Wk4f4VOPi9?rijzUo6g~GXL`X5 z%;LPRX<vf>`BgmP?>hWH3;*N%pV6L#D^1IDx(M*$!O4Ew$zTr<7Zsm+jTpiWkP10t zxOd_|l{1M`35km&PKi4Pmq=E@zVeh{xBzq#rvxM}VmJs4_@UH9?tZ}&<J8!7F~LVM zgbn6wHOASUA!lW)N2x$;pmu_`<u;_NzO9$QDS3$uk1S6Krdpm#9%LHuV|^19PYpgY zXR9aR?A0h|vp>{^q#csBhrW-Kv{z3++SwRs-yM<`8%T_i(E*IcFdAAYRgAU*mpb4m zDIreDOJsOtc}g(V@>KF5(|{jplc;sS;E8elRtK{uAnmmnX@5Q>EjG}Qv~dPMPSRdG z0co$tNc;OCX@{hZ6Ba{{leE{FwCv{~{{#397HnToRVV+6bU)mZ4ujBrG70G2y`T&^ ztXAOphl!iI9NhT5ZXFWwe?m@k>1{jLD^9xC)YMR-{3qyKFU307pN5@l*ttI5&h=6n zY0-&G4odXPMJcOK4(}F+YnUF&ex%dEg%}&t_?mDezZ_+3_8-GRb~woPF!r&oU|v1} zX<vzv*5IvPeYpMcAnG?D*8%WZQCc+Q(7{0_i5wr<!SM={w$P|`tk%7G@1Vq+b&IY^ zK4g7FJeTkzIl^9)YvuFdcIY{^N}ixKJLDcDnRZl2vhML}BNS|i%2@5fXgz?3H;h87 z$uVJ(g@-JXHXgaiH%?V#u78n6gEsXGY8s=S{wvz&lnbh-r0u5Eu5WgFdivyB`2C-S z`Oh)W!bCUnLn~%Nl~m2S;YJ&aZ9B*_9oT$Nh+S;nw#|Mwe9j^iX=qwJD>pV}<=wON ztfgdDW}wKbHZjukPHGyE*xPA(Kw{pCrZ(`Y4XWJcUsY`Y?1IOHjEPov!S{9-y!-Bo z-3`WNpazej1p38Lvr&8&sAIa@u<1{G-4xO^+5C8q$OhvL7$ShGyME>va9%NBGE#Zw zK#E?x8Op?#o1te;tzw#5a^oyTEq*S6)soL8oH@1V2{n8MC(>FogN9n#Q{h4UJA(%C zF=euzK|J1}StRvJxl5DYE8!816l3!~5BCiz;q3K|31yLpwdI~b>Xb>F0c`DG46^nG zCHoj_vq-YG++Ikx_7kbr<_!wAwv=%8tbI{gBw}sp%ucm7d9m5r9}Kegl#+dnwOJ%t zTl&S*t^J8qYqMvatt};-J!@Z57KvC}dSN3oY4jPkQ8D}TVkY}uIQ#dXGquQ^NuuPO z8MbIatr^9H&1<x)r&^=wO07N(ouk62B+<+|uMDyap+e!LpN%L$S)~GUV8b<EL}>Od ztv6=4{%Q`nbVk;EBcX{@%?HgO<j&?^_UA#p?8#8FYSPrzB#We8CLQGIz3i#fUdAqV z?qyQK+3RIbD~m*WnRLg7Js@(^MSd-|_P+*M`;$s`AF9i>JBuW1OHWz4wLg_=ZT7XX zwWWl!XYFT{MIzRgewkEjlS78BU6B5m@J=)w2R^N2A7gD6N!FGwo^)$}Ce_;PBw}kz z31`pRWo40wwWUKL{s{QY;77oFUwQcapeMi|+ba))o&ZlglHIU(tYtT#JI;4$2AJX* zU{v05hMSd{Zen*5-v&S#e4qVR^l5SZycBRwO(8wolenED1n_{{^R59V^37YB>L+(U zA4a^qh2nkMaq&DlioWgIto;XZ?G0J^i1tecIEb3~#*MgZXV+5^<$%Y>4{k&k0<xMr zQqXy2h4YxBEV7iJy}40uJQsFYP0{mQC^t46<uLw@m}BSyH`$ylYf9BLl$;sCw|jEM zYNb-SQkj9j!a8m(qX)qlC!rj~4t`s>7V;E-dx2D26b*cyi&GBZORBgmyt0+m-p#^G zR$1*^Vd477mT&GB#@H2MyW5Kg#sw){tW89mbfpL-msrWKh*G7JFAY*MOG@S|l~=`I zQpKg2bQPCoSjFu3Xpj9AI*#<!5v50U3<q^#-$l1g)XDxdzQMmORSmf#SW$)?J<J(Z z%n^-=LQ{CdeTfT_HXTTuoFdLl<;qO;%4{!js_9mJqbjZX_fuQdNaGC1joOoL^ocX9 z-~%d9Dmaidc_vMD_SI{zz+Vq(`lz?0)VofD$0<lt=ueu2k_pnlu+5~Y$H&Dl_L3$K zV9Vb(ov=fOo+iN-l*Vj<a@ZefVE<Ip!zL9YE&8G?W~%>fREZ3msf;hfOP$^6df-DZ z?`CqDN^YbwUAdOaR;Fk0P{nXngs<f?Gr7#QoIX>5e>l&=`FaJm$wCVhux2=RvkAT* zH^Ho|Ti9<#5Uqx(&<>&dC}{`w9?6nuj^u)RjgTUGoV3@gSE25)mnqpnEGU}o$aTbr z>PGHU$@l-FuR7+M`)i(SC0_a)H0k5bVC=Q8tNhv*+zZ+P%)tCopU+d_GjVI)mDYSl z&0wSO3ZNgH>Gz!?`%Qf>!;PrkO<0Ig`65?o!2e^MQZ4l&v`cETiaaqc?3W|P9lLA8 zVk`6=^ZT2Azyp<JZxI*_uWRpH3I58v&=mgWFLQ>oPGRjG4gQoNdoMVRa0AdOxKwms zTmpRz4$xFrc@lb%jObA*)EB1^edQ$(DY#Tb3^xGrkhqY-S+yX;hk%%HDcoHbpEl^y z1oK;3w+!HJ=`v@4E!dBpzHh(%HjIdHOc;=x^ZobVhh#V^oQjE=6+r!dF&yOvD9EE9 zWrO$-rxM_T65t5eDjPtteyT)Bqug*L93>%!qEzld@&F3Sloc}2kAjqq<>9IS4^k08 zCz1z85C&P`sA34fI10c~;Z#gIE|IK)T1el}CoP^~Ba$ZQYXGq~9FNuwIxQOpP&a=W z!DoTD%Kl38q@4%>vFeo|h*4<1ibnN5{{!fU!9|6sa>Eiu=_n6yP*%SmNnu<xH)K#j zl7dHy;!IRTR84su!%^<2JXLkZ5rSd~2iFwj0_miVlpIB*<5Y&kMTEDZ2W5=enMPW# z%cQ+4oC^a;TiUqndoB2E2k<uR9pNJ=q7)F9Qp)0i^e*im+c!oRF9SL(AiSN&0#Fhc zpp_cyyOz6Pn~t|#3@>x=aRvM+%pc|)r~K^m)6YM51cxL1JVUvP5q{9xsbZwKpoCeO zFe?*gkJh~XU@owPknP<rCcx=vujzOP2;XZSU>ux|>U+DEPmZkRWlV!AVH%u{maHAS zyW4?pvS32fb}<1?N3WUtCb%!2pZ*33htrYz)&s_S&F%|O^>xeu*I&SEgD1Vxg!kr> z-L^I@v%T&*hvVLxYaZ=w!7CJyNG>|~E(+XfYBZ<*m2R~D0`!X7t`yp?%ElY>;X5D+ z`^m3a^s5=y9lu8bb$88utos@sHc$bGKn2$Du)$dTmIZ>h8GRFh7(mcX2I03Z5Y%DN z5`r**pd|+3w=fX&O$OaU5C#x*i$UUB831w^w1OZEAZUd_HI~$3Pz^yCKv0cA%M7v^ zw2UAOAZYohK0jA4uXx*7qi$0$2TqU%AL%$+fscZ4nqvtD!3okJ{!tqDy|8h${{mdn BU*-S+ diff --git a/src/pntpos.c b/src/pntpos.c index 630cee0..274e4bc 100644 --- a/src/pntpos.c +++ b/src/pntpos.c @@ -309,7 +309,7 @@ static int valsol(const double *azel, const int *vsat, int n, /* chi-square validation of residuals */ vv=dot(v,v,nv); if (nv>nx&&vv>chisqr[nv-nx-1]) { - sprintf(msg,"chi-square error nv=%d vv=%.1f cs=%.1f",nv,vv,chisqr[nv-nx-1]); + sprintf(msg,"Warning: large chi-square error nv=%d vv=%.1f cs=%.1f",nv,vv,chisqr[nv-nx-1]); /* return 0; */ /* threshold too strict for all use cases, report error but continue on */ } /* large gdop check */ diff --git a/src/rinex.c b/src/rinex.c index a55abc5..9761b3b 100644 --- a/src/rinex.c +++ b/src/rinex.c @@ -2200,6 +2200,17 @@ extern int outrnxobsb(FILE *fp, const rnxopt_t *opt, const obsd_t *obs, int n, case 'S': outrnxobsf(fp,obs[ind[i]].SNR[k]*0.25,-1,-1); break; } } + + /* set trace level to 1 generate CSV file of raw observations */ + if (gettracelevel()==1) { + trace(1,",%16.2f,%3d,%13.2f,%13.2f,%9.2f,%2.0f,%1d,%1d,%13.2f,%13.2f,%9.2f,%2.0f,%1d,%1d\n", + obs[0].time.time + obs[0].time.sec, obs[ind[i]].sat, + obs[ind[i]].P[0], obs[ind[i]].L[0], obs[ind[i]].D[0], + obs[ind[i]].SNR[0]*0.25, obs[ind[i]].LLI[0], obs[ind[i]].qualL[0], + obs[ind[i]].P[1], obs[ind[i]].L[1], obs[ind[i]].D[1], + obs[ind[i]].SNR[1]*0.25, obs[ind[i]].LLI[1], obs[ind[i]].qualL[1]); + } + if (opt->rnxver>2.99&&fprintf(fp,"\n")==EOF) return 0; } diff --git a/src/rtkcmn.c b/src/rtkcmn.c index c94ef3b..da621ba 100644 --- a/src/rtkcmn.c +++ b/src/rtkcmn.c @@ -2946,6 +2946,10 @@ extern void tracelevel(int level) { level_trace=level; } +extern int gettracelevel(void) +{ + return level_trace; +} extern void trace(int level, const char *format, ...) { va_list ap; diff --git a/src/rtklib.h b/src/rtklib.h index f6c39a4..2c6a4a0 100644 --- a/src/rtklib.h +++ b/src/rtklib.h @@ -80,21 +80,21 @@ extern "C" { #define MAXFREQ 6 /* max NFREQ */ -#define FREQL1 1.57542E9 /* L1/E1/B1 frequency (Hz) */ +#define FREQL1 1.57542E9 /* L1/E1 frequency (Hz) */ #define FREQL2 1.22760E9 /* L2 frequency (Hz) */ #define FREQE5b 1.20714E9 /* E5b frequency (Hz) */ #define FREQL5 1.17645E9 /* L5/E5a frequency (Hz) */ #define FREQE6 1.27875E9 /* E6/LEX frequency (Hz) */ -#define FREQE5ab 1.191795E9 /* E5a+b/B2 frequency (Hz) */ +#define FREQE5ab 1.191795E9 /* E5a+b frequency (Hz) */ #define FREQs 2.492028E9 /* S frequency (Hz) */ +#define FREQ1_CMP 1.561098E9 /* BeiDou B1 frequency (Hz) */ +#define FREQ2_CMP 1.20714E9 /* BeiDou B2 frequency (Hz) */ +#define FREQ3_CMP 1.26852E9 /* BeiDou B3 frequency (Hz) */ #define FREQ1_GLO 1.60200E9 /* GLONASS G1 base frequency (Hz) */ #define DFRQ1_GLO 0.56250E6 /* GLONASS G1 bias frequency (Hz/n) */ #define FREQ2_GLO 1.24600E9 /* GLONASS G2 base frequency (Hz) */ #define DFRQ2_GLO 0.43750E6 /* GLONASS G2 bias frequency (Hz/n) */ #define FREQ3_GLO 1.202025E9 /* GLONASS G3 frequency (Hz) */ -#define FREQ1_CMP 1.561098E9 /* BeiDou B1 frequency (Hz) */ -#define FREQ2_CMP 1.20714E9 /* BeiDou B2 frequency (Hz) */ -#define FREQ3_CMP 1.26852E9 /* BeiDou B3 frequency (Hz) */ #define EFACT_GPS 1.0 /* error factor: GPS */ #define EFACT_GLO 1.5 /* error factor: GLONASS */ @@ -1564,6 +1564,7 @@ EXPORT void tracehnav(int level, const nav_t *nav); EXPORT void tracepeph(int level, const nav_t *nav); EXPORT void tracepclk(int level, const nav_t *nav); EXPORT void traceb (int level, const unsigned char *p, int n); +EXPORT int gettracelevel(void); /* platform dependent functions ----------------------------------------------*/ EXPORT int execcmd(const char *cmd); diff --git a/src/rtkpos.c b/src/rtkpos.c index 9ed662f..f1e8f2c 100644 --- a/src/rtkpos.c +++ b/src/rtkpos.c @@ -413,6 +413,7 @@ static double varerr(int sat, int sys, double el, double snr_rover, double snr_b frq=f%nf;code=f<nf?0:1; + /* extended error model, not currently used */ switch (sys) { case SYS_GPS: i = 0; break; case SYS_GLO: i = 1; break; @@ -420,7 +421,6 @@ static double varerr(int sat, int sys, double el, double snr_rover, double snr_b default: i = 0; break; } - /* extended error model, not currently used */ if (code && opt->exterr.ena[0]) { /* code */ a = opt->exterr.cerr[i][ frq * 2]; b = opt->exterr.cerr[i][1+frq * 2]; @@ -431,6 +431,7 @@ static double varerr(int sat, int sys, double el, double snr_rover, double snr_b b = opt->exterr.perr[i][1+frq * 2]; if (sys == SYS_SBS) {a *= EFACT_SBS; b *= EFACT_SBS;} } + else { /* normal error model */ if (opt->rcvstds&& obs->qualL[frq]!='\0'&&obs->qualP[frq]!='\0') { /* include err ratio and measurement std (P or L) from receiver */ @@ -441,7 +442,11 @@ static double varerr(int sat, int sys, double el, double snr_rover, double snr_b switch (sys) { case SYS_GPS: fact *= EFACT_GPS; break; case SYS_GLO: fact *= EFACT_GLO; break; + case SYS_GAL: fact *= EFACT_GAL; break; case SYS_SBS: fact *= EFACT_SBS; break; + case SYS_QZS: fact *= EFACT_QZS; break; + case SYS_CMP: fact *= EFACT_CMP; break; + case SYS_IRN: fact *= EFACT_IRN; break; default: fact *= EFACT_GPS; break; } @@ -1684,6 +1689,7 @@ static int resamb_LAMBDA(rtk_t *rtk, double *bias, double *xa,int gps,int glo,in prcopt_t *opt=&rtk->opt; int i,j,ny,nb,info,nx=rtk->nx,na=rtk->na; double *D,*DP,*y,*Qy,*b,*db,*Qb,*Qab,*QQ,s[2],var=0; + double QQb[MAXSAT]; trace(3,"resamb_LAMBDA : nx=%d\n",nx); @@ -1722,10 +1728,16 @@ static int resamb_LAMBDA(rtk_t *rtk, double *bias, double *xa,int gps,int glo,in matmul("NN",ny,ny,nx,1.0,DP,D ,0.0,Qy); /* Qy=DP'*D */ /* phase-bias covariance (Qb) and real-parameters to bias covariance (Qab) */ - for (i=0;i<nb;i++) for (j=0;j<nb;j++) Qb [i+j*nb]=Qy[na+i+(na+j)*ny]; + for (i=0;i<nb;i++) { + QQb[i]= Qy[na+i+(na+i)*ny]; + for (j=0;j<nb;j++) { + Qb [i+j*nb]=Qy[na+i+(na+j)*ny]; + } + } for (i=0;i<na;i++) for (j=0;j<nb;j++) Qab[i+j*na]=Qy[ i+(na+j)*ny]; trace(3,"N(0)= "); tracemat(3,y+na,1,nb,7,2); + trace(3,"Qb = "); tracemat(3,QQb,1,nb,7,5); /* lambda/mlambda integer least-square estimation */ /* return best integer solutions */ -- GitLab