diff --git a/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc b/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc index 9fec55e7a..342729127 100644 --- a/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc +++ b/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc @@ -32,7 +32,8 @@ #include "gps_l1_ca_ls_pvt.h" #include #include - +#include "GPS_L1_CA.h" +#include "GPS_L2C.h" using google::LogMessage; @@ -129,8 +130,14 @@ bool gps_l1_ca_ls_pvt::get_PVT(std::map gnss_pseudoranges_map, satpos(2, valid_obs) = gps_ephemeris_iter->second.d_satpos_Z; // 4- fill the observations vector with the corrected pseudoranges + // compute code bias: TGD for single frequency + // See IS-GPS-200E section 20.3.3.3.3.2 + double sqrt_Gamma=GPS_L1_FREQ_HZ/GPS_L2_FREQ_HZ; + double Gamma=sqrt_Gamma*sqrt_Gamma; + double P1_P2=(1.0-Gamma)*(gps_ephemeris_iter->second.d_TGD* GPS_C_m_s); + double Code_bias_m= P1_P2/(1.0-Gamma); obs.resize(valid_obs + 1, 1); - obs(valid_obs) = gnss_pseudoranges_iter->second.Pseudorange_m + dtr * GPS_C_m_s - d_rx_dt_s * GPS_C_m_s; + obs(valid_obs) = gnss_pseudoranges_iter->second.Pseudorange_m + dtr * GPS_C_m_s-Code_bias_m-d_rx_dt_s * GPS_C_m_s; d_visible_satellites_IDs[valid_obs] = gps_ephemeris_iter->second.i_satellite_PRN; d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz; diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc index 5c8888723..20add847b 100644 --- a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc +++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc @@ -32,6 +32,8 @@ #include "hybrid_ls_pvt.h" #include #include "Galileo_E1.h" +#include "GPS_L1_CA.h" +#include "GPS_L2C.h" using google::LogMessage; @@ -192,8 +194,14 @@ bool hybrid_ls_pvt::get_PVT(std::map gnss_observables_map, dou satpos(2, valid_obs) = gps_ephemeris_iter->second.d_satpos_Z; // 4- fill the observations vector with the corrected pseudoranges + // compute code bias: TGD for single frequency + // See IS-GPS-200E section 20.3.3.3.3.2 + double sqrt_Gamma=GPS_L1_FREQ_HZ/GPS_L2_FREQ_HZ; + double Gamma=sqrt_Gamma*sqrt_Gamma; + double P1_P2=(1.0-Gamma)*(gps_ephemeris_iter->second.d_TGD* GPS_C_m_s); + double Code_bias_m= P1_P2/(1.0-Gamma); obs.resize(valid_obs + 1, 1); - obs(valid_obs) = gnss_observables_iter->second.Pseudorange_m + dtr * GPS_C_m_s - d_rx_dt_s * GPS_C_m_s; + obs(valid_obs) = gnss_observables_iter->second.Pseudorange_m + dtr * GPS_C_m_s-Code_bias_m-d_rx_dt_s * GPS_C_m_s; d_visible_satellites_IDs[valid_obs] = gps_ephemeris_iter->second.i_satellite_PRN; d_visible_satellites_CN0_dB[valid_obs] = gnss_observables_iter->second.CN0_dB_hz;