1、在大部分北斗PPP定位都会加一个北斗多路径程序BDmultipathCorr,用于卫星伪距多路径,是卫星质量不同信号失真产生的。
此程序建议只能用于北斗二代上,相关文献参考BeiDou satellite-induced code pseudorange variations: diagnosis and therapy 2015年发表在GPS solution的论文,基于高度角的伪距改正模型,对IGSO 卫星和MEO 卫星的伪距观测值改正,但是如果用于北斗三会影响北斗三的精度尤其是U方向,因此为了提高GAMP程序应该次处加上if (prn <= 5 || prn >= 19) continue;
extern void BDmultipathCorr(rtk_t *rtk, obsd_t *obs, int n)
{
int i,j,sat,prn,b;
double dmp[3],elev,a;
const static double IGSOCOEF[3][10]={ /* m */
{-0.55,-0.40,-0.34,-0.23,-0.15,-0.04,0.09,0.19,0.27,0.35}, //B1
{-0.71,-0.36,-0.33,-0.19,-0.14,-0.03,0.08,0.17,0.24,0.33}, //B2
{-0.27,-0.23,-0.21,-0.15,-0.11,-0.04,0.05,0.14,0.19,0.32}, //B3
};
const static double MEOCOEF[3][10]={ /* m */
{-0.47,-0.38,-0.32,-0.23,-0.11,0.06,0.34,0.69,0.97,1.05}, //B1
{-0.40,-0.31,-0.26,-0.18,-0.06,0.09,0.28,0.48,0.64,0.69}, //B2
{-0.22,-0.15,-0.13,-0.10,-0.04,0.05,0.14,0.27,0.36,0.47}, //B3
};
for (i=0;i<n&&i<MAXOBS;i++) {
sat=obs[i].sat;
if (PPP_Glo.sFlag[sat-1].sys!=SYS_CMP) continue;
prn=PPP_Glo.sFlag[sat-1].prn;
if (prn <= 5 || prn >= 19) continue;
elev=rtk->ssat[sat-1].azel[1]*R2D;
if (elev<=0.0) continue;
for (j=0;j<3;j++) dmp[j]=0.0;
a=elev*0.1;
b=(int)a;
if (prn >= 6 && prn <= 10) { // IGSO(C06, C07, C08, C09, C10)
if (b<0) {
for (j=0;j<3;j++) dmp[j]=IGSOCOEF[j][0];
}
else if (b>=9) {
for (j=0;j<3;j++) dmp[j]=IGSOCOEF[j][9];
}
else {
for (j=0;j<3;j++) dmp[j]=IGSOCOEF[j][b]*(1.0-a+b)+IGSOCOEF[j][b+1]*(a-b);
}
}
else if (prn == 11 || prn == 12 || prn == 14) { // MEO(C11, C12, C13, C14)
if (b<0) {
for (j=0;j<3;j++) dmp[j]=MEOCOEF[j][0];
}
else if (b>=9) {
for (j=0;j<3;j++) dmp[j]=MEOCOEF[j][9];
}
else {
for (j=0;j<3;j++) dmp[j]=MEOCOEF[j][b]*(1.0-a+b)+MEOCOEF[j][b+1]*(a-b);
}
}
for (j=0;j<3;j++) obs[i].P[j]+=dmp[j];
}
}
2、