From e67941510e6e7ea6439c97397ba7fbe8d6db7608 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 7 Jun 2018 20:25:25 +0200 Subject: [PATCH 1/4] Adjust number of decimals shown in terminal --- src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc index 2863795ca..1fc243cb3 100644 --- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc +++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc @@ -2091,9 +2091,9 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::cout << TEXT_BOLD_GREEN << "Position at " << d_ls_pvt->get_position_UTC_time() << " UTC using " << d_ls_pvt->get_num_valid_observations() - << std::setprecision(10) + << std::fixed << std::setprecision(9) << " observations is Lat = " << d_ls_pvt->get_latitude() << " [deg], Long = " << d_ls_pvt->get_longitude() - << std::setprecision(4) + << std::fixed << std::setprecision(3) << " [deg], Height = " << d_ls_pvt->get_height() << " [m]" << TEXT_RESET << std::endl; std::cout << std::setprecision(ss); LOG(INFO) << "RX clock offset: " << d_ls_pvt->get_time_offset_s() << "[s]"; From f05a216a1cc425e6d0c91fdb2a66671efd1cef43 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 7 Jun 2018 20:30:23 +0200 Subject: [PATCH 2/4] Fix display rate --- src/tests/system-tests/position_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/system-tests/position_test.cc b/src/tests/system-tests/position_test.cc index c66e50246..857b2f489 100644 --- a/src/tests/system-tests/position_test.cc +++ b/src/tests/system-tests/position_test.cc @@ -277,7 +277,7 @@ int StaticPositionSystemTest::configure_receiver() const int extend_correlation_ms = 1; const int display_rate_ms = 500; - const int output_rate_ms = 10; + const int output_rate_ms = 100; config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(sampling_rate_internal)); From 0e020253fa5953413903f479e77f3b5855297057 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 8 Jun 2018 09:35:30 +0200 Subject: [PATCH 3/4] Fix typos --- docs/changelog | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/changelog b/docs/changelog index 74f263c33..7c8d1918e 100644 --- a/docs/changelog +++ b/docs/changelog @@ -4,7 +4,7 @@ Next release will have several improvements in different dimensions, addition of ### Improvements in Accuracy: -- Part of the RTKLIB core libraries has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes. +- Part of the RTKLIB core library has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes. - Fixed CN0 estimation for other correlation times than 1 ms. - Improved computation of tracking parameters and GNSS observables. - Other minor bug fixes. @@ -14,7 +14,7 @@ Next release will have several improvements in different dimensions, addition of - Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation. - Redesign of the time counter for enhanced continuity. -- Improved acquisition and tracking sensibility. +- Improved acquisition and tracking sensitivity. - Other minor bug fixes. @@ -22,7 +22,7 @@ Next release will have several improvements in different dimensions, addition of - Added the possibility of non-blocking acquisition, which works well when using real-time data from an RF front-end. - Complex local codes have been replaced by real codes, alleviating the computational burden. -- New kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h +- New volk_gnsssdr kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h - Some AVX2 implementations added to the volk_gnsssdr library. - Improvement in C++ usage: Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator. - A number of code optimizations here and there. @@ -124,7 +124,7 @@ Next release will have several improvements in different dimensions, addition of - Updated and improved documentation of processing blocks at https://gnss-sdr.org/docs/sp-blocks/ - Improved documentation of required dependency packages in several GNU/Linux distributions. - Parameter names with the same role have been harmonized within different block implementations. -- Added a chnagelog, a code of conduct, a contributing guide and a pull-request template in the source tree. +- Added a changelog, a code of conduct, a contributing guide and a pull-request template in the source tree. - Added colors to the commandline user interface. - Updated manfiles. From 5b00ad1dc1f3a6501daa43352059db190b1f2fa6 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 8 Jun 2018 11:01:29 +0200 Subject: [PATCH 4/4] Workaround for GPS L2C-alone positioning --- src/algorithms/PVT/libs/rtklib_solver.cc | 35 ++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/algorithms/PVT/libs/rtklib_solver.cc b/src/algorithms/PVT/libs/rtklib_solver.cc index 1b77582f4..436ff9aaf 100644 --- a/src/algorithms/PVT/libs/rtklib_solver.cc +++ b/src/algorithms/PVT/libs/rtklib_solver.cc @@ -154,9 +154,38 @@ bool rtklib_solver::get_PVT(const std::map& gnss_observables_ eph_t eph_data[MAXOBS]; geph_t geph_data[MAXOBS]; + // Workaround for NAV/CNAV clash problem + bool gps_dual_band = false; + bool band1 = false; + bool band2 = false; for (gnss_observables_iter = gnss_observables_map.cbegin(); gnss_observables_iter != gnss_observables_map.cend(); - gnss_observables_iter++) // CHECK INCONSISTENCY when combining GLONASS + other system + ++gnss_observables_iter) + { + switch (gnss_observables_iter->second.System) + { + case 'G': + { + std::string sig_(gnss_observables_iter->second.Signal); + if (sig_.compare("1C") == 0) + { + band1 = true; + } + if (sig_.compare("2S") == 0) + { + band2 = true; + } + } + default: + { + } + } + } + if (band1 == true and band2 == true) gps_dual_band = true; + + for (gnss_observables_iter = gnss_observables_map.cbegin(); + gnss_observables_iter != gnss_observables_map.cend(); + ++gnss_observables_iter) // CHECK INCONSISTENCY when combining GLONASS + other system { switch (gnss_observables_iter->second.System) { @@ -255,8 +284,8 @@ bool rtklib_solver::get_PVT(const std::map& gnss_observables_ DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->first; } } - // GPS L2 (ephemeris disabled due to an incompatibility with RTKLIB solver) - if (sig_.compare("2S_disabled") == 0) + // GPS L2 (todo: solve NAV/CNAV clash) + if ((sig_.compare("2S") == 0) and (gps_dual_band == false)) { gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_cnav_ephemeris_iter != gps_cnav_ephemeris_map.cend())