[hamradio-commits] [gnss-sdr] 55/126: fixing computation of observables in DF011 and DF012

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sat Dec 26 18:38:01 UTC 2015


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.

commit 08f5df9849ae5d30527a1479c30bcb7bf058947d
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Wed Nov 25 14:03:31 2015 +0100

    fixing computation of observables in DF011 and DF012
---
 src/core/system_parameters/rtcm.cc | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/core/system_parameters/rtcm.cc b/src/core/system_parameters/rtcm.cc
index ede79d7..6e8c888 100644
--- a/src/core/system_parameters/rtcm.cc
+++ b/src/core/system_parameters/rtcm.cc
@@ -1167,7 +1167,8 @@ int Rtcm::set_DF010(bool code_indicator)
 
 int Rtcm::set_DF011(const Gnss_Synchro & gnss_synchro)
 {
-    unsigned long int gps_L1_pseudorange = static_cast<long unsigned int>(std::round(std::fmod(gnss_synchro.Pseudorange_m, 299792.458) / 0.02 ));
+    double ambiguity = std::floor( gnss_synchro.Pseudorange_m / 299792.458 );
+    unsigned long int gps_L1_pseudorange = static_cast<unsigned long int>(std::round(( gnss_synchro.Pseudorange_m - ambiguity * 299792.458) / 0.02 ));
     DF011 = std::bitset<24>(gps_L1_pseudorange);
     return 0;
 }
@@ -1175,12 +1176,14 @@ int Rtcm::set_DF011(const Gnss_Synchro & gnss_synchro)
 
 int Rtcm::set_DF012(const Gnss_Synchro & gnss_synchro)
 {
+    const double lambda = GPS_C_m_s / GPS_L1_FREQ_HZ;
     double L1_pseudorange = gnss_synchro.Pseudorange_m;
-    //double L1_pseudorange_integers = std::floor(L1_pseudorange / 299792.458);
-    double L1_pseudorange_field = std::fmod(L1_pseudorange, 299792.458);
-    double L1_phaserange_m = (gnss_synchro.Carrier_phase_rads / GPS_TWO_PI) * GPS_C_m_s / GPS_L1_FREQ_HZ;
-
-    long int gps_L1_phaserange_minus_L1_pseudorange =  static_cast<long int>((L1_phaserange_m - L1_pseudorange_field) / 0.0005); ///////////////////////
+    double ambiguity = std::floor( gnss_synchro.Pseudorange_m / 299792.458 );
+    double gps_L1_pseudorange = std::round(( gnss_synchro.Pseudorange_m - ambiguity * 299792.458) / 0.02 );
+    double gps_L1_pseudorange_c = static_cast<double>(gps_L1_pseudorange) * 0.02 + ambiguity * 299792.458;
+    double L1_phaserange_c = gnss_synchro.Carrier_phase_rads * GPS_TWO_PI;
+    double L1_phaserange_c_r = std::fmod(L1_phaserange_c - gps_L1_pseudorange_c / lambda + 1500.0, 3000.0) - 1500.0;
+    long int gps_L1_phaserange_minus_L1_pseudorange = static_cast<long int>(std::round(L1_phaserange_c_r * lambda / 0.0005 ));
     DF012 = std::bitset<20>(gps_L1_phaserange_minus_L1_pseudorange);
     return 0;
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list