Changeset 10955 in ntrip for trunk/BNC/src/combination


Ignore:
Timestamp:
Jul 3, 2026, 11:10:42 AM (4 months ago)
Author:
stuerze
Message:

Possibility to select how satellite attitude is modelled when converting Antenna Phase Center (APC) corrections to
Center-of-Mass (CoM) positions required for SP3 output

Location:
trunk/BNC/src/combination
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/combination/bnccomb.cpp

    r10954 r10955  
    181181      QStringList hlp = it.next().split(" ");
    182182      cmbAC* newAC = new cmbAC();
    183       newAC->mountPoint   = hlp[0];
    184       newAC->name         = hlp[1];
    185       newAC->weightFactor = hlp[2].toDouble();
    186       newAC->excludeSats  = hlp[3].split(QRegExp("[ ,]"), Qt::SkipEmptyParts);
    187       newAC->isAPC        = bool(newAC->mountPoint.mid(0,4) == "SSRA");
     183      newAC->mountPoint     = hlp[0];
     184      newAC->name           = hlp[1];
     185      newAC->weightFactor   = hlp[2].toDouble();
     186      newAC->excludeSats    = hlp[3].split(QRegExp("[ ,]"), Qt::SkipEmptyParts);
     187      newAC->isAPC          = bool(newAC->mountPoint.mid(0,4) == "SSRA");
     188      newAC->attitudeSource = (hlp.size() > 4) ? hlp[4] : "Computed";
    188189      QMapIterator<char, unsigned> itSys(_cmbSysPrn);
    189190      // init
    … …  
    859860          dt -= (0.5 * ssrUpdateInt[pb._updateInt]);
    860861        }
    861         _newCorr->_satYawAngle = pb._yaw + pb._yawRate * dt;
     862        _newCorr->_satYawAngle      = pb._yaw + pb._yawRate * dt;
     863        _newCorr->_satYawAngleValid = true;
    862864
    863865        // _lambdaIF
    … …  
    12131215      if (corr->_prn.startsWith("R08")) {
    12141216        emit newMessage(("bncComb: DIAG " + corr->_prn.mid(0,3) + " getCrd FAILED").toLatin1(), false);
    1215       }
    1216       */
     1217      } */
    12171218      delete corr;
    12181219      it.remove();
    … …  
    12221223    else if (corr->_prn.startsWith("R08")) {
    12231224      emit newMessage(("bncComb: DIAG " + corr->_prn.mid(0,3) + " getCrd OK").toLatin1(), false);
    1224     }
    1225    
    1226     */
     1225    }*/
    12271226    // TEMPORARY DIAGNOSTIC: how far is this epoch from the GLONASS broadcast
    12281227    // ephemeris reference time? t_ephGlo::position() numerically integrates
    … …  
    12511250      char sys = corr->_eph->prn().system();
    12521251      masterIsAPC = _masterIsAPC[sys];
    1253       if (_antex->satCoMcorrection(corr->_prn, Mjd, xc.Rows(1,3), vv, dx) != success) {
     1252
     1253      // Determine attitude mode from the master orbit AC for this system
     1254      bncAntex::e_attMode attMode   = bncAntex::ATT_COMPUTED;
     1255      double              extYaw    = 0.0;
     1256      const QString&      masterName = _masterOrbitAC[sys];
     1257      for (const cmbAC* ac : _ACs) {
     1258        if (ac->name == masterName) {
     1259          if (ac->attitudeSource == "SSR" && corr->_satYawAngleValid) {
     1260            attMode = bncAntex::ATT_EXTERNAL;
     1261            extYaw  = corr->_satYawAngle;
     1262          }
     1263          else if (ac->attitudeSource == "Nominal") {
     1264            attMode = bncAntex::ATT_NOMINAL;
     1265          }
     1266          break;
     1267        }
     1268      }
     1269
     1270      if (_antex->satCoMcorrection(corr->_prn, Mjd, xc.Rows(1,3), vv, dx,
     1271                                   attMode, extYaw) != success) {
    12541272        dx = 0;
    12551273        emit newMessage("bncComb: antenna not found " + corr->_prn.mid(0,3).toLatin1(), false);
    … …  
    12581276      if (!glonassYawLog.isEmpty()) {
    12591277        emit newMessage(("bncComb: " + glonassYawLog.trimmed()).toLatin1(), false);
     1278      }
     1279      QString gpsYawLog = _antex->takeGpsYawLog();
     1280      if (!gpsYawLog.isEmpty()) {
     1281        emit newMessage(("bncComb: " + gpsYawLog.trimmed()).toLatin1(), false);
     1282      }
     1283      QString onYawLog = _antex->takeOnYawLog();
     1284      if (!onYawLog.isEmpty()) {
     1285        emit newMessage(("bncComb: " + onYawLog.trimmed()).toLatin1(), false);
    12601286      }
    12611287    }
  • trunk/BNC/src/combination/bnccomb.h

    r10914 r10955  
    9595      numObs['S']  = 0;
    9696      numObs['I']  = 0;
    97       isAPC = false;
     97      isAPC          = false;
     98      attitudeSource = "Computed";
    9899    }
    99100    ~cmbAC() {
    … …  
    105106    QStringList          excludeSats;
    106107    bool                 isAPC;
     108    QString              attitudeSource; // "Computed", "SSR", or "Nominal"
    107109    QMap<char, unsigned> numObs;
    108110  };
    … …  
    117119      _lambdaIF                    = 0.0;
    118120      _satYawAngle                 = 0.0;
     121      _satYawAngleValid            = false;
    119122      _weightFactor                = 1.0;
    120123      _satPos.ReSize(3); _satPos   = 0.0;
    … …  
    135138    double         _lambdaIF;
    136139    double         _satYawAngle;
     140    bool           _satYawAngleValid;
    137141    double         _dClkResult;
    138142    ColumnVector   _satPos;
Note: See TracChangeset for help on using the changeset viewer.