Changeset 11110 in ntrip for trunk/BNC/src/combination/bnccomb.cpp
- Timestamp:
- Oct 22, 2026, 11:10:34 AM (10 hours ago)
- File:
-
- 1 edited
-
trunk/BNC/src/combination/bnccomb.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/combination/bnccomb.cpp
r11107 r11110 1698 1698 continue; 1699 1699 } 1700 QString glonassYawLog = _antex->takeGlonassYawLog(); 1701 if (!glonassYawLog.isEmpty()) { 1702 emit newMessage(("bncComb: " + glonassYawLog.trimmed()).toLatin1(), false); 1703 } 1704 QString gpsYawLog = _antex->takeGpsYawLog(); 1705 if (!gpsYawLog.isEmpty()) { 1706 emit newMessage(("bncComb: " + gpsYawLog.trimmed()).toLatin1(), false); 1707 } 1708 QString onYawLog = _antex->takeOnYawLog(); 1709 if (!onYawLog.isEmpty()) { 1710 emit newMessage(("bncComb: " + onYawLog.trimmed()).toLatin1(), false); 1700 // transitions of the output attitude only, not of the AC attitudes 1701 // used for the clock consistency (state keys "<AC>:att") 1702 QStringList yawLogs = (_antex->takeGlonassYawLog() + _antex->takeGpsYawLog() + 1703 _antex->takeOnYawLog()).split('\n', Qt::SkipEmptyParts); 1704 for (const QString& line : yawLogs) { 1705 if (!line.contains(":att:")) { 1706 emit newMessage(("bncComb: " + line.trimmed()).toLatin1(), false); 1707 } 1711 1708 } 1712 1709 } … … 1885 1882 double dC_att = 0.0; 1886 1883 if (corr->_attYawValid && masterCorr[prn]->_attYawValid) { 1887 double dPsi = remainder(corr->_attYaw - masterCorr[prn]->_attYaw, 2.0 * M_PI); 1884 // unwrapped over time: a turn in opposite directions accumulates a 1885 // full cycle of wind-up, which stays in the clock (reset after 30 min); 1886 // sign confirmed with the clocks of an AC turning opposite to the master; 1887 // a yaw rotation +dpsi (right-handed about the antenna boresight) shifts 1888 // the carrier phase by -dpsi/2pi cycles; an AC modelling its yaw larger by 1889 // dpsi gets its clock (IGS sense) smaller by lambda_IF * dpsi / 2pi: 1890 // dClk_AC - dClk_master = lambda_IF * (psi_master - psi_AC) / 2pi. 1891 // Chen et al. (2022, EPS 74:142, Eq. 4) give the opposite 1892 // sign, but did not apply the correction (no attitude products). 1893 double dPsi = remainder(masterCorr[prn]->_attYaw - corr->_attYaw, 2.0 * M_PI); 1894 QString key = corr->_acName + ' ' + masterCorr[prn]->_acName + ' ' + prn; 1895 if (_dPsiLast.contains(key) && corr->_time - _dPsiLast[key].second <= 1800.0) { 1896 double last = _dPsiLast[key].first; 1897 dPsi = last + remainder(dPsi - last, 2.0 * M_PI); 1898 } 1899 _dPsiLast[key] = QPair<double, bncTime>(dPsi, corr->_time); 1888 1900 dC_att = corr->_lambdaIF * dPsi / (2.0 * M_PI); 1889 if ( fabs(dC_att) > 1.e-6) fprintf(stderr, "DCATT %s %s %s %s %.4f %.2f\n", corr->_time.timestr().c_str(), corr->_acName.toLatin1().data(), masterCorr[prn]->_acName.toLatin1().data(), prn.toLatin1().data(), dC_att, dPsi*180/M_PI);1901 if (getenv("DCATT") && prn.startsWith(getenv("DCATT"))) fprintf(stderr, "DCATT %s %s %s %s %.4f %.2f %.2f %.2f\n", corr->_time.timestr().c_str(), corr->_acName.toLatin1().data(), masterCorr[prn]->_acName.toLatin1().data(), prn.toLatin1().data(), dC_att, dPsi*180/M_PI, corr->_attYaw*180/M_PI, masterCorr[prn]->_attYaw*180/M_PI); // TEMPORARY 1890 1902 } 1891 1903 double dC_apriori_corr = dC_orb + dC_att;
Note:
See TracChangeset
for help on using the changeset viewer.
