Changeset 9386 in ntrip


Ignore:
Timestamp:
Mar 25, 2021, 3:17:35 PM (7 weeks ago)
Author:
stuerze
Message:

update regarding PPP

Location:
trunk/BNC/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncwindow.cpp

    r9302 r9386  
    14541454  _pppWidgets._sigmaC1->setWhatsThis(tr("<p>Enter a Sigma for GNSS C1 code observations in meters.</p><p>The higher the sigma you enter, the less the contribution of C1 code observations to a PPP solution from combined code and phase data. 2.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma C1 = 2.0' <i>[key: PPP/sigmaC1]</i></p>"));
    14551455  _pppWidgets._sigmaL1->setWhatsThis(tr("<p>Enter a Sigma for GNSS L1 phase observations in meters.</p><p>The higher the sigma you enter, the less the contribution of L1 phase observations to a PPP solutions from combined code and phase data. 0.01 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma L1 = 0.01' <i>[key: PPP/sigmaL1]</i></p>"));
    1456   _pppWidgets._sigmaGIM->setWhatsThis(tr("<p>Enter a Sigma for GIM pseudo observations in meters.</p><p>The higher the sigma you enter, the less the contribution of GIM pseudo observations to a PPP solution. 0.05 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma GIM = 0.05' <i>[key: PPP/sigmaGIM]</i></p>"));
     1456  _pppWidgets._sigmaGIM->setWhatsThis(tr("<p>Enter a Sigma for GIM pseudo observations in meters.</p><p>The higher the sigma you enter, the less the contribution of GIM pseudo observations to a PPP solution. 4.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma GIM = 4.0' <i>[key: PPP/sigmaGIM]</i></p>"));
    14571457  _pppWidgets._sigmaTz0->setWhatsThis(tr("<p>Enter a Sigma for a Tropospheric pseudo observation in zenith direction in meters.</p><p>The higher the sigma you enter, the less the contribution of Tz0 pseudo observations to a PPP solution. 0.10 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma Tzo = 0.10' <i>[key: PPP/sigmaTz0]</i></p>"));
    14581458  _pppWidgets._maxResC1->setWhatsThis(tr("<p>Specify a maximum for residuals from C1 code observations in a PPP solution. '3.0' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Rex C1 = 3.0' <i>[key: PPP/maxResC1]</i></p>"));
  • trunk/BNC/src/pppInclude.h

    r8961 r9386  
    9898      else if (sys == 'R') return t_frequency::R2;
    9999      else if (sys == 'E') return t_frequency::E5;
    100       else if (sys == 'C') return t_frequency::C7;
     100      else if (sys == 'C') return t_frequency::C6;
    101101      else                 return t_frequency::dummy;
    102102    case lIF: case cIF: case MW: case CL:
  • trunk/BNC/src/pppMain.cpp

    r9302 r9386  
    175175    opt->_blqFileName.assign(settings.value("PPP/blqFile").toString().toStdString());
    176176#endif
    177     opt->_sigmaC1      = settings.value("PPP/sigmaC1").toDouble(); if (opt->_sigmaC1 <= 0.0)  opt->_sigmaC1  =  2.0;
     177    opt->_sigmaC1      = settings.value("PPP/sigmaC1").toDouble(); if (opt->_sigmaC1 <= 0.0)  opt->_sigmaC1  = 2.00;
    178178    opt->_sigmaL1      = settings.value("PPP/sigmaL1").toDouble(); if (opt->_sigmaL1 <= 0.0)  opt->_sigmaL1  = 0.01;
    179     opt->_sigmaGIM     = settings.value("PPP/sigmaGIM").toDouble();if (opt->_sigmaGIM <= 0.0) opt->_sigmaGIM = 0.05;
     179    opt->_sigmaGIM     = settings.value("PPP/sigmaGIM").toDouble();if (opt->_sigmaGIM <= 0.0) opt->_sigmaGIM = 4.00;
    180180    opt->_sigmaTz0     = settings.value("PPP/sigmaTz0").toDouble();if (opt->_sigmaTz0 <= 0.0) opt->_sigmaTz0 = 0.10;
    181181    opt->_corrWaitTime = settings.value("PPP/corrWaitTime").toDouble();
     
    189189#ifdef USE_PPP
    190190    // Pseudo Observations
    191     if      (settings.value("PPP/pseudoObs").toString() == "Ionosphere") {
    192       opt->_pseudoObsIono  = true;
    193       opt->_pseudoObsTropo = false;
     191    if      (settings.value("PPP/pseudoObs").toString() == "Troposphere") {
     192      opt->_pseudoObsIono  = false;
     193      opt->_pseudoObsTropo = true;
    194194    }
    195195    else if (settings.value("PPP/pseudoObs").toString() == "Iono+Tropo") {
    196196      opt->_pseudoObsIono  = true;
    197197      opt->_pseudoObsTropo = true;
    198     }
    199     else if (settings.value("PPP/pseudoObs").toString() == "no") {
    200       opt->_pseudoObsIono  = false;
    201       opt->_pseudoObsTropo = false;
    202198    }
    203199    // Observation Model
     
    228224#endif
    229225    // GPS
    230     if (settings.value("PPP/lcGPS").toString() == "Pi") {
    231       if (opt->_obsModelType == t_pppOptions::IF) {
    232         opt->_LCsGPS.push_back(t_lc::cIF);
    233       }
    234       else {
    235         opt->_LCsGPS.push_back(t_lc::c1);
    236         opt->_LCsGPS.push_back(t_lc::c2);
    237         if (opt->_pseudoObsIono) {
    238           opt->_LCsGPS.push_back(t_lc::GIM);
    239         }
    240         if (opt->_pseudoObsTropo) {
    241           opt->_LCsGPS.push_back(t_lc::Tz0);
    242         }
    243       }
    244     }
    245     else if (settings.value("PPP/lcGPS").toString() == "Li") {
    246       if (opt->_obsModelType == t_pppOptions::IF) {
    247         opt->_LCsGPS.push_back(t_lc::lIF);
    248       }
    249       else {
    250         opt->_LCsGPS.push_back(t_lc::l1);
    251         opt->_LCsGPS.push_back(t_lc::l2);
    252         if (opt->_pseudoObsIono) {
    253           opt->_LCsGPS.push_back(t_lc::GIM);
    254         }
    255         if (opt->_pseudoObsTropo) {
    256           opt->_LCsGPS.push_back(t_lc::Tz0);
    257         }
    258       }
    259     }
    260     else if (settings.value("PPP/lcGPS").toString() == "Pi&Li") {
     226    if (settings.value("PPP/lcGPS").toString() == "Pi&Li") {
    261227      if (opt->_obsModelType == t_pppOptions::IF) {
    262228        opt->_LCsGPS.push_back(t_lc::cIF);
     
    277243    }
    278244    // GLONASS
    279     if (settings.value("PPP/lcGLONASS").toString() == "Pi") {
    280       if (opt->_obsModelType == t_pppOptions::IF) {
    281         opt->_LCsGLONASS.push_back(t_lc::cIF);
    282       }
    283       else {
    284         opt->_LCsGLONASS.push_back(t_lc::c1);
    285         opt->_LCsGLONASS.push_back(t_lc::c2);
    286         if (opt->_pseudoObsIono) {
    287           opt->_LCsGLONASS.push_back(t_lc::GIM);
    288         }
    289         if (opt->_pseudoObsTropo) {
    290           opt->_LCsGPS.push_back(t_lc::Tz0);
    291         }
    292       }
    293     }
    294     else if (settings.value("PPP/lcGLONASS").toString() == "Li") {
    295       if (opt->_obsModelType == t_pppOptions::IF) {
    296         opt->_LCsGLONASS.push_back(t_lc::lIF);
    297       }
    298       else {
    299         opt->_LCsGLONASS.push_back(t_lc::l1);
    300         opt->_LCsGLONASS.push_back(t_lc::l2);
    301         if (opt->_obsModelType == t_pppOptions::IF) {
    302           opt->_LCsGLONASS.push_back(t_lc::GIM);
    303         }
    304         if (opt->_pseudoObsTropo) {
    305           opt->_LCsGPS.push_back(t_lc::Tz0);
    306         }
    307       }
    308     }
    309     else if (settings.value("PPP/lcGLONASS").toString() == "Pi&Li") {
     245    if (settings.value("PPP/lcGLONASS").toString() == "Pi&Li") {
    310246      if (opt->_obsModelType == t_pppOptions::IF) {
    311247        opt->_LCsGLONASS.push_back(t_lc::cIF);
     
    321257        }
    322258        if (opt->_pseudoObsTropo) {
    323           opt->_LCsGPS.push_back(t_lc::Tz0);
     259          opt->_LCsGLONASS.push_back(t_lc::Tz0);
    324260        }
    325261      }
    326262    }
    327263    // Galileo
    328     if (settings.value("PPP/lcGalileo").toString() == "Pi") {
    329       if (opt->_obsModelType == t_pppOptions::IF) {
    330         opt->_LCsGalileo.push_back(t_lc::cIF);
    331       }
    332       else {
    333         opt->_LCsGalileo.push_back(t_lc::c1);
    334         opt->_LCsGalileo.push_back(t_lc::c2);
    335         if (opt->_pseudoObsIono) {
    336           opt->_LCsGalileo.push_back(t_lc::GIM);
    337         }
    338         if (opt->_pseudoObsTropo) {
    339           opt->_LCsGPS.push_back(t_lc::Tz0);
    340         }
    341       }
    342     }
    343     else if (settings.value("PPP/lcGalileo").toString() == "Li") {
    344       if (opt->_obsModelType == t_pppOptions::IF) {
    345         opt->_LCsGalileo.push_back(t_lc::lIF);
    346       }
    347       else {
    348         opt->_LCsGalileo.push_back(t_lc::l1);
    349         opt->_LCsGalileo.push_back(t_lc::l2);
    350         if (opt->_pseudoObsIono) {
    351           opt->_LCsGalileo.push_back(t_lc::GIM);
    352         }
    353         if (opt->_pseudoObsTropo) {
    354           opt->_LCsGPS.push_back(t_lc::Tz0);
    355         }
    356       }
    357     }
    358     else if (settings.value("PPP/lcGalileo").toString() == "Pi&Li") {
     264    if (settings.value("PPP/lcGalileo").toString() == "Pi&Li") {
    359265      if (opt->_obsModelType == t_pppOptions::IF) {
    360266        opt->_LCsGalileo.push_back(t_lc::cIF);
     
    370276        }
    371277        if (opt->_pseudoObsTropo) {
    372           opt->_LCsGPS.push_back(t_lc::Tz0);
     278          opt->_LCsGalileo.push_back(t_lc::Tz0);
    373279        }
    374280      }
    375281    }
    376282    // BDS
    377     if (settings.value("PPP/lcBDS").toString() == "Pi") {
    378       if (opt->_obsModelType == t_pppOptions::IF) {
    379         opt->_LCsBDS.push_back(t_lc::cIF);
    380       }
    381       else {
    382         opt->_LCsBDS.push_back(t_lc::c1);
    383         opt->_LCsBDS.push_back(t_lc::c2);
    384         if (opt->_pseudoObsIono) {
    385           opt->_LCsBDS.push_back(t_lc::GIM);
    386         }
    387         if (opt->_pseudoObsTropo) {
    388           opt->_LCsGPS.push_back(t_lc::Tz0);
    389         }
    390       }
    391     }
    392     else if (settings.value("PPP/lcBDS").toString() == "Li") {
    393       if (opt->_obsModelType == t_pppOptions::IF) {
    394         opt->_LCsBDS.push_back(t_lc::lIF);
    395       }
    396       else {
    397         opt->_LCsBDS.push_back(t_lc::l1);
    398         opt->_LCsBDS.push_back(t_lc::l2);
    399         if (opt->_pseudoObsIono) {
    400           opt->_LCsBDS.push_back(t_lc::GIM);
    401         }
    402         if (opt->_pseudoObsTropo) {
    403           opt->_LCsGPS.push_back(t_lc::Tz0);
    404         }
    405       }
    406     }
    407     else if (settings.value("PPP/lcBDS").toString() == "Pi&Li") {
     283    if (settings.value("PPP/lcBDS").toString() == "Pi&Li") {
    408284      if (opt->_obsModelType == t_pppOptions::IF) {
    409285        opt->_LCsBDS.push_back(t_lc::cIF);
     
    419295        }
    420296        if (opt->_pseudoObsTropo) {
    421           opt->_LCsGPS.push_back(t_lc::Tz0);
     297          opt->_LCsBDS.push_back(t_lc::Tz0);
    422298        }
    423299      }
     
    446322    }
    447323
    448     opt->_minObs      = settings.value("PPP/minObs").toInt(); if (opt->_minObs < 4) opt->_minObs = 4;
     324    opt->_minObs      = settings.value("PPP/minObs").toInt(); if (opt->_minObs < 5) opt->_minObs = 5;
    449325    opt->_minEle      = settings.value("PPP/minEle").toDouble() * M_PI / 180.0;
    450     opt->_maxResC1    = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 3.0;
     326    opt->_maxResC1    = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 3.00;
    451327    opt->_maxResL1    = settings.value("PPP/maxResL1").toDouble(); if (opt->_maxResL1 <= 0.0) opt->_maxResL1 = 0.03;
    452328    opt->_eleWgtCode  = (settings.value("PPP/eleWgtCode").toInt() != 0);
     
    459335    opt->_aprSigIon       = 1000.0;
    460336    opt->_aprSigClk       = 1000.0;
     337    opt->_aprSigOGR       = 1000.0;
     338    opt->_aprSigOGE       = 1000.0;
     339    opt->_aprSigOGC       = 1000.0;
    461340    opt->_aprSigCodeBias  = 1000.0;
    462341    opt->_aprSigPhaseBias = 1000.0;
    463     // TODO: Find realistic values!!!!!!
    464     opt->_noiseIon        =  5.00; // Todo: add all to table
    465     opt->_noiseCodeBias   =  5.00;
    466     opt->_noisePhaseBias  =  5.00;
    467342
    468343    _options << opt;
  • trunk/BNC/src/pppOptions.h

    r9302 r9386  
    6161  ColumnVector            _noiseCrd;
    6262  double                  _aprSigClk;
     63  double                  _aprSigOGR;
     64  double                  _aprSigOGE;
     65  double                  _aprSigOGC;
    6366  double                  _aprSigTrp;
    6467  double                  _noiseTrp;
    6568  double                  _aprSigIon;
    66   double                  _noiseIon;
    6769  double                  _aprSigCodeBias;
    68   double                  _noiseCodeBias;
    6970  double                  _aprSigPhaseBias;
    70   double                  _noisePhaseBias;
    7171  int                     _nmeaPort;
    7272  double                  _aprSigAmb;
  • trunk/BNC/src/pppWidgets.cpp

    r9302 r9386  
    124124  _lcGPS->addItems(QString("P3,P3&L3").split(","));
    125125#else
    126   _lcGPS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
     126  _lcGPS->addItems(QString("no,Pi&Li").split(","));
    127127#endif
    128128
     
    131131   _lcGLONASS->addItems(QString("no,P3,L3,P3&L3").split(","));
    132132#else
    133   _lcGLONASS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
     133  _lcGLONASS->addItems(QString("no,Pi&Li").split(","));
    134134#endif
    135135
     
    138138  _lcGalileo->addItems(QString("no,P3,L3,P3&L3").split(","));
    139139#else
    140   _lcGalileo->addItems(QString("no,Pi,Li,Pi&Li").split(","));
     140  _lcGalileo->addItems(QString("no,Pi&Li").split(","));
    141141#endif
    142142
     
    145145  _lcBDS->addItems(QString("no,P3,L3,P3&L3").split(","));
    146146#else
    147   _lcBDS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
     147  _lcBDS->addItems(QString("no,Pi&Li").split(","));
    148148#endif
    149149
     
    155155#else
    156156  _modelObs->addItems(QString("Ionosphere-free PPP,Uncombined PPP,PPP-RTK,DCM with Code Biases,DCM with Phase Biases").split(","));
    157   _pseudoObs->addItems(QString("no,Ionosphere,Iono+Tropo").split(","));
     157  _pseudoObs->addItems(QString("Troposphere,Iono+Tropo").split(","));
    158158#endif
    159159
     
    165165  _snxtroIntr->setCurrentIndex(6);
    166166
    167   _minObs->setMinimum(4);
     167  _minObs->setMinimum(5);
    168168  _minObs->setMaximum(6);
    169169  _minObs->setSingleStep(1);
     
    353353  }
    354354  else {
    355     _sigmaGIM->setText("0.05");
     355    _sigmaGIM->setText("4.0");
    356356  }
    357357
     
    367367  }
    368368  else {
    369     _maxResC1->setText("4.0");
     369    _maxResC1->setText("3.0");
    370370  }
    371371
     
    508508  bool enablePseudoObs;
    509509  if (_modelObs->currentText() == "PPP-RTK" ||
    510     _modelObs->currentText() == "Ionosphere-free PPP") {
     510      _modelObs->currentText() == "Ionosphere-free PPP") {
    511511    enablePseudoObs = false;
    512512  }
  • trunk/BNC/src/src.pri

    r9237 r9386  
    2727release:MOC_DIR=.moc/release
    2828
    29 debug:DEFINES  += BNC_DEBUG
    30 debug:DEFINES  += BNC_DEBUG_BCEP
    31 #debug:DEFINES  += BNC_DEBUG_SSR
     29
     30debug:DEFINES   += BNC_DEBUG_BCEP
     31#debug:DEFINES   += BNC_DEBUG_PPP
     32#debug:DEFINES   += BNC_DEBUG_SSR
    3233release:DEFINES += BNC_DEBUG_BCEP
     34
    3335
    3436# Include Path
Note: See TracChangeset for help on using the changeset viewer.