From e3be903b3cb257d4068cbb7f9a501a70207ce3ae Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Wed, 12 Jun 2019 16:29:12 +0200 Subject: [PATCH] Fix RX time correction in Galileo-only or in mix GPS and Galileo configurations --- src/algorithms/PVT/libs/rtklib_solver.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/algorithms/PVT/libs/rtklib_solver.cc b/src/algorithms/PVT/libs/rtklib_solver.cc index 5365a3a08..ecf0efe9a 100644 --- a/src/algorithms/PVT/libs/rtklib_solver.cc +++ b/src/algorithms/PVT/libs/rtklib_solver.cc @@ -961,15 +961,18 @@ bool Rtklib_Solver::get_PVT(const std::map &gnss_observables_ rx_position_and_time(0) = pvt_sol.rr[0]; // [m] rx_position_and_time(1) = pvt_sol.rr[1]; // [m] rx_position_and_time(2) = pvt_sol.rr[2]; // [m] - //todo: fix this ambiguity in the RTKLIB units in receiver clock offset! if (rtk_.opt.mode == PMODE_SINGLE) { - rx_position_and_time(3) = pvt_sol.dtr[0]; // if the RTKLIB solver is set to SINGLE, the dtr is already expressed in [s] + // if the RTKLIB solver is set to SINGLE, the dtr is already expressed in [s] + // add also the clock offset from gps to galileo (pvt_sol.dtr[2]) + rx_position_and_time(3) = pvt_sol.dtr[0] + pvt_sol.dtr[2]; } else { - rx_position_and_time(3) = pvt_sol.dtr[0] / GPS_C_M_S; // the receiver clock offset is expressed in [meters], so we convert it into [s] + // the receiver clock offset is expressed in [meters], so we convert it into [s] + // add also the clock offset from gps to galileo (pvt_sol.dtr[2]) + rx_position_and_time(3) = pvt_sol.dtr[2] + pvt_sol.dtr[0] / GPS_C_M_S; } this->set_rx_pos(rx_position_and_time.rows(0, 2)); // save ECEF position for the next iteration