Skip to content
Snippets Groups Projects
Commit f07240d5 authored by Tim Everett's avatar Tim Everett
Browse files

- Additional improvement for outlier handling in RTK/PPK solutions

parent 171867dc
No related branches found
No related tags found
No related merge requests found
...@@ -1216,7 +1216,7 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con ...@@ -1216,7 +1216,7 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con
prcopt_t *opt=&rtk->opt; prcopt_t *opt=&rtk->opt;
double bl,dr[3],posu[3],posr[3],didxi=0.0,didxj=0.0,*im,icb,threshadj; double bl,dr[3],posu[3],posr[3],didxi=0.0,didxj=0.0,*im,icb,threshadj;
double *tropr,*tropu,*dtdxr,*dtdxu,*Ri,*Rj,lami,lamj,fi,fj,df,*Hi=NULL; double *tropr,*tropu,*dtdxr,*dtdxu,*Ri,*Rj,lami,lamj,fi,fj,df,*Hi=NULL;
int i,j,k,m,f,frq,code,nv=0,nb[NFREQ*4*2+2]={0},b=0,sysi,sysj,nf=NF(opt); int i,j,ii,jj,k,m,f,frq,code,nv=0,nb[NFREQ*4*2+2]={0},b=0,sysi,sysj,nf=NF(opt);
trace(3,"ddres : dt=%.1f nx=%d ns=%d\n",dt,rtk->nx,ns); trace(3,"ddres : dt=%.1f nx=%d ns=%d\n",dt,rtk->nx,ns);
...@@ -1363,9 +1363,11 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con ...@@ -1363,9 +1363,11 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con
else rtk->ssat[sat[j]-1].resc[frq]=v[nv]; /* carrier phase */ else rtk->ssat[sat[j]-1].resc[frq]=v[nv]; /* carrier phase */
/* if residual too large, flag as outlier */ /* if residual too large, flag as outlier */
k=IB(sat[j],frq,opt); ii=IB(sat[i],frq,opt);
/* adjust threshold by error stdev ratio unless phase bias just initialized*/ jj=IB(sat[j],frq,opt);
threshadj=code||(rtk->P[k+rtk->nx*k]>SQR(rtk->opt.std[0]/2))?opt->eratio[frq]:1; /* adjust threshold by error stdev ratio unless one of the phase biases was just initialized*/
threshadj=code||(rtk->P[ii+rtk->nx*ii]>SQR(rtk->opt.std[0]/2))||
(rtk->P[jj+rtk->nx*jj]>SQR(rtk->opt.std[0]/2))?opt->eratio[frq]:1;
if (opt->maxinno>0.0&&fabs(v[nv])>opt->maxinno*threshadj) { if (opt->maxinno>0.0&&fabs(v[nv])>opt->maxinno*threshadj) {
if (!code) { if (!code) {
rtk->ssat[sat[j]-1].vsat[frq]=0; rtk->ssat[sat[j]-1].vsat[frq]=0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment