mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-07-19 09:28:53 +00:00
Merge branch 'fix-double-pvt' into next
This commit is contained in:
@@ -136,6 +136,20 @@ All notable changes to GNSS-SDR will be documented in this file.
|
||||
|
||||
### Improvements in Usability:
|
||||
|
||||
- A new global parameter `GNSS-SDR.observation_date` allows specifying the
|
||||
approximate date of the signal capture, in `YYYY-MM-DD` or `YYYY` format
|
||||
(e.g., `GNSS-SDR.observation_date=2014-12-20`), when post-processing recorded
|
||||
signal files. It is used to resolve the GPS mod-1024 week-number rollover:
|
||||
each broadcast week number is expanded to the 1024-week era closest to the
|
||||
given date. This works for recordings from any era, including files captured
|
||||
after the April 2019 rollover replayed far in the future, and also fixes the
|
||||
applied leap-second offset, which is derived from the resolved date. If the
|
||||
parameter is not set, the era is derived from the system clock, as before,
|
||||
which is the right choice for live operation. The `GNSS-SDR.pre_2009_file`
|
||||
flag, which could only select the August 1999 - April 2019 era, is now
|
||||
deprecated: it keeps working exactly as before, but the receiver prints a
|
||||
notice suggesting `GNSS-SDR.observation_date` instead, and it is ignored if
|
||||
the new parameter is also set.
|
||||
- Added Galileo System Time (GST) annotations to HAS outputs when GST is decoded
|
||||
from an I/NAV channel, enabling the HAS Time of Hour (TOH) to be associated
|
||||
with an absolute UTC timestamp.
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "gnss_sdr_string_literals.h" // for std::string_literals in C++11
|
||||
#include "gps_almanac.h" // for Gps_Almanac
|
||||
#include "gps_ephemeris.h" // for Gps_Ephemeris
|
||||
#include "gps_week_rollover.h" // for gps_ref_week_from_config
|
||||
#include "pvt_conf.h" // for Pvt_Conf
|
||||
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
|
||||
#include "signal_enabled_flags.h" // for signal_enabled_flags
|
||||
@@ -68,8 +69,11 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
|
||||
|
||||
pvt_output_parameters.rtk_trace_level = configuration->property(role + ".rtk_trace_level"s, 0);
|
||||
|
||||
// Flag to postprocess old gnss records (older than 2009) and avoid wrong week rollover
|
||||
pvt_output_parameters.pre_2009_file = configuration->property("GNSS-SDR.pre_2009_file", false);
|
||||
// Approximate date of the signal capture, used to resolve the GPS mod-1024
|
||||
// week-number rollover when post-processing recorded files
|
||||
pvt_output_parameters.ref_gps_week = gps_ref_week_from_config(
|
||||
configuration->property("GNSS-SDR.observation_date", std::string("")),
|
||||
configuration->property("GNSS-SDR.pre_2009_file", false));
|
||||
|
||||
// output rate
|
||||
pvt_output_parameters.observable_interval_ms = configuration->property("GNSS-SDR.observable_interval_ms", pvt_output_parameters.observable_interval_ms);
|
||||
|
||||
@@ -47,7 +47,8 @@ class Gps_Ephemeris;
|
||||
*
|
||||
* Global configuration options used:
|
||||
*
|
||||
* GNSS-SDR.pre_2009_file - flag indicating a file older than 2009 rollover should be processed (false)
|
||||
* GNSS-SDR.observation_date - approximate date of the signal capture in YYYY-MM-DD or YYYY format, used to resolve the GPS mod-1024 week-number rollover when post-processing recorded files (empty: derive it from the system clock)
|
||||
* GNSS-SDR.pre_2009_file - deprecated, use GNSS-SDR.observation_date instead; flag indicating a file captured in the Aug 1999 - Apr 2019 week-number era (false)
|
||||
* GNSS-SDR.observable_interval_ms - (20)
|
||||
*
|
||||
* It supports the following configuration options:
|
||||
|
||||
@@ -414,7 +414,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
||||
// initialize RINEX printer
|
||||
if (d_rinex_output_enabled)
|
||||
{
|
||||
d_rp = std::make_unique<Rinex_Printer>(d_signal_enabled_flags, d_rinex_version, conf_.rinex_output_path, conf_.rinex_name, conf_.pre_2009_file);
|
||||
d_rp = std::make_unique<Rinex_Printer>(d_signal_enabled_flags, d_rinex_version, conf_.rinex_output_path, conf_.rinex_name, conf_.ref_gps_week);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -578,19 +578,19 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
||||
// setup two PVT solvers: internal solver for rx clock and user solver
|
||||
// user PVT solver
|
||||
d_user_pvt_solver = std::make_shared<Rtklib_Solver>(rtk, conf_, dump_ls_pvt_filename, d_signal_enabled_flags, d_dump, d_dump_mat);
|
||||
d_user_pvt_solver->set_pre_2009_file(conf_.pre_2009_file);
|
||||
d_user_pvt_solver->set_ref_gps_week(conf_.ref_gps_week);
|
||||
|
||||
// internal PVT solver, mainly used to estimate the receiver clock
|
||||
rtk_t internal_rtk = rtk;
|
||||
internal_rtk.opt.mode = PMODE_SINGLE; // use single positioning mode in internal PVT solver
|
||||
d_internal_pvt_solver = std::make_shared<Rtklib_Solver>(internal_rtk, conf_, dump_ls_pvt_filename, d_signal_enabled_flags, false, false);
|
||||
d_internal_pvt_solver->set_pre_2009_file(conf_.pre_2009_file);
|
||||
d_internal_pvt_solver->set_ref_gps_week(conf_.ref_gps_week);
|
||||
}
|
||||
else
|
||||
{
|
||||
// only one solver, customized by the user options
|
||||
d_internal_pvt_solver = std::make_shared<Rtklib_Solver>(rtk, conf_, dump_ls_pvt_filename, d_signal_enabled_flags, d_dump, d_dump_mat);
|
||||
d_internal_pvt_solver->set_pre_2009_file(conf_.pre_2009_file);
|
||||
d_internal_pvt_solver->set_ref_gps_week(conf_.ref_gps_week);
|
||||
d_user_pvt_solver = d_internal_pvt_solver;
|
||||
}
|
||||
|
||||
@@ -2198,8 +2198,17 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
||||
// LOG(INFO) << "diff raw obs time: " << d_gnss_observables_map.cbegin()->second.RX_time * 1000.0 - old_time_debug;
|
||||
// old_time_debug = d_gnss_observables_map.cbegin()->second.RX_time * 1000.0;
|
||||
uint32_t current_RX_time_ms = 0;
|
||||
// If the Rx clock correction is disabled, d_internal_pvt_solver and d_user_pvt_solver
|
||||
// are the same object and this is its only get_PVT call, executed at the observables
|
||||
// rate; restrict dumping to epochs aligned with the configured output rate
|
||||
bool dump_this_epoch = false;
|
||||
if (d_enable_rx_clock_correction == false)
|
||||
{
|
||||
const auto rx_time_ms = static_cast<uint32_t>(d_gnss_observables_map.cbegin()->second.RX_time * 1000.0);
|
||||
dump_this_epoch = (rx_time_ms % d_output_rate_ms == 0);
|
||||
}
|
||||
// #### solve PVT and store the corrected observable set
|
||||
if (d_internal_pvt_solver->get_PVT(d_gnss_observables_map, d_observable_interval_ms / 1000.0, *d_sensor_data_aggregator))
|
||||
if (d_internal_pvt_solver->get_PVT(d_gnss_observables_map, d_observable_interval_ms / 1000.0, *d_sensor_data_aggregator, dump_this_epoch))
|
||||
{
|
||||
d_pvt_errors_counter = 0; // Reset consecutive PVT error counter
|
||||
const double Rx_clock_offset_s = d_internal_pvt_solver->get_time_offset_s();
|
||||
@@ -2310,10 +2319,14 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
||||
}
|
||||
}
|
||||
|
||||
// compute on the fly PVT solution
|
||||
if (flag_compute_pvt_output == true)
|
||||
// compute on the fly PVT solution at the output rate, on the clock-corrected
|
||||
// and interpolated observables. If the Rx clock correction is disabled, the user
|
||||
// solver is the same object as the internal one and already holds this epoch's
|
||||
// solution (flag_pvt_valid was set above), so solving again would feed the same
|
||||
// epoch twice to the solver and duplicate the dump record
|
||||
if (flag_compute_pvt_output == true && d_enable_rx_clock_correction == true)
|
||||
{
|
||||
flag_pvt_valid = d_user_pvt_solver->get_PVT(d_gnss_observables_map, d_output_rate_ms / 1000.0, *d_sensor_data_aggregator);
|
||||
flag_pvt_valid = d_user_pvt_solver->get_PVT(d_gnss_observables_map, d_output_rate_ms / 1000.0, *d_sensor_data_aggregator, true);
|
||||
}
|
||||
|
||||
if (flag_pvt_valid == true)
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
int32_t rinexobs_rate_ms = 0;
|
||||
int32_t an_rate_ms = 20;
|
||||
int32_t max_obs_block_rx_clock_offset_ms = 40;
|
||||
int32_t ref_gps_week = 0; // reference GPS week to resolve the mod-1024 week rollover in post-processing (0: use system clock)
|
||||
int udp_eph_port = 0;
|
||||
int rtk_trace_level = 0;
|
||||
|
||||
@@ -88,7 +89,6 @@ public:
|
||||
bool protobuf_enabled = true;
|
||||
bool enable_rx_clock_correction = true;
|
||||
bool show_local_time_zone = false;
|
||||
bool pre_2009_file = false;
|
||||
bool dump = false;
|
||||
bool dump_mat = true;
|
||||
bool log_source_timetag = false;
|
||||
|
||||
@@ -200,13 +200,13 @@ void Pvt_Solution::set_num_valid_observations(int num)
|
||||
}
|
||||
|
||||
|
||||
void Pvt_Solution::set_pre_2009_file(bool pre_2009_file)
|
||||
void Pvt_Solution::set_ref_gps_week(int32_t ref_week)
|
||||
{
|
||||
d_pre_2009_file = pre_2009_file;
|
||||
d_ref_gps_week = ref_week;
|
||||
}
|
||||
|
||||
|
||||
bool Pvt_Solution::is_pre_2009() const
|
||||
int32_t Pvt_Solution::get_ref_gps_week() const
|
||||
{
|
||||
return d_pre_2009_file;
|
||||
return d_ref_gps_week;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <array>
|
||||
#include <cstdint>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
@@ -53,7 +54,7 @@ public:
|
||||
double get_speed_over_ground() const; //!< Get RX speed over ground [m/s]
|
||||
double get_course_over_ground() const; //!< Get RX course over ground [deg]
|
||||
int get_num_valid_observations() const; //!< Get the number of valid pseudorange observations (valid satellites)
|
||||
bool is_pre_2009() const;
|
||||
int32_t get_ref_gps_week() const; //!< Get the reference GPS week used to resolve the mod-1024 week rollover (0 if unset)
|
||||
bool is_valid_position() const;
|
||||
|
||||
void set_rx_pos(const std::array<double, 3> &pos); //!< Set position: X, Y, Z in Cartesian ECEF coordinates [m]
|
||||
@@ -64,8 +65,8 @@ public:
|
||||
void set_speed_over_ground(double speed_m_s); //!< Set RX speed over ground [m/s]
|
||||
void set_course_over_ground(double cog_deg); //!< Set RX course over ground [deg]
|
||||
void set_valid_position(bool is_valid);
|
||||
void set_num_valid_observations(int num); //!< Set the number of valid pseudorange observations (valid satellites)
|
||||
void set_pre_2009_file(bool pre_2009_file); //!< Flag for the week rollover computation in post processing mode for signals older than 2009
|
||||
void set_num_valid_observations(int num); //!< Set the number of valid pseudorange observations (valid satellites)
|
||||
void set_ref_gps_week(int32_t ref_week); //!< Set the reference GPS week (e.g., derived from the date of signal capture) used to resolve the mod-1024 week rollover in post-processing mode
|
||||
|
||||
private:
|
||||
/*
|
||||
@@ -99,7 +100,8 @@ private:
|
||||
|
||||
int d_valid_observations{0}; // Number of valid observations in this epoch
|
||||
|
||||
bool d_pre_2009_file{false}; // Flag to correct week rollover in post processing mode for signals older than 2009
|
||||
int32_t d_ref_gps_week{0}; // Reference GPS week to correct the mod-1024 week rollover in post-processing mode (0: use system clock)
|
||||
|
||||
bool d_valid_position{false};
|
||||
};
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ boost::posix_time::ptime gps_time_to_ptime(int32_t gps_week, double tow_s)
|
||||
}
|
||||
|
||||
|
||||
int32_t expand_lnav_utc_week(int32_t utc_week, int32_t ephemeris_week, bool pre_2009_file)
|
||||
int32_t expand_lnav_utc_week(int32_t utc_week, int32_t ephemeris_week, int32_t ref_gps_week)
|
||||
{
|
||||
constexpr int32_t LNAV_UTC_WEEK_MODULUS = 256;
|
||||
constexpr int32_t LNAV_UTC_WEEK_HALF_MODULUS = LNAV_UTC_WEEK_MODULUS / 2;
|
||||
@@ -172,10 +172,10 @@ int32_t expand_lnav_utc_week(int32_t utc_week, int32_t ephemeris_week, bool pre_
|
||||
}
|
||||
if (utc_week > 255)
|
||||
{
|
||||
return adjgpsweek(utc_week, pre_2009_file);
|
||||
return adjgpsweek(utc_week, ref_gps_week);
|
||||
}
|
||||
|
||||
const int32_t reference_week = adjgpsweek(ephemeris_week, pre_2009_file);
|
||||
const int32_t reference_week = adjgpsweek(ephemeris_week, ref_gps_week);
|
||||
int32_t expanded_week = utc_week;
|
||||
while ((expanded_week - reference_week) < -LNAV_UTC_WEEK_HALF_MODULUS)
|
||||
{
|
||||
@@ -1277,7 +1277,7 @@ std::string get_gps_iono_beta_line_v2(const Gps_Iono& iono)
|
||||
}
|
||||
|
||||
|
||||
std::string get_delta_utc_line_v2(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& eph, bool pre_2009_file)
|
||||
std::string get_delta_utc_line_v2(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& eph, int32_t ref_gps_week)
|
||||
{
|
||||
std::string line;
|
||||
|
||||
@@ -1286,7 +1286,7 @@ std::string get_delta_utc_line_v2(const Gps_Utc_Model& utc_model, const Gps_Ephe
|
||||
line += rightJustify(doub2for(utc_model.A1, 18, 2), 19);
|
||||
line += rightJustify(std::to_string(utc_model.tot), 9);
|
||||
|
||||
const int32_t WN_T = expand_lnav_utc_week(utc_model.WN_T, eph.WN, pre_2009_file);
|
||||
const int32_t WN_T = expand_lnav_utc_week(utc_model.WN_T, eph.WN, ref_gps_week);
|
||||
line += rightJustify(std::to_string(WN_T), 9);
|
||||
|
||||
line += std::string(1, ' ');
|
||||
@@ -1394,9 +1394,9 @@ std::string get_beidou_iono_beta_line(const Beidou_Dnav_Iono& iono)
|
||||
}
|
||||
|
||||
|
||||
std::string get_gps_time_corr_line(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& gps_eph, bool pre_2009_file)
|
||||
std::string get_gps_time_corr_line(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& gps_eph, int32_t ref_gps_week)
|
||||
{
|
||||
int32_t WN_T = expand_lnav_utc_week(utc_model.WN_T, gps_eph.WN, pre_2009_file);
|
||||
int32_t WN_T = expand_lnav_utc_week(utc_model.WN_T, gps_eph.WN, ref_gps_week);
|
||||
|
||||
return get_time_corr_line("GPUT", utc_model.A0, utc_model.A1, &utc_model.tot, &WN_T);
|
||||
}
|
||||
@@ -1473,9 +1473,9 @@ std::string get_leap_second_line_v2(const Gps_Utc_Model& utc_model)
|
||||
}
|
||||
|
||||
|
||||
std::string get_leap_second_line(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& gps_eph, bool pre_2009_file)
|
||||
std::string get_leap_second_line(const Gps_Utc_Model& utc_model, const Gps_Ephemeris& gps_eph, int32_t ref_gps_week)
|
||||
{
|
||||
const int32_t WN_LSF = expand_lnav_utc_week(utc_model.WN_LSF, gps_eph.WN, pre_2009_file);
|
||||
const int32_t WN_LSF = expand_lnav_utc_week(utc_model.WN_LSF, gps_eph.WN, ref_gps_week);
|
||||
return get_leap_second_line(utc_model.DeltaT_LS, utc_model.DeltaT_LSF, WN_LSF, utc_model.DN);
|
||||
}
|
||||
|
||||
@@ -2157,7 +2157,7 @@ Rinex_Printer::Rinex_Printer(uint32_t signal_enabled_flags,
|
||||
int version,
|
||||
const std::string& base_path,
|
||||
const std::string& base_name,
|
||||
bool pre_2009_file) : Rinex_Printer(signal_enabled_flags, base_name, getAndCreateBaseRinexPath(base_path), version, pre_2009_file)
|
||||
int32_t ref_gps_week) : Rinex_Printer(signal_enabled_flags, base_name, getAndCreateBaseRinexPath(base_path), version, ref_gps_week)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -2166,23 +2166,23 @@ Rinex_Printer::Rinex_Printer(uint32_t signal_enabled_flags,
|
||||
const std::string& base_name,
|
||||
const std::string& base_rinex_path,
|
||||
int version,
|
||||
bool pre_2009_file) : observationType(getObservationTypes()),
|
||||
observationCode(getObservationCodes()),
|
||||
d_flags(signal_enabled_flags),
|
||||
d_version(get_version(d_flags, version)),
|
||||
d_stringVersion(d_version == 2 ? "2.11" : "3.02"), // Only version 2.11 and 3.02
|
||||
d_fake_cnav_iode(1),
|
||||
d_rinex_header_updated(false),
|
||||
d_rinex_header_gps_updated(!d_flags.has_gps),
|
||||
d_rinex_header_galileo_updated(!d_flags.has_galileo),
|
||||
d_rinex_header_glonass_updated(!d_flags.has_glonass),
|
||||
d_rinex_header_beidou_updated(!d_flags.has_beidou),
|
||||
d_rinex_header_written(false),
|
||||
d_pre_2009_file(pre_2009_file),
|
||||
navfilename(getNavFilePath(d_flags, d_version, base_name, base_rinex_path)),
|
||||
obsfilename(getFilePath("RINEX_FILE_TYPE_OBS", base_name, base_rinex_path)),
|
||||
navGlofilename(getFilePath("RINEX_FILE_TYPE_GLO_NAV", base_name, base_rinex_path)),
|
||||
output_navfilename({navfilename})
|
||||
int32_t ref_gps_week) : observationType(getObservationTypes()),
|
||||
observationCode(getObservationCodes()),
|
||||
d_flags(signal_enabled_flags),
|
||||
d_version(get_version(d_flags, version)),
|
||||
d_stringVersion(d_version == 2 ? "2.11" : "3.02"), // Only version 2.11 and 3.02
|
||||
d_fake_cnav_iode(1),
|
||||
d_rinex_header_updated(false),
|
||||
d_rinex_header_gps_updated(!d_flags.has_gps),
|
||||
d_rinex_header_galileo_updated(!d_flags.has_galileo),
|
||||
d_rinex_header_glonass_updated(!d_flags.has_glonass),
|
||||
d_rinex_header_beidou_updated(!d_flags.has_beidou),
|
||||
d_rinex_header_written(false),
|
||||
d_ref_gps_week(ref_gps_week),
|
||||
navfilename(getNavFilePath(d_flags, d_version, base_name, base_rinex_path)),
|
||||
obsfilename(getFilePath("RINEX_FILE_TYPE_OBS", base_name, base_rinex_path)),
|
||||
navGlofilename(getFilePath("RINEX_FILE_TYPE_GLO_NAV", base_name, base_rinex_path)),
|
||||
output_navfilename({navfilename})
|
||||
{
|
||||
std::map<std::string, std::fstream&> fileMap = {
|
||||
{navfilename, navFile},
|
||||
@@ -2370,15 +2370,15 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
{
|
||||
iono_lines.emplace_back(get_gps_iono_alpha_line_v2(pvt_solver->gps_iono));
|
||||
iono_lines.emplace_back(get_gps_iono_beta_line_v2(pvt_solver->gps_iono));
|
||||
time_corr_lines.emplace_back(get_delta_utc_line_v2(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file));
|
||||
time_corr_lines.emplace_back(get_delta_utc_line_v2(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week));
|
||||
leap_second_line = get_leap_second_line_v2(pvt_solver->gps_utc_model);
|
||||
}
|
||||
else
|
||||
{
|
||||
iono_lines.emplace_back(get_gps_iono_alpha_line(pvt_solver->gps_iono));
|
||||
iono_lines.emplace_back(get_gps_iono_beta_line(pvt_solver->gps_iono));
|
||||
time_corr_lines.emplace_back(get_gps_time_corr_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file));
|
||||
leap_second_line = get_leap_second_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file);
|
||||
time_corr_lines.emplace_back(get_gps_time_corr_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week));
|
||||
leap_second_line = get_leap_second_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week);
|
||||
}
|
||||
}
|
||||
else if (d_flags.check_any_enabled(GPS_2S, GPS_L5))
|
||||
@@ -2482,15 +2482,15 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
{
|
||||
nav_header_info.emplace_back("", "ION ALPHA", get_gps_iono_alpha_line_v2(pvt_solver->gps_iono));
|
||||
nav_header_info.emplace_back("", "ION BETA", get_gps_iono_beta_line_v2(pvt_solver->gps_iono));
|
||||
nav_header_info.emplace_back("", "DELTA-UTC", get_delta_utc_line_v2(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file));
|
||||
nav_header_info.emplace_back("", "DELTA-UTC", get_delta_utc_line_v2(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week));
|
||||
leap_second_line = get_leap_second_line_v2(pvt_solver->gps_utc_model);
|
||||
}
|
||||
else
|
||||
{
|
||||
nav_header_info.emplace_back("GPSA", "IONOSPHERIC CORR", get_gps_iono_alpha_line(pvt_solver->gps_iono));
|
||||
nav_header_info.emplace_back("GPSB", "IONOSPHERIC CORR", get_gps_iono_beta_line(pvt_solver->gps_iono));
|
||||
nav_header_info.emplace_back("GPUT", "TIME SYSTEM CORR", get_gps_time_corr_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file));
|
||||
leap_second_line = get_leap_second_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_pre_2009_file);
|
||||
nav_header_info.emplace_back("GPUT", "TIME SYSTEM CORR", get_gps_time_corr_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week));
|
||||
leap_second_line = get_leap_second_line(pvt_solver->gps_utc_model, gps_ephemeris_iter->second, d_ref_gps_week);
|
||||
}
|
||||
d_rinex_header_gps_updated = true;
|
||||
}
|
||||
@@ -2624,7 +2624,7 @@ void Rinex_Printer::log_rinex_nav_gps_nav(const std::map<int32_t, Gps_Ephemeris>
|
||||
|
||||
// -------- BROADCAST ORBIT - 5
|
||||
|
||||
auto GPS_week_continuous_number = static_cast<double>(adjgpsweek(eph.WN, d_pre_2009_file));
|
||||
auto GPS_week_continuous_number = static_cast<double>(adjgpsweek(eph.WN, d_ref_gps_week));
|
||||
// This week goes with Toe. This is different from the GPS week in the original satellite message!
|
||||
if (eph.toe < 7200.0)
|
||||
{
|
||||
@@ -3231,7 +3231,7 @@ boost::posix_time::ptime Rinex_Printer::compute_UTC_time(const Gps_Navigation_Me
|
||||
// if we are processing a file -> wait to leap second to resolve the ambiguity else take the week from the local system time
|
||||
// idea: resolve the ambiguity with the leap second
|
||||
const double utc_t = nav_msg.utc_time(nav_msg.get_TOW());
|
||||
return gps_time_to_ptime(adjgpsweek(nav_msg.get_GPS_week(), d_pre_2009_file), utc_t);
|
||||
return gps_time_to_ptime(adjgpsweek(nav_msg.get_GPS_week(), d_ref_gps_week), utc_t);
|
||||
}
|
||||
|
||||
|
||||
@@ -3254,7 +3254,7 @@ boost::posix_time::ptime Rinex_Printer::compute_GPS_time(const Gps_Ephemeris& ep
|
||||
// (see Section 3 in ftp://igs.org/pub/data/format/rinex211.txt)
|
||||
// (see Pag. 17 in ftp://igs.org/pub/data/format/rinex300.pdf)
|
||||
// No time correction here, since it will be done in the PVT processor
|
||||
int32_t gps_week = adjgpsweek(eph.WN, d_pre_2009_file);
|
||||
int32_t gps_week = adjgpsweek(eph.WN, d_ref_gps_week);
|
||||
// Handle TOW rollover
|
||||
if (obs_time < 18.0)
|
||||
{
|
||||
|
||||
@@ -89,7 +89,7 @@ public:
|
||||
int version = 3,
|
||||
const std::string& base_path = ".",
|
||||
const std::string& base_name = "-",
|
||||
bool pre_2009_file = false);
|
||||
int32_t ref_gps_week = 0);
|
||||
|
||||
/*!
|
||||
* \brief Destructor. Removes created files if empty.
|
||||
@@ -165,7 +165,7 @@ private:
|
||||
const std::string& base_name,
|
||||
const std::string& base_rinex_path,
|
||||
int version,
|
||||
bool pre_2009_file);
|
||||
int32_t ref_gps_week);
|
||||
|
||||
/*
|
||||
* Generates the GPS Observation data header
|
||||
@@ -250,7 +250,7 @@ private:
|
||||
bool d_rinex_header_glonass_updated;
|
||||
bool d_rinex_header_beidou_updated;
|
||||
bool d_rinex_header_written;
|
||||
const bool d_pre_2009_file;
|
||||
const int32_t d_ref_gps_week;
|
||||
|
||||
const std::string navfilename; // Name of RINEX navigation file
|
||||
const std::string obsfilename; // Name of RINEX observation file
|
||||
|
||||
@@ -1147,7 +1147,7 @@ void Rtklib_Solver::clear_applied_has_phase_bias_discontinuity(const HAS_obs_cor
|
||||
}
|
||||
|
||||
|
||||
bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_map, double kf_update_interval_s, const SensorDataAggregator &sensor_data_aggregator)
|
||||
bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_map, double kf_update_interval_s, const SensorDataAggregator &sensor_data_aggregator, bool dump_this_epoch)
|
||||
{
|
||||
std::map<int, Gnss_Synchro>::const_iterator gnss_observables_iter;
|
||||
std::map<int, Galileo_Ephemeris>::const_iterator galileo_ephemeris_iter;
|
||||
@@ -1392,7 +1392,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
eph_data[valid_obs] = eph_to_rtklib(gps_ephemeris_iter->second,
|
||||
this->d_has_orbit_corrections_store_map[gnss_str],
|
||||
this->d_has_clock_corrections_store_map[gnss_str],
|
||||
this->is_pre_2009());
|
||||
this->get_ref_gps_week());
|
||||
// convert observation from GNSS-SDR class to RTKLIB structure
|
||||
obsd_t newobs{};
|
||||
const HAS_obs_corrections *applied_has_correction = nullptr;
|
||||
@@ -1402,7 +1402,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
gps_ephemeris_iter->second.WN,
|
||||
d_rtklib_band_index[rtklib_sig],
|
||||
&applied_has_correction,
|
||||
this->is_pre_2009());
|
||||
this->get_ref_gps_week());
|
||||
clear_applied_has_phase_bias_discontinuity(applied_has_correction, prn);
|
||||
valid_obs++;
|
||||
}
|
||||
@@ -1855,7 +1855,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
// TOW
|
||||
d_monitor_pvt.TOW_at_current_symbol_ms = gnss_observables_map.cbegin()->second.TOW_at_current_symbol_ms;
|
||||
// WEEK
|
||||
d_monitor_pvt.week = adjgpsweek(d_nav_data.eph[0].week, this->is_pre_2009());
|
||||
d_monitor_pvt.week = adjgpsweek(d_nav_data.eph[0].week, this->get_ref_gps_week());
|
||||
// PVT GPS time
|
||||
d_monitor_pvt.RX_time = gnss_observables_map.cbegin()->second.RX_time;
|
||||
// User clock offset [s]
|
||||
@@ -1939,7 +1939,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
d_monitor_pvt.utc_time = stream.str();
|
||||
|
||||
// ######## LOG FILE #########
|
||||
if (d_flag_dump_enabled == true)
|
||||
if (d_flag_dump_enabled == true && dump_this_epoch == true)
|
||||
{
|
||||
// MULTIPLEXED FILE RECORDING - Record results to file
|
||||
try
|
||||
@@ -1950,7 +1950,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
tmp_uint32 = gnss_observables_map.cbegin()->second.TOW_at_current_symbol_ms;
|
||||
d_dump_file.write(reinterpret_cast<char *>(&tmp_uint32), sizeof(uint32_t));
|
||||
// WEEK
|
||||
tmp_uint32 = adjgpsweek(d_nav_data.eph[0].week, this->is_pre_2009());
|
||||
tmp_uint32 = adjgpsweek(d_nav_data.eph[0].week, this->get_ref_gps_week());
|
||||
d_dump_file.write(reinterpret_cast<char *>(&tmp_uint32), sizeof(uint32_t));
|
||||
// PVT GPS time
|
||||
tmp_double = gnss_observables_map.cbegin()->second.RX_time;
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
|
||||
~Rtklib_Solver() noexcept override;
|
||||
|
||||
bool get_PVT(const std::map<int, Gnss_Synchro>& gnss_observables_map, double kf_update_interval_s, const SensorDataAggregator& sensor_data_aggregator);
|
||||
bool get_PVT(const std::map<int, Gnss_Synchro>& gnss_observables_map, double kf_update_interval_s, const SensorDataAggregator& sensor_data_aggregator, bool dump_this_epoch = true);
|
||||
|
||||
double get_hdop() const override;
|
||||
double get_vdop() const override;
|
||||
|
||||
@@ -154,7 +154,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
int week,
|
||||
int band,
|
||||
const HAS_obs_corrections** applied_has_correction,
|
||||
bool pre_2009_file)
|
||||
int ref_week)
|
||||
{
|
||||
if (applied_has_correction != nullptr)
|
||||
{
|
||||
@@ -254,7 +254,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
}
|
||||
else
|
||||
{
|
||||
rtklib_obs.time = gpst2time(adjgpsweek(week, pre_2009_file), gnss_synchro.RX_time);
|
||||
rtklib_obs.time = gpst2time(adjgpsweek(week, ref_week), gnss_synchro.RX_time);
|
||||
}
|
||||
// account for the TOW crossover transitory in the first 18 seconds where the week is not yet updated!
|
||||
if (gnss_synchro.RX_time < 18.0)
|
||||
@@ -341,7 +341,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
const std::map<std::string, std::map<int, HAS_obs_corrections>>& has_obs_corr,
|
||||
int week,
|
||||
int band,
|
||||
bool pre_2009_file)
|
||||
int ref_week)
|
||||
{
|
||||
return insert_obs_to_rtklib(rtklib_obs,
|
||||
gnss_synchro,
|
||||
@@ -349,7 +349,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
week,
|
||||
band,
|
||||
static_cast<const HAS_obs_corrections**>(nullptr),
|
||||
pre_2009_file);
|
||||
ref_week);
|
||||
}
|
||||
|
||||
|
||||
@@ -357,7 +357,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
const Gnss_Synchro& gnss_synchro,
|
||||
int week,
|
||||
int band,
|
||||
bool pre_2009_file)
|
||||
int ref_week)
|
||||
{
|
||||
std::map<std::string, std::map<int, HAS_obs_corrections>> empty_map;
|
||||
return insert_obs_to_rtklib(rtklib_obs,
|
||||
@@ -365,7 +365,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
empty_map,
|
||||
week,
|
||||
band,
|
||||
pre_2009_file);
|
||||
ref_week);
|
||||
}
|
||||
|
||||
|
||||
@@ -520,18 +520,18 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph,
|
||||
}
|
||||
|
||||
|
||||
eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph, bool pre_2009_file)
|
||||
eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph, int ref_week)
|
||||
{
|
||||
std::map<int, HAS_orbit_corrections> empty_orbit_map;
|
||||
std::map<int, HAS_clock_corrections> empty_clock_map;
|
||||
return eph_to_rtklib(gps_eph, empty_orbit_map, empty_clock_map, pre_2009_file);
|
||||
return eph_to_rtklib(gps_eph, empty_orbit_map, empty_clock_map, ref_week);
|
||||
}
|
||||
|
||||
|
||||
eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph,
|
||||
const std::map<int, HAS_orbit_corrections>& orbit_correction_map,
|
||||
const std::map<int, HAS_clock_corrections>& clock_correction_map,
|
||||
bool pre_2009_file)
|
||||
int ref_week)
|
||||
{
|
||||
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, false, 0, 0, 0, 0, 0.0, -1, 0};
|
||||
@@ -549,7 +549,7 @@ eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph,
|
||||
rtklib_sat.Adot = 0; // only in CNAV;
|
||||
rtklib_sat.ndot = 0; // only in CNAV;
|
||||
|
||||
rtklib_sat.week = adjgpsweek(gps_eph.WN, pre_2009_file); /* week of tow */
|
||||
rtklib_sat.week = adjgpsweek(gps_eph.WN, ref_week); /* week of tow */
|
||||
rtklib_sat.cic = gps_eph.Cic;
|
||||
rtklib_sat.cis = gps_eph.Cis;
|
||||
rtklib_sat.cuc = gps_eph.Cuc;
|
||||
|
||||
@@ -91,12 +91,12 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph,
|
||||
const std::map<int, HAS_clock_corrections>& clock_correction_map);
|
||||
|
||||
eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph,
|
||||
bool pre_2009_file = false);
|
||||
int ref_week = 0);
|
||||
|
||||
eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph,
|
||||
const std::map<int, HAS_orbit_corrections>& orbit_correction_map,
|
||||
const std::map<int, HAS_clock_corrections>& clock_correction_map,
|
||||
bool pre_2009_file = false);
|
||||
int ref_week = 0);
|
||||
|
||||
eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris& gps_cnav_eph);
|
||||
|
||||
@@ -121,16 +121,16 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
int week,
|
||||
int band,
|
||||
const HAS_obs_corrections** applied_has_correction,
|
||||
bool pre_2009_file);
|
||||
int ref_week);
|
||||
|
||||
obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs,
|
||||
const Gnss_Synchro& gnss_synchro,
|
||||
const std::map<std::string, std::map<int, HAS_obs_corrections>>& has_obs_corr,
|
||||
int week,
|
||||
int band,
|
||||
bool pre_2009_file = false);
|
||||
int ref_week = 0);
|
||||
|
||||
obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro, int week, int band, bool pre_2009_file = false);
|
||||
obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro, int week, int band, int ref_week = 0);
|
||||
|
||||
|
||||
/** \} */
|
||||
|
||||
@@ -172,7 +172,7 @@ int decode_type3(rtcm_t *rtcm)
|
||||
|
||||
|
||||
/* decode type 14: gps time of week ------------------------------------------*/
|
||||
int decode_type14(rtcm_t *rtcm, bool pre_2009_file)
|
||||
int decode_type14(rtcm_t *rtcm, int ref_week)
|
||||
{
|
||||
double zcnt;
|
||||
int i = 48;
|
||||
@@ -196,7 +196,7 @@ int decode_type14(rtcm_t *rtcm, bool pre_2009_file)
|
||||
trace(2, "rtcm2 14 length error: len=%d\n", rtcm->len);
|
||||
return -1;
|
||||
}
|
||||
week = adjgpsweek(week, pre_2009_file);
|
||||
week = adjgpsweek(week, ref_week);
|
||||
rtcm->time = gpst2time(week, hour * 3600.0 + zcnt * 0.6);
|
||||
rtcm->nav.leaps = leaps;
|
||||
return 6;
|
||||
@@ -224,7 +224,7 @@ int decode_type16(rtcm_t *rtcm)
|
||||
|
||||
|
||||
/* decode type 17: gps ephemerides -------------------------------------------*/
|
||||
int decode_type17(rtcm_t *rtcm, bool pre_2009_file)
|
||||
int decode_type17(rtcm_t *rtcm, int ref_week)
|
||||
{
|
||||
eph_t eph = {0, -1, -1, 0, 0, 0, 0, 0, {0, 0.0}, {0, 0.0}, {0, 0.0},
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
@@ -309,7 +309,7 @@ int decode_type17(rtcm_t *rtcm, bool pre_2009_file)
|
||||
}
|
||||
sat = satno(SYS_GPS, prn);
|
||||
eph.sat = sat;
|
||||
eph.week = adjgpsweek(week, pre_2009_file);
|
||||
eph.week = adjgpsweek(week, ref_week);
|
||||
eph.toe = gpst2time(eph.week, eph.toes);
|
||||
eph.toc = gpst2time(eph.week, toc);
|
||||
eph.ttr = rtcm->time;
|
||||
|
||||
@@ -41,9 +41,9 @@ void adjhour(rtcm_t *rtcm, double zcnt);
|
||||
int obsindex(obs_t *obs, gtime_t time, int sat);
|
||||
int decode_type1(rtcm_t *rtcm);
|
||||
int decode_type3(rtcm_t *rtcm);
|
||||
int decode_type14(rtcm_t *rtcm, bool pre_2009_file = false);
|
||||
int decode_type14(rtcm_t *rtcm, int ref_week = 0);
|
||||
int decode_type16(rtcm_t *rtcm);
|
||||
int decode_type17(rtcm_t *rtcm, bool pre_2009_file = false);
|
||||
int decode_type17(rtcm_t *rtcm, int ref_week = 0);
|
||||
int decode_type18(rtcm_t *rtcm);
|
||||
int decode_type19(rtcm_t *rtcm);
|
||||
int decode_type22(rtcm_t *rtcm);
|
||||
|
||||
@@ -1015,7 +1015,7 @@ int decode_type1013(rtcm_t *rtcm __attribute__((unused)))
|
||||
|
||||
|
||||
/* decode type 1019: gps ephemerides -----------------------------------------*/
|
||||
int decode_type1019(rtcm_t *rtcm, bool pre_2009_file)
|
||||
int decode_type1019(rtcm_t *rtcm, int ref_week)
|
||||
{
|
||||
eph_t eph = {0, -1, -1, 0, 0, 0, 0, 0, {0, 0.0}, {0, 0.0}, {0, 0.0},
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
@@ -1115,7 +1115,7 @@ int decode_type1019(rtcm_t *rtcm, bool pre_2009_file)
|
||||
return -1;
|
||||
}
|
||||
eph.sat = sat;
|
||||
eph.week = adjgpsweek(week, pre_2009_file);
|
||||
eph.week = adjgpsweek(week, ref_week);
|
||||
eph.toe = gpst2time(eph.week, eph.toes);
|
||||
eph.toc = gpst2time(eph.week, toc);
|
||||
eph.ttr = rtcm->time;
|
||||
@@ -1514,7 +1514,7 @@ int decode_type1039(rtcm_t *rtcm __attribute__((unused)))
|
||||
|
||||
|
||||
/* decode type 1044: qzss ephemerides (ref [15]) -----------------------------*/
|
||||
int decode_type1044(rtcm_t *rtcm, bool pre_2009_file)
|
||||
int decode_type1044(rtcm_t *rtcm, int ref_week)
|
||||
{
|
||||
eph_t eph = {0, -1, -1, 0, 0, 0, 0, 0, {0, 0.0}, {0, 0.0}, {0, 0.0},
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
@@ -1607,7 +1607,7 @@ int decode_type1044(rtcm_t *rtcm, bool pre_2009_file)
|
||||
return -1;
|
||||
}
|
||||
eph.sat = sat;
|
||||
eph.week = adjgpsweek(week, pre_2009_file);
|
||||
eph.week = adjgpsweek(week, ref_week);
|
||||
eph.toe = gpst2time(eph.week, eph.toes);
|
||||
eph.toc = gpst2time(eph.week, toc);
|
||||
eph.ttr = rtcm->time;
|
||||
|
||||
@@ -129,7 +129,7 @@ int decode_type1012(rtcm_t *rtcm);
|
||||
|
||||
int decode_type1013(rtcm_t *rtcm);
|
||||
|
||||
int decode_type1019(rtcm_t *rtcm, bool pre_2009_file = false);
|
||||
int decode_type1019(rtcm_t *rtcm, int ref_week = 0);
|
||||
|
||||
int decode_type1020(rtcm_t *rtcm);
|
||||
|
||||
@@ -167,7 +167,7 @@ int decode_type1038(rtcm_t *rtcm);
|
||||
|
||||
int decode_type1039(rtcm_t *rtcm);
|
||||
|
||||
int decode_type1044(rtcm_t *rtcm, bool pre_2009_file = false);
|
||||
int decode_type1044(rtcm_t *rtcm, int ref_week = 0);
|
||||
|
||||
int decode_type1045(rtcm_t *rtcm);
|
||||
|
||||
|
||||
@@ -2114,43 +2114,35 @@ double time2doy(gtime_t t)
|
||||
|
||||
|
||||
/* adjust gps week number ------------------------------------------------------
|
||||
* adjust gps week number using cpu time
|
||||
* args : int week I not-adjusted gps week number
|
||||
* adjust gps week number using a reference week or cpu time
|
||||
* args : int week I not-adjusted (mod-1024) gps week number
|
||||
* int ref_week I full gps week number used as reference to
|
||||
* resolve the mod-1024 rollover, e.g. derived
|
||||
* from the approximate date of signal capture
|
||||
* when post-processing recorded files
|
||||
* (0: use cpu time)
|
||||
* return : adjusted gps week number
|
||||
*-----------------------------------------------------------------------------*/
|
||||
int adjgpsweek(int week, bool pre_2009_file)
|
||||
int adjgpsweek(int week, int ref_week)
|
||||
{
|
||||
// int w;
|
||||
// if (week < 512)
|
||||
// {
|
||||
// //assume receiver date > 7 april 2019
|
||||
// w = week + 2048; //add weeks from 6-january-1980 to week rollover in 6 april 2019
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //assume receiver date < 7 april 2019
|
||||
// w = week + 1024; //add weeks from 6-january-1980 to week rollover in 21 august 1999
|
||||
// }
|
||||
int w;
|
||||
if (week > 1023)
|
||||
{
|
||||
return week;
|
||||
}
|
||||
|
||||
if (pre_2009_file == false)
|
||||
if (ref_week > 0)
|
||||
{
|
||||
(void)time2gpst(utc2gpst(timeget()), &w);
|
||||
if (w < 1560)
|
||||
{
|
||||
w = 1560; /* use 2009/12/1 if time is earlier than 2009/12/1 */
|
||||
}
|
||||
return week + (w - week + 512) / 1024 * 1024;
|
||||
/* pick the 1024-week era that places the output closest to ref_week */
|
||||
return week + (ref_week - week + 512) / 1024 * 1024;
|
||||
}
|
||||
else
|
||||
|
||||
(void)time2gpst(utc2gpst(timeget()), &w);
|
||||
if (w < 1560)
|
||||
{
|
||||
w = week + 1024; // add weeks from 6-january-1980 to week rollover in 21 august 1999
|
||||
return w;
|
||||
w = 1560; /* use 2009/12/1 if time is earlier than 2009/12/1 */
|
||||
}
|
||||
return week + (w - week + 512) / 1024 * 1024;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ double utc2gmst(gtime_t t, double ut1_utc);
|
||||
void time2str(gtime_t t, char *s, int n);
|
||||
char *time_str(gtime_t t, int n);
|
||||
double time2doy(gtime_t t);
|
||||
int adjgpsweek(int week, bool pre_2009_file = false);
|
||||
int adjgpsweek(int week, int ref_week = 0);
|
||||
unsigned int tickget();
|
||||
void sleepms(int ms);
|
||||
void deg2dms(double deg, double *dms, int ndec);
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "gps_ephemeris.h" // for Gps_Ephemeris
|
||||
#include "gps_iono.h" // for Gps_Iono
|
||||
#include "gps_utc_model.h" // for Gps_Utc_Model
|
||||
#include "gps_week_rollover.h" // for gps_ref_week_from_config
|
||||
#include "pvt_interface.h" // for PvtInterface
|
||||
#include "rtklib.h" // for gtime_t, alm_t
|
||||
#include "rtklib_conversions.h" // for alm_to_rtklib
|
||||
@@ -169,8 +170,11 @@ ControlThread::ControlThread(std::shared_ptr<ConfigurationInterface> configurati
|
||||
void ControlThread::init()
|
||||
{
|
||||
telecommand_enabled_ = configuration_->property("GNSS-SDR.telecommand_enabled", false);
|
||||
// OPTIONAL: specify a custom year to override the system time in order to postprocess old gnss records and avoid wrong week rollover
|
||||
pre_2009_file_ = configuration_->property("GNSS-SDR.pre_2009_file", false);
|
||||
// OPTIONAL: approximate date of the signal capture, used to resolve the GPS
|
||||
// mod-1024 week-number rollover when post-processing old gnss records
|
||||
ref_gps_week_ = gps_ref_week_from_config(
|
||||
configuration_->property("GNSS-SDR.observation_date", std::string("")),
|
||||
configuration_->property("GNSS-SDR.pre_2009_file", false));
|
||||
// Instantiates a control queue, a GNSS flowgraph, and a control message factory
|
||||
control_queue_ = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||
cmd_interface_.set_msg_queue(control_queue_); // set also the queue pointer for the telecommand thread
|
||||
@@ -1055,7 +1059,7 @@ std::vector<std::pair<int, Gnss_Satellite>> ControlThread::get_visible_sats(time
|
||||
const std::map<int, Gps_Ephemeris> gps_eph_map = pvt_ptr->get_gps_ephemeris();
|
||||
for (const auto &it : gps_eph_map)
|
||||
{
|
||||
const eph_t rtklib_eph = eph_to_rtklib(it.second, pre_2009_file_);
|
||||
const eph_t rtklib_eph = eph_to_rtklib(it.second, ref_gps_week_);
|
||||
std::array<double, 3> r_sat{};
|
||||
double clock_bias_s;
|
||||
double sat_pos_variance_m2;
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <pmt/pmt.h>
|
||||
#include <array> // for array
|
||||
#include <cstddef> // for size_t
|
||||
#include <cstdint> // for int32_t
|
||||
#include <memory> // for shared_ptr
|
||||
#include <string> // for string
|
||||
#include <thread> // for std::thread
|
||||
@@ -223,7 +224,8 @@ private:
|
||||
bool stop_;
|
||||
bool restart_;
|
||||
bool telecommand_enabled_;
|
||||
bool pre_2009_file_; // to override the system time to postprocess old gnss records and avoid wrong week rollover
|
||||
|
||||
int32_t ref_gps_week_; // reference GPS week to resolve the mod-1024 week rollover when post-processing old gnss records (0: use system clock)
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ set(SYSTEM_PARAMETERS_SOURCES
|
||||
gnss_signal.cc
|
||||
gps_navigation_message.cc
|
||||
gps_ephemeris.cc
|
||||
gps_week_rollover.cc
|
||||
galileo_utc_model.cc
|
||||
galileo_ephemeris.cc
|
||||
galileo_almanac_helper.cc
|
||||
@@ -43,6 +44,7 @@ set(SYSTEM_PARAMETERS_HEADERS
|
||||
gps_iono.h
|
||||
gps_almanac.h
|
||||
gps_utc_model.h
|
||||
gps_week_rollover.h
|
||||
gps_acq_assist.h
|
||||
agnss_ref_time.h
|
||||
agnss_ref_location.h
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
/*!
|
||||
* \file gps_week_rollover.cc
|
||||
* \brief Resolution of the GPS mod-1024 week-number rollover from the
|
||||
* receiver configuration
|
||||
* \author Carles Fernandez-Prades, 2026. cfernandez(at)cttc.es
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
|
||||
* This file is part of GNSS-SDR.
|
||||
*
|
||||
* Copyright (C) 2010-2026 (see AUTHORS file for a list of contributors)
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#include "gps_week_rollover.h"
|
||||
#include <boost/date_time/gregorian/gregorian.hpp>
|
||||
#include <algorithm>
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
|
||||
namespace
|
||||
{
|
||||
// Parses "YYYY-MM-DD" or "YYYY" ("YYYY" maps to July 1 of that year).
|
||||
// Returns a not_a_date_time value if the string cannot be parsed.
|
||||
boost::gregorian::date parse_observation_date(const std::string& date_str)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (date_str.size() == 4 && std::all_of(date_str.begin(), date_str.end(), [](char c) { return c >= '0' && c <= '9'; }))
|
||||
{
|
||||
return {static_cast<uint16_t>(std::stoi(date_str)), 7, 1};
|
||||
}
|
||||
return boost::gregorian::from_simple_string(date_str);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
return boost::gregorian::date(boost::gregorian::not_a_date_time);
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
||||
int32_t gps_ref_week_from_config(const std::string& observation_date, bool pre_2009_file)
|
||||
{
|
||||
const boost::gregorian::date gps_epoch(1980, 1, 6);
|
||||
if (!observation_date.empty())
|
||||
{
|
||||
const boost::gregorian::date date = parse_observation_date(observation_date);
|
||||
if (date.is_not_a_date())
|
||||
{
|
||||
std::cout << "Warning: could not parse GNSS-SDR.observation_date=" << observation_date
|
||||
<< " (expected YYYY-MM-DD or YYYY format), ignoring it.\n";
|
||||
}
|
||||
else if (date < gps_epoch)
|
||||
{
|
||||
std::cout << "Warning: GNSS-SDR.observation_date=" << observation_date
|
||||
<< " is earlier than the GPS epoch (1980-01-06), ignoring it.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pre_2009_file)
|
||||
{
|
||||
std::cout << "Warning: the deprecated GNSS-SDR.pre_2009_file flag is ignored because GNSS-SDR.observation_date is set.\n";
|
||||
}
|
||||
return static_cast<int32_t>((date - gps_epoch).days() / 7);
|
||||
}
|
||||
}
|
||||
if (pre_2009_file)
|
||||
{
|
||||
static bool notice_printed = false;
|
||||
if (!notice_printed)
|
||||
{
|
||||
std::cout << "Warning: GNSS-SDR.pre_2009_file is deprecated. Please set GNSS-SDR.observation_date=YYYY-MM-DD\n"
|
||||
<< "(the approximate date of the signal capture) instead, which also works for files\n"
|
||||
<< "recorded after the April 2019 week rollover.\n";
|
||||
notice_printed = true;
|
||||
}
|
||||
// Mid-point of the Aug 1999 - Apr 2019 era: reproduces the legacy
|
||||
// fixed +1024 week adjustment for every mod-1024 week number
|
||||
return 1535;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/*!
|
||||
* \file gps_week_rollover.h
|
||||
* \brief Resolution of the GPS mod-1024 week-number rollover from the
|
||||
* receiver configuration
|
||||
* \author Carles Fernandez-Prades, 2026. cfernandez(at)cttc.es
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
|
||||
* This file is part of GNSS-SDR.
|
||||
*
|
||||
* Copyright (C) 2010-2026 (see AUTHORS file for a list of contributors)
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#ifndef GNSS_SDR_GPS_WEEK_ROLLOVER_H
|
||||
#define GNSS_SDR_GPS_WEEK_ROLLOVER_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup Core
|
||||
* \{ */
|
||||
/** \addtogroup System_Parameters
|
||||
* \{ */
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Derives the reference GPS week number used to resolve the GPS
|
||||
* mod-1024 week-number rollover when post-processing recorded signal files.
|
||||
*
|
||||
* \param observation_date Value of the GNSS-SDR.observation_date
|
||||
* configuration option: approximate date of the signal capture, in
|
||||
* "YYYY-MM-DD" or "YYYY" format. An empty string means "not set".
|
||||
* \param pre_2009_file Value of the deprecated GNSS-SDR.pre_2009_file flag.
|
||||
*
|
||||
* \returns The full GPS week number of the observation date. Each mod-1024
|
||||
* broadcast week number is then resolved to the 1024-week era that places it
|
||||
* closest to this reference week (see adjgpsweek()). Returns 0 if neither
|
||||
* option is set, which keeps the default behavior of deriving the era from
|
||||
* the system clock. If only the deprecated flag is set, it returns week 1535
|
||||
* (mid-point of the 1999-2019 era), which reproduces the legacy fixed +1024
|
||||
* week adjustment, and a one-time deprecation notice is printed.
|
||||
*/
|
||||
int32_t gps_ref_week_from_config(const std::string& observation_date, bool pre_2009_file);
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_WEEK_ROLLOVER_H
|
||||
@@ -1,6 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
|
||||
<!-- SPDX-FileCopyrightText: 2018 Javier Arribas <javier.arribas@cttc.es> -->
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="12">
|
||||
<GNSS-SDR_ephemeris_map class_id="0" tracking_level="0" version="0">
|
||||
@@ -9,474 +7,496 @@
|
||||
<item class_id="1" tracking_level="0" version="0">
|
||||
<first>1</first>
|
||||
<second class_id="2" tracking_level="0" version="0">
|
||||
<i_satellite_PRN>1</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>9.20000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>9.20000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>1.83125000000000000e+01</d_Crs>
|
||||
<d_Delta_n>4.86413118201646669e-09</d_Delta_n>
|
||||
<d_M_0>2.06468198930943725e+00</d_M_0>
|
||||
<d_Cuc>9.42498445510864258e-07</d_Cuc>
|
||||
<d_e_eccentricity>3.73082922305911736e-03</d_e_eccentricity>
|
||||
<d_Cus>5.76488673686981201e-06</d_Cus>
|
||||
<d_sqrt_A>5.15366174697875977e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-5.40167093276977539e-08</d_Cic>
|
||||
<d_OMEGA0>9.52167247599200905e-01</d_OMEGA0>
|
||||
<d_Cis>1.86264514923095703e-08</d_Cis>
|
||||
<d_i_0>9.61377026423456127e-01</d_i_0>
|
||||
<d_Crc>2.66968750000000000e+02</d_Crc>
|
||||
<d_OMEGA>4.44935333708291858e-01</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.14641075927847669e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>4.15017287135849497e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>5.12227416038513184e-09</d_TGD>
|
||||
<d_IODC>9.20000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>-1.09937973320484161e-05</d_A_f0>
|
||||
<d_A_f1>3.41060513164847988e-13</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>1</PRN>
|
||||
<M_0>2.06468198930943725e+00</M_0>
|
||||
<delta_n>4.86413118201646669e-09</delta_n>
|
||||
<ecc>3.73082922305911736e-03</ecc>
|
||||
<sqrtA>5.15366174697875977e+03</sqrtA>
|
||||
<OMEGA_0>9.52167247599200905e-01</OMEGA_0>
|
||||
<i_0>9.61377026423456127e-01</i_0>
|
||||
<omega>4.44935333708291858e-01</omega>
|
||||
<OMEGAdot>-8.14641075927847669e-09</OMEGAdot>
|
||||
<idot>4.15017287135849497e-10</idot>
|
||||
<Cuc>9.42498445510864258e-07</Cuc>
|
||||
<Cus>5.76488673686981201e-06</Cus>
|
||||
<Crc>2.66968750000000000e+02</Crc>
|
||||
<Crs>1.83125000000000000e+01</Crs>
|
||||
<Cic>-5.40167093276977539e-08</Cic>
|
||||
<Cis>1.86264514923095703e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>-1.09937973320484161e-05</af0>
|
||||
<af1>3.41060513164847988e-13</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>92</IODE_SF2>
|
||||
<IODE_SF3>92</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>5.12227416038513184e-09</TGD>
|
||||
<IODC>92</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>2</first>
|
||||
<second>
|
||||
<i_satellite_PRN>2</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>5.50000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>5.50000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>2.22812500000000000e+01</d_Crs>
|
||||
<d_Delta_n>5.12771358985317661e-09</d_Delta_n>
|
||||
<d_M_0>2.75926302782053146e+00</d_M_0>
|
||||
<d_Cuc>1.10082328319549561e-06</d_Cuc>
|
||||
<d_e_eccentricity>1.40569622162729484e-02</d_e_eccentricity>
|
||||
<d_Cus>6.26407563686370850e-06</d_Cus>
|
||||
<d_sqrt_A>5.15372654151916504e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-1.86264514923095703e-08</d_Cic>
|
||||
<d_OMEGA0>9.18037446344556307e-01</d_OMEGA0>
|
||||
<d_Cis>-2.16066837310791016e-07</d_Cis>
|
||||
<d_i_0>9.39991586696909520e-01</d_i_0>
|
||||
<d_Crc>2.45468750000000000e+02</d_Crc>
|
||||
<d_OMEGA>-2.35598690357981555e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.07140763509730069e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>5.25736184736635464e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-2.00234353542327881e-08</d_TGD>
|
||||
<d_IODC>5.50000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>5.36850653588771820e-04</d_A_f0>
|
||||
<d_A_f1>2.16004991671070416e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>2</PRN>
|
||||
<M_0>2.75926302782053146e+00</M_0>
|
||||
<delta_n>5.12771358985317661e-09</delta_n>
|
||||
<ecc>1.40569622162729484e-02</ecc>
|
||||
<sqrtA>5.15372654151916504e+03</sqrtA>
|
||||
<OMEGA_0>9.18037446344556307e-01</OMEGA_0>
|
||||
<i_0>9.39991586696909520e-01</i_0>
|
||||
<omega>-2.35598690357981555e+00</omega>
|
||||
<OMEGAdot>-8.07140763509730069e-09</OMEGAdot>
|
||||
<idot>5.25736184736635464e-10</idot>
|
||||
<Cuc>1.10082328319549561e-06</Cuc>
|
||||
<Cus>6.26407563686370850e-06</Cus>
|
||||
<Crc>2.45468750000000000e+02</Crc>
|
||||
<Crs>2.22812500000000000e+01</Crs>
|
||||
<Cic>-1.86264514923095703e-08</Cic>
|
||||
<Cis>-2.16066837310791016e-07</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>5.36850653588771820e-04</af0>
|
||||
<af1>2.16004991671070416e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>55</IODE_SF2>
|
||||
<IODE_SF3>55</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-2.00234353542327881e-08</TGD>
|
||||
<IODC>55</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>3</first>
|
||||
<second>
|
||||
<i_satellite_PRN>3</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>7.00000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>7.00000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>-2.04375000000000000e+01</d_Crs>
|
||||
<d_Delta_n>4.75769817722603366e-09</d_Delta_n>
|
||||
<d_M_0>-1.78871492992227910e+00</d_M_0>
|
||||
<d_Cuc>-1.30012631416320801e-06</d_Cuc>
|
||||
<d_e_eccentricity>9.70319728367030512e-04</d_e_eccentricity>
|
||||
<d_Cus>8.26455652713775635e-06</d_Cus>
|
||||
<d_sqrt_A>5.15378153991699219e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>7.82310962677001953e-08</d_Cic>
|
||||
<d_OMEGA0>1.99297660614955263e+00</d_OMEGA0>
|
||||
<d_Cis>-1.11758708953857422e-08</d_Cis>
|
||||
<d_i_0>9.59058451948379909e-01</d_i_0>
|
||||
<d_Crc>2.19593750000000000e+02</d_Crc>
|
||||
<d_OMEGA>-3.00536842405812843e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.02712007605698577e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-5.17164399115929480e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>5.12227416038513184e-09</d_TGD>
|
||||
<d_IODC>7.00000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>8.80691222846508026e-05</d_A_f0>
|
||||
<d_A_f1>2.89901436190120811e-11</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>3</PRN>
|
||||
<M_0>-1.78871492992227910e+00</M_0>
|
||||
<delta_n>4.75769817722603366e-09</delta_n>
|
||||
<ecc>9.70319728367030512e-04</ecc>
|
||||
<sqrtA>5.15378153991699219e+03</sqrtA>
|
||||
<OMEGA_0>1.99297660614955263e+00</OMEGA_0>
|
||||
<i_0>9.59058451948379909e-01</i_0>
|
||||
<omega>-3.00536842405812843e+00</omega>
|
||||
<OMEGAdot>-8.02712007605698577e-09</OMEGAdot>
|
||||
<idot>-5.17164399115929480e-10</idot>
|
||||
<Cuc>-1.30012631416320801e-06</Cuc>
|
||||
<Cus>8.26455652713775635e-06</Cus>
|
||||
<Crc>2.19593750000000000e+02</Crc>
|
||||
<Crs>-2.04375000000000000e+01</Crs>
|
||||
<Cic>7.82310962677001953e-08</Cic>
|
||||
<Cis>-1.11758708953857422e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>8.80691222846508026e-05</af0>
|
||||
<af1>2.89901436190120811e-11</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>70</IODE_SF2>
|
||||
<IODE_SF3>70</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>5.12227416038513184e-09</TGD>
|
||||
<IODC>70</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>6</first>
|
||||
<second>
|
||||
<i_satellite_PRN>6</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>2.30000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>2.30000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>1.63750000000000000e+01</d_Crs>
|
||||
<d_Delta_n>4.76305554323897445e-09</d_Delta_n>
|
||||
<d_M_0>-1.28531071631616522e+00</d_M_0>
|
||||
<d_Cuc>9.12696123123168945e-07</d_Cuc>
|
||||
<d_e_eccentricity>5.50022465176880251e-04</d_e_eccentricity>
|
||||
<d_Cus>6.24358654022216797e-06</d_Cus>
|
||||
<d_sqrt_A>5.15365166282653809e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-1.30385160446166992e-08</d_Cic>
|
||||
<d_OMEGA0>9.43624288779246867e-01</d_OMEGA0>
|
||||
<d_Cis>-1.86264514923095703e-09</d_Cis>
|
||||
<d_i_0>9.61292940818096020e-01</d_i_0>
|
||||
<d_Crc>2.58406250000000000e+02</d_Crc>
|
||||
<d_OMEGA>2.29191014519991665e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.08069373618639861e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>4.79305679291144535e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>4.65661287307739258e-09</d_TGD>
|
||||
<d_IODC>2.30000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>3.07881273329257965e-05</d_A_f0>
|
||||
<d_A_f1>8.18545231595635253e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>6</PRN>
|
||||
<M_0>-1.28531071631616522e+00</M_0>
|
||||
<delta_n>4.76305554323897445e-09</delta_n>
|
||||
<ecc>5.50022465176880251e-04</ecc>
|
||||
<sqrtA>5.15365166282653809e+03</sqrtA>
|
||||
<OMEGA_0>9.43624288779246867e-01</OMEGA_0>
|
||||
<i_0>9.61292940818096020e-01</i_0>
|
||||
<omega>2.29191014519991665e+00</omega>
|
||||
<OMEGAdot>-8.08069373618639861e-09</OMEGAdot>
|
||||
<idot>4.79305679291144535e-10</idot>
|
||||
<Cuc>9.12696123123168945e-07</Cuc>
|
||||
<Cus>6.24358654022216797e-06</Cus>
|
||||
<Crc>2.58406250000000000e+02</Crc>
|
||||
<Crs>1.63750000000000000e+01</Crs>
|
||||
<Cic>-1.30385160446166992e-08</Cic>
|
||||
<Cis>-1.86264514923095703e-09</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>3.07881273329257965e-05</af0>
|
||||
<af1>8.18545231595635253e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>23</IODE_SF2>
|
||||
<IODE_SF3>23</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>4.65661287307739258e-09</TGD>
|
||||
<IODC>23</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>9</first>
|
||||
<second>
|
||||
<i_satellite_PRN>9</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>4.70000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>4.70000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>1.12906250000000000e+02</d_Crs>
|
||||
<d_Delta_n>4.37911097897818463e-09</d_Delta_n>
|
||||
<d_M_0>-2.75253879947800195e+00</d_M_0>
|
||||
<d_Cuc>5.85243105888366699e-06</d_Cuc>
|
||||
<d_e_eccentricity>2.16206186451017829e-04</d_e_eccentricity>
|
||||
<d_Cus>1.16303563117980957e-05</d_Cus>
|
||||
<d_sqrt_A>5.15369471168518066e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>1.67638063430786133e-08</d_Cic>
|
||||
<d_OMEGA0>3.03742251571970812e+00</d_OMEGA0>
|
||||
<d_Cis>-1.11758708953857422e-08</d_Cis>
|
||||
<d_i_0>9.59160503650671514e-01</d_i_0>
|
||||
<d_Crc>1.56125000000000000e+02</d_Crc>
|
||||
<d_OMEGA>2.60662251530764344e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-7.85854162551643464e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-3.46443002170201364e-11</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>4.65661287307739258e-10</d_TGD>
|
||||
<d_IODC>4.70000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>-3.18535603582859039e-05</d_A_f0>
|
||||
<d_A_f1>-9.66338120633736091e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>9</PRN>
|
||||
<M_0>-2.75253879947800195e+00</M_0>
|
||||
<delta_n>4.37911097897818463e-09</delta_n>
|
||||
<ecc>2.16206186451017829e-04</ecc>
|
||||
<sqrtA>5.15369471168518066e+03</sqrtA>
|
||||
<OMEGA_0>3.03742251571970812e+00</OMEGA_0>
|
||||
<i_0>9.59160503650671514e-01</i_0>
|
||||
<omega>2.60662251530764344e+00</omega>
|
||||
<OMEGAdot>-7.85854162551643464e-09</OMEGAdot>
|
||||
<idot>-3.46443002170201364e-11</idot>
|
||||
<Cuc>5.85243105888366699e-06</Cuc>
|
||||
<Cus>1.16303563117980957e-05</Cus>
|
||||
<Crc>1.56125000000000000e+02</Crc>
|
||||
<Crs>1.12906250000000000e+02</Crs>
|
||||
<Cic>1.67638063430786133e-08</Cic>
|
||||
<Cis>-1.11758708953857422e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>-3.18535603582859039e-05</af0>
|
||||
<af1>-9.66338120633736091e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>47</IODE_SF2>
|
||||
<IODE_SF3>47</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>4.65661287307739258e-10</TGD>
|
||||
<IODC>47</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>10</first>
|
||||
<second>
|
||||
<i_satellite_PRN>10</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>5.80000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>5.80000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>-2.72500000000000000e+01</d_Crs>
|
||||
<d_Delta_n>5.27093384126580581e-09</d_Delta_n>
|
||||
<d_M_0>-8.86982818851813737e-01</d_M_0>
|
||||
<d_Cuc>-1.17719173431396484e-06</d_Cuc>
|
||||
<d_e_eccentricity>1.44534236751496774e-02</d_e_eccentricity>
|
||||
<d_Cus>7.90506601333618164e-06</d_Cus>
|
||||
<d_sqrt_A>5.15363725471496582e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>1.45286321640014648e-07</d_Cic>
|
||||
<d_OMEGA0>2.00408517949479270e+00</d_OMEGA0>
|
||||
<d_Cis>2.40281224250793457e-07</d_Cis>
|
||||
<d_i_0>9.41160112993577269e-01</d_i_0>
|
||||
<d_Crc>2.15406250000000000e+02</d_Crc>
|
||||
<d_OMEGA>9.09732121011562200e-01</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.42213653007785350e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-5.42879755978047536e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-2.79396772384643555e-09</d_TGD>
|
||||
<d_IODC>5.80000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>-1.54968351125717163e-04</d_A_f0>
|
||||
<d_A_f1>-1.59161572810262401e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>10</PRN>
|
||||
<M_0>-8.86982818851813737e-01</M_0>
|
||||
<delta_n>5.27093384126580581e-09</delta_n>
|
||||
<ecc>1.44534236751496774e-02</ecc>
|
||||
<sqrtA>5.15363725471496582e+03</sqrtA>
|
||||
<OMEGA_0>2.00408517949479270e+00</OMEGA_0>
|
||||
<i_0>9.41160112993577269e-01</i_0>
|
||||
<omega>9.09732121011562200e-01</omega>
|
||||
<OMEGAdot>-8.42213653007785350e-09</OMEGAdot>
|
||||
<idot>-5.42879755978047536e-10</idot>
|
||||
<Cuc>-1.17719173431396484e-06</Cuc>
|
||||
<Cus>7.90506601333618164e-06</Cus>
|
||||
<Crc>2.15406250000000000e+02</Crc>
|
||||
<Crs>-2.72500000000000000e+01</Crs>
|
||||
<Cic>1.45286321640014648e-07</Cic>
|
||||
<Cis>2.40281224250793457e-07</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>-1.54968351125717163e-04</af0>
|
||||
<af1>-1.59161572810262401e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>58</IODE_SF2>
|
||||
<IODE_SF3>58</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-2.79396772384643555e-09</TGD>
|
||||
<IODC>58</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>12</first>
|
||||
<second>
|
||||
<i_satellite_PRN>12</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>1.06000000000000000e+02</d_IODE_SF2>
|
||||
<d_IODE_SF3>1.06000000000000000e+02</d_IODE_SF3>
|
||||
<d_Crs>-1.17468750000000000e+02</d_Crs>
|
||||
<d_Delta_n>3.94516433192994276e-09</d_Delta_n>
|
||||
<d_M_0>1.11631735294997192e+00</d_M_0>
|
||||
<d_Cuc>-6.15417957305908203e-06</d_Cuc>
|
||||
<d_e_eccentricity>5.05860964767634782e-03</d_e_eccentricity>
|
||||
<d_Cus>4.52436506748199463e-06</d_Cus>
|
||||
<d_sqrt_A>5.15376680946350098e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-5.40167093276977539e-08</d_Cic>
|
||||
<d_OMEGA0>-1.10425023618040785e+00</d_OMEGA0>
|
||||
<d_Cis>4.09781932830810547e-08</d_Cis>
|
||||
<d_i_0>9.88803748742243305e-01</d_i_0>
|
||||
<d_Crc>3.07187500000000000e+02</d_Crc>
|
||||
<d_OMEGA>5.00154452274795935e-01</d_OMEGA>
|
||||
<d_OMEGA_DOT>-7.97176062725659211e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-4.18231706743614228e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-1.16415321826934814e-08</d_TGD>
|
||||
<d_IODC>1.06000000000000000e+02</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>2.54871323704719543e-04</d_A_f0>
|
||||
<d_A_f1>2.72848410531878391e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>12</PRN>
|
||||
<M_0>1.11631735294997192e+00</M_0>
|
||||
<delta_n>3.94516433192994276e-09</delta_n>
|
||||
<ecc>5.05860964767634782e-03</ecc>
|
||||
<sqrtA>5.15376680946350098e+03</sqrtA>
|
||||
<OMEGA_0>-1.10425023618040785e+00</OMEGA_0>
|
||||
<i_0>9.88803748742243305e-01</i_0>
|
||||
<omega>5.00154452274795935e-01</omega>
|
||||
<OMEGAdot>-7.97176062725659211e-09</OMEGAdot>
|
||||
<idot>-4.18231706743614228e-10</idot>
|
||||
<Cuc>-6.15417957305908203e-06</Cuc>
|
||||
<Cus>4.52436506748199463e-06</Cus>
|
||||
<Crc>3.07187500000000000e+02</Crc>
|
||||
<Crs>-1.17468750000000000e+02</Crs>
|
||||
<Cic>-5.40167093276977539e-08</Cic>
|
||||
<Cis>4.09781932830810547e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>2.54871323704719543e-04</af0>
|
||||
<af1>2.72848410531878391e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>106</IODE_SF2>
|
||||
<IODE_SF3>106</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-1.16415321826934814e-08</TGD>
|
||||
<IODC>106</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>17</first>
|
||||
<second>
|
||||
<i_satellite_PRN>17</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>2.60000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>2.60000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>-5.91250000000000000e+01</d_Crs>
|
||||
<d_Delta_n>3.88194741297723567e-09</d_Delta_n>
|
||||
<d_M_0>-1.94252959218893162e+00</d_M_0>
|
||||
<d_Cuc>-3.04728746414184570e-06</d_Cuc>
|
||||
<d_e_eccentricity>9.88844956737011498e-03</d_e_eccentricity>
|
||||
<d_Cus>1.18296593427658081e-05</d_Cus>
|
||||
<d_sqrt_A>5.15369299888610840e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>2.03028321266174316e-07</d_Cic>
|
||||
<d_OMEGA0>-5.68690999805671268e-02</d_OMEGA0>
|
||||
<d_Cis>-7.63684511184692383e-08</d_Cis>
|
||||
<d_i_0>9.71201777972365177e-01</d_i_0>
|
||||
<d_Crc>1.56531250000000000e+02</d_Crc>
|
||||
<d_OMEGA>-2.06928329237789344e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-7.44602444251995675e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>4.40375486263771432e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-1.07102096080780029e-08</d_TGD>
|
||||
<d_IODC>2.60000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>-1.44933816045522690e-04</d_A_f0>
|
||||
<d_A_f1>-2.27373675443232019e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>17</PRN>
|
||||
<M_0>-1.94252959218893162e+00</M_0>
|
||||
<delta_n>3.88194741297723567e-09</delta_n>
|
||||
<ecc>9.88844956737011498e-03</ecc>
|
||||
<sqrtA>5.15369299888610840e+03</sqrtA>
|
||||
<OMEGA_0>-5.68690999805671268e-02</OMEGA_0>
|
||||
<i_0>9.71201777972365177e-01</i_0>
|
||||
<omega>-2.06928329237789344e+00</omega>
|
||||
<OMEGAdot>-7.44602444251995675e-09</OMEGAdot>
|
||||
<idot>4.40375486263771432e-10</idot>
|
||||
<Cuc>-3.04728746414184570e-06</Cuc>
|
||||
<Cus>1.18296593427658081e-05</Cus>
|
||||
<Crc>1.56531250000000000e+02</Crc>
|
||||
<Crs>-5.91250000000000000e+01</Crs>
|
||||
<Cic>2.03028321266174316e-07</Cic>
|
||||
<Cis>-7.63684511184692383e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>-1.44933816045522690e-04</af0>
|
||||
<af1>-2.27373675443232019e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>26</IODE_SF2>
|
||||
<IODE_SF3>26</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-1.07102096080780029e-08</TGD>
|
||||
<IODC>26</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>20</first>
|
||||
<second>
|
||||
<i_satellite_PRN>20</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>1.17000000000000000e+02</d_IODE_SF2>
|
||||
<d_IODE_SF3>1.17000000000000000e+02</d_IODE_SF3>
|
||||
<d_Crs>-2.58437500000000000e+01</d_Crs>
|
||||
<d_Delta_n>5.60380484953655626e-09</d_Delta_n>
|
||||
<d_M_0>1.28625710142833249e-01</d_M_0>
|
||||
<d_Cuc>-1.52923166751861572e-06</d_Cuc>
|
||||
<d_e_eccentricity>5.80669869668781671e-03</d_e_eccentricity>
|
||||
<d_Cus>7.51018524169921875e-06</d_Cus>
|
||||
<d_sqrt_A>5.15578671264648438e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-2.23517417907714844e-08</d_Cic>
|
||||
<d_OMEGA0>1.92543994118208528e+00</d_OMEGA0>
|
||||
<d_Cis>4.65661287307739258e-08</d_Cis>
|
||||
<d_i_0>9.26021286652122910e-01</d_i_0>
|
||||
<d_Crc>2.18031250000000000e+02</d_Crc>
|
||||
<d_OMEGA>1.23365536128043107e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.54892752571746483e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-5.16450083647537340e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-8.38190317153930664e-09</d_TGD>
|
||||
<d_IODC>1.17000000000000000e+02</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>2.69209500402212143e-04</d_A_f0>
|
||||
<d_A_f1>4.20641299569979229e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>20</PRN>
|
||||
<M_0>1.28625710142833249e-01</M_0>
|
||||
<delta_n>5.60380484953655626e-09</delta_n>
|
||||
<ecc>5.80669869668781671e-03</ecc>
|
||||
<sqrtA>5.15578671264648438e+03</sqrtA>
|
||||
<OMEGA_0>1.92543994118208528e+00</OMEGA_0>
|
||||
<i_0>9.26021286652122910e-01</i_0>
|
||||
<omega>1.23365536128043107e+00</omega>
|
||||
<OMEGAdot>-8.54892752571746483e-09</OMEGAdot>
|
||||
<idot>-5.16450083647537340e-10</idot>
|
||||
<Cuc>-1.52923166751861572e-06</Cuc>
|
||||
<Cus>7.51018524169921875e-06</Cus>
|
||||
<Crc>2.18031250000000000e+02</Crc>
|
||||
<Crs>-2.58437500000000000e+01</Crs>
|
||||
<Cic>-2.23517417907714844e-08</Cic>
|
||||
<Cis>4.65661287307739258e-08</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>2.69209500402212143e-04</af0>
|
||||
<af1>4.20641299569979229e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>117</IODE_SF2>
|
||||
<IODE_SF3>117</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-8.38190317153930664e-09</TGD>
|
||||
<IODC>117</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>23</first>
|
||||
<second>
|
||||
<i_satellite_PRN>23</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>4.10000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>4.10000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>1.20250000000000000e+02</d_Crs>
|
||||
<d_Delta_n>4.45161399901998963e-09</d_Delta_n>
|
||||
<d_M_0>3.04794581942897569e+00</d_M_0>
|
||||
<d_Cuc>6.13741576671600342e-06</d_Cuc>
|
||||
<d_e_eccentricity>9.67817602213471954e-03</d_e_eccentricity>
|
||||
<d_Cus>1.14180147647857666e-05</d_Cus>
|
||||
<d_sqrt_A>5.15370163154602051e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-6.14672899246215820e-08</d_Cic>
|
||||
<d_OMEGA0>3.04748172476042711e+00</d_OMEGA0>
|
||||
<d_Cis>-1.04308128356933594e-07</d_Cis>
|
||||
<d_i_0>9.50229191282804808e-01</d_i_0>
|
||||
<d_Crc>1.56000000000000000e+02</d_Crc>
|
||||
<d_OMEGA>-2.71676891930177256e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-7.78032408172749087e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-2.75011455330984601e-11</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-1.95577740669250488e-08</d_TGD>
|
||||
<d_IODC>4.10000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>-7.56788067519664764e-05</d_A_f0>
|
||||
<d_A_f1>-2.72848410531878391e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>23</PRN>
|
||||
<M_0>3.04794581942897569e+00</M_0>
|
||||
<delta_n>4.45161399901998963e-09</delta_n>
|
||||
<ecc>9.67817602213471954e-03</ecc>
|
||||
<sqrtA>5.15370163154602051e+03</sqrtA>
|
||||
<OMEGA_0>3.04748172476042711e+00</OMEGA_0>
|
||||
<i_0>9.50229191282804808e-01</i_0>
|
||||
<omega>-2.71676891930177256e+00</omega>
|
||||
<OMEGAdot>-7.78032408172749087e-09</OMEGAdot>
|
||||
<idot>-2.75011455330984601e-11</idot>
|
||||
<Cuc>6.13741576671600342e-06</Cuc>
|
||||
<Cus>1.14180147647857666e-05</Cus>
|
||||
<Crc>1.56000000000000000e+02</Crc>
|
||||
<Crs>1.20250000000000000e+02</Crs>
|
||||
<Cic>-6.14672899246215820e-08</Cic>
|
||||
<Cis>-1.04308128356933594e-07</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>-7.56788067519664764e-05</af0>
|
||||
<af1>-2.72848410531878391e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>41</IODE_SF2>
|
||||
<IODE_SF3>41</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-1.95577740669250488e-08</TGD>
|
||||
<IODC>41</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
<first>28</first>
|
||||
<second>
|
||||
<i_satellite_PRN>28</i_satellite_PRN>
|
||||
<d_TOW>5.18448000000000000e+05</d_TOW>
|
||||
<d_IODE_SF2>3.30000000000000000e+01</d_IODE_SF2>
|
||||
<d_IODE_SF3>3.30000000000000000e+01</d_IODE_SF3>
|
||||
<d_Crs>-1.27750000000000000e+02</d_Crs>
|
||||
<d_Delta_n>4.04302555109966970e-09</d_Delta_n>
|
||||
<d_M_0>-1.16607683198628931e+00</d_M_0>
|
||||
<d_Cuc>-6.37024641036987305e-06</d_Cuc>
|
||||
<d_e_eccentricity>1.97223023278638686e-02</d_e_eccentricity>
|
||||
<d_Cus>5.66989183425903320e-06</d_Cus>
|
||||
<d_sqrt_A>5.15368548965454102e+03</d_sqrt_A>
|
||||
<d_Toe>5.18400000000000000e+05</d_Toe>
|
||||
<d_Toc>5.18400000000000000e+05</d_Toc>
|
||||
<d_Cic>-1.37835741043090820e-07</d_Cic>
|
||||
<d_OMEGA0>-1.08006546321039543e+00</d_OMEGA0>
|
||||
<d_Cis>4.35858964920043945e-07</d_Cis>
|
||||
<d_i_0>9.87961552655681530e-01</d_i_0>
|
||||
<d_Crc>2.84718750000000000e+02</d_Crc>
|
||||
<d_OMEGA>-1.69047108635756738e+00</d_OMEGA>
|
||||
<d_OMEGA_DOT>-8.17855495535612472e-09</d_OMEGA_DOT>
|
||||
<d_IDOT>-4.44661379074124424e-10</d_IDOT>
|
||||
<i_code_on_L2>0</i_code_on_L2>
|
||||
<i_GPS_week>799</i_GPS_week>
|
||||
<b_L2_P_data_flag>0</b_L2_P_data_flag>
|
||||
<i_SV_accuracy>2</i_SV_accuracy>
|
||||
<i_SV_health>0</i_SV_health>
|
||||
<d_TGD>-1.11758708953857422e-08</d_TGD>
|
||||
<d_IODC>3.30000000000000000e+01</d_IODC>
|
||||
<i_AODO>27900</i_AODO>
|
||||
<b_fit_interval_flag>0</b_fit_interval_flag>
|
||||
<d_spare1>0.00000000000000000e+00</d_spare1>
|
||||
<d_spare2>0.00000000000000000e+00</d_spare2>
|
||||
<d_A_f0>4.06486913561820984e-04</d_A_f0>
|
||||
<d_A_f1>2.61479726759716828e-12</d_A_f1>
|
||||
<d_A_f2>0.00000000000000000e+00</d_A_f2>
|
||||
<b_integrity_status_flag>0</b_integrity_status_flag>
|
||||
<b_alert_flag>0</b_alert_flag>
|
||||
<b_antispoofing_flag>0</b_antispoofing_flag>
|
||||
<PRN>28</PRN>
|
||||
<M_0>-1.16607683198628931e+00</M_0>
|
||||
<delta_n>4.04302555109966970e-09</delta_n>
|
||||
<ecc>1.97223023278638686e-02</ecc>
|
||||
<sqrtA>5.15368548965454102e+03</sqrtA>
|
||||
<OMEGA_0>-1.08006546321039543e+00</OMEGA_0>
|
||||
<i_0>9.87961552655681530e-01</i_0>
|
||||
<omega>-1.69047108635756738e+00</omega>
|
||||
<OMEGAdot>-8.17855495535612472e-09</OMEGAdot>
|
||||
<idot>-4.44661379074124424e-10</idot>
|
||||
<Cuc>-6.37024641036987305e-06</Cuc>
|
||||
<Cus>5.66989183425903320e-06</Cus>
|
||||
<Crc>2.84718750000000000e+02</Crc>
|
||||
<Crs>-1.27750000000000000e+02</Crs>
|
||||
<Cic>-1.37835741043090820e-07</Cic>
|
||||
<Cis>4.35858964920043945e-07</Cis>
|
||||
<toe>518400</toe>
|
||||
<toc>518400</toc>
|
||||
<af0>4.06486913561820984e-04</af0>
|
||||
<af1>2.61479726759716828e-12</af1>
|
||||
<af2>0.00000000000000000e+00</af2>
|
||||
<WN>799</WN>
|
||||
<tow>518448</tow>
|
||||
<satClkDrift>0.00000000000000000e+00</satClkDrift>
|
||||
<dtr>0.00000000000000000e+00</dtr>
|
||||
<IODE_SF2>33</IODE_SF2>
|
||||
<IODE_SF3>33</IODE_SF3>
|
||||
<code_on_L2>0</code_on_L2>
|
||||
<L2_P_data_flag>0</L2_P_data_flag>
|
||||
<SV_accuracy>2</SV_accuracy>
|
||||
<SV_health>0</SV_health>
|
||||
<TGD>-1.11758708953857422e-08</TGD>
|
||||
<IODC>33</IODC>
|
||||
<AODO>27900</AODO>
|
||||
<fit_interval_flag>0</fit_interval_flag>
|
||||
<spare1>0.00000000000000000e+00</spare1>
|
||||
<spare2>0.00000000000000000e+00</spare2>
|
||||
<integrity_status_flag>0</integrity_status_flag>
|
||||
<alert_flag>0</alert_flag>
|
||||
<antispoofing_flag>0</antispoofing_flag>
|
||||
</second>
|
||||
</item>
|
||||
</GNSS-SDR_ephemeris_map>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: 2018 Javier Arribas <javier.arribas@cttc.es>
|
||||
@@ -1,6 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
|
||||
<!-- SPDX-FileCopyrightText: 2018 Javier Arribas <javier.arribas@cttc.es> -->
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="12">
|
||||
<GNSS-SDR_gnss_synchro_map class_id="0" tracking_level="0" version="0">
|
||||
@@ -22,7 +20,6 @@
|
||||
<Acq_doppler_hz>-2.50000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>10791</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>-3.85959140625000000e+04</Prompt_I>
|
||||
<Prompt_Q>-9.03592163085937500e+02</Prompt_Q>
|
||||
@@ -31,14 +28,17 @@
|
||||
<Carrier_phase_rads>8.35350813421410858e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>3.31084377635761484e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133923691</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451424</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.28178186234515086e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451423887949765e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -57,7 +57,6 @@
|
||||
<Acq_doppler_hz>-3.00000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>68450858</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>-4.34972734375000000e+04</Prompt_I>
|
||||
<Prompt_Q>4.21364685058593750e+02</Prompt_Q>
|
||||
@@ -66,14 +65,17 @@
|
||||
<Carrier_phase_rads>4.93910706686261110e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>7.36033200862493686e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133923971</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451431</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.07516033774388395e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451430780101955e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -92,7 +94,6 @@
|
||||
<Acq_doppler_hz>-3.00000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>1350770</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>4.46268046875000000e+04</Prompt_I>
|
||||
<Prompt_Q>-3.98811938476562500e+03</Prompt_Q>
|
||||
@@ -101,14 +102,17 @@
|
||||
<Carrier_phase_rads>9.35704822809229488e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>9.30327007595224131e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133923941</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451436</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>1.92492043561209217e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451435791565657e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -127,7 +131,6 @@
|
||||
<Acq_doppler_hz>1.00000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>994247</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>3.98655546875000000e+04</Prompt_I>
|
||||
<Prompt_Q>-8.63781860351562500e+02</Prompt_Q>
|
||||
@@ -136,14 +139,17 @@
|
||||
<Carrier_phase_rads>-3.54128275530727289e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>4.08304036132904002e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133922883</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451429</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.12256989876578376e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451429198689222e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -162,7 +168,6 @@
|
||||
<Acq_doppler_hz>1.75000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>4917751</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>-4.72456406250000000e+04</Prompt_I>
|
||||
<Prompt_Q>-2.63723022460937500e+02</Prompt_Q>
|
||||
@@ -171,14 +176,17 @@
|
||||
<Carrier_phase_rads>-5.72184006019302527e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>5.89544135488722532e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133922337</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451430</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.08629709015843943e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451430408619881e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -197,7 +205,6 @@
|
||||
<Acq_doppler_hz>2.50000000000000000e+02</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>514377</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>4.27717460937500000e+04</Prompt_I>
|
||||
<Prompt_Q>-9.45822082519531250e+02</Prompt_Q>
|
||||
@@ -206,14 +213,17 @@
|
||||
<Carrier_phase_rads>-9.09813659855529113e+04</Carrier_phase_rads>
|
||||
<Code_phase_samples>6.57473345280777721e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133923172</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451440</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>1.79613337841309197e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451440087439477e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -232,7 +242,6 @@
|
||||
<Acq_doppler_hz>2.25000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>7365787</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>-3.96159960937500000e+04</Prompt_I>
|
||||
<Prompt_Q>-5.03847460937500000e+03</Prompt_Q>
|
||||
@@ -241,14 +250,17 @@
|
||||
<Carrier_phase_rads>-7.04913853936602012e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>3.21518194999043772e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133922169</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451430</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.08435687343175523e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451430473338544e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -267,7 +279,6 @@
|
||||
<Acq_doppler_hz>2.75000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>2173576</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>4.00322539062500000e+04</Prompt_I>
|
||||
<Prompt_Q>-3.88590087890625000e+02</Prompt_Q>
|
||||
@@ -276,14 +287,17 @@
|
||||
<Carrier_phase_rads>-8.99142229977656389e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>1.02370741655249731e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133922664</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451438</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>1.85022797143675610e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451438283038080e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -302,7 +316,6 @@
|
||||
<Acq_doppler_hz>3.00000000000000000e+03</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>7464974</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>-4.03654140625000000e+04</Prompt_I>
|
||||
<Prompt_Q>3.92351245117187500e+03</Prompt_Q>
|
||||
@@ -311,14 +324,17 @@
|
||||
<Carrier_phase_rads>-9.28340507655202877e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>5.73995602361264901e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133923741</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451427</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>2.19242346189941987e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451426868625164e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
<item>
|
||||
@@ -337,7 +353,6 @@
|
||||
<Acq_doppler_hz>5.00000000000000000e+02</Acq_doppler_hz>
|
||||
<Acq_samplestamp_samples>1859813</Acq_samplestamp_samples>
|
||||
<Acq_doppler_step>0</Acq_doppler_step>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<fs>2600000</fs>
|
||||
<Prompt_I>3.87814335937500000e+04</Prompt_I>
|
||||
<Prompt_Q>2.13637329101562500e+03</Prompt_Q>
|
||||
@@ -346,14 +361,17 @@
|
||||
<Carrier_phase_rads>-1.78723083774703584e+05</Carrier_phase_rads>
|
||||
<Code_phase_samples>3.47952294631795667e-01</Code_phase_samples>
|
||||
<Tracking_sample_counter>133924211</Tracking_sample_counter>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<correlation_length_ms>1</correlation_length_ms>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<TOW_at_current_symbol_ms>518451439</TOW_at_current_symbol_ms>
|
||||
<Pseudorange_m>1.83808922785463184e+07</Pseudorange_m>
|
||||
<RX_time>5.18451500000000000e+05</RX_time>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<interp_TOW_ms>5.18451438687942982e+08</interp_TOW_ms>
|
||||
<Flag_valid_acquisition>0</Flag_valid_acquisition>
|
||||
<Flag_valid_symbol_output>1</Flag_valid_symbol_output>
|
||||
<Flag_valid_word>1</Flag_valid_word>
|
||||
<Flag_valid_pseudorange>1</Flag_valid_pseudorange>
|
||||
<Flag_PLL_180_deg_phase_locked>0</Flag_PLL_180_deg_phase_locked>
|
||||
<Flag_cycle_slip>0</Flag_cycle_slip>
|
||||
</second>
|
||||
</item>
|
||||
</GNSS-SDR_gnss_synchro_map>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: 2018 Javier Arribas <javier.arribas@cttc.es>
|
||||
@@ -298,6 +298,17 @@ int PositionSystemTest::configure_receiver()
|
||||
{
|
||||
config->set_property("GNSS-SDR.use_acquisition_resampler", "true");
|
||||
}
|
||||
#if USE_GLOG_AND_GFLAGS
|
||||
if (FLAGS_rinex_nav_file == std::string(DEFAULT_RINEX_NAV))
|
||||
#else
|
||||
if (absl::GetFlag(FLAGS_rinex_nav_file) == std::string(DEFAULT_RINEX_NAV))
|
||||
#endif
|
||||
{
|
||||
// The signal is generated from the default RINEX nav file
|
||||
// (brdc3540.14n, dated December 20, 2014), so set the observation
|
||||
// date accordingly to resolve the GPS week rollover to that era
|
||||
config->set_property("GNSS-SDR.observation_date", "2014-12-20");
|
||||
}
|
||||
config->set_property("GNSS-SDR.GPS_banned_prns", std::to_string(1));
|
||||
// Set the assistance system parameters
|
||||
config->set_property("GNSS-SDR.SUPL_read_gps_assistance_xml", "false");
|
||||
|
||||
@@ -17,9 +17,13 @@
|
||||
#include "geofunctions.h"
|
||||
#include "gnss_sdr_make_unique.h"
|
||||
#include "gnss_sdr_supl_client.h"
|
||||
#include "gps_week_rollover.h"
|
||||
#include "in_memory_configuration.h"
|
||||
#include "pvt_conf.h"
|
||||
#include "rtklib_solver.h"
|
||||
#include "sensor_data/sensor_data_aggregator.h"
|
||||
#include "sensor_data/sensor_data_source_configuration.h"
|
||||
#include "signal_flag.h"
|
||||
#include <armadillo>
|
||||
#include <boost/archive/xml_iarchive.hpp>
|
||||
#include <boost/archive/xml_oarchive.hpp>
|
||||
@@ -378,7 +382,6 @@ TEST(RTKLibSolverTest, test1)
|
||||
{
|
||||
// test case #1: GPS L1 CA simulated with gnss-sim
|
||||
std::string path = std::string(TEST_PATH);
|
||||
int nchannels = 8;
|
||||
std::string dump_filename = ".rtklib_solver_dump.dat";
|
||||
bool flag_dump_to_file = false;
|
||||
bool save_to_mat = false;
|
||||
@@ -386,8 +389,16 @@ TEST(RTKLibSolverTest, test1)
|
||||
|
||||
Pvt_Conf conf;
|
||||
conf.use_e6_for_pvt = false;
|
||||
auto d_ls_pvt = std::make_unique<Rtklib_Solver>(rtk, conf, nchannels, dump_filename, 1, flag_dump_to_file, save_to_mat);
|
||||
d_ls_pvt->set_averaging_depth(1);
|
||||
auto d_ls_pvt = std::make_unique<Rtklib_Solver>(rtk, conf, dump_filename, GPS_1C, flag_dump_to_file, save_to_mat);
|
||||
// the scenario was simulated in December 2014 (GPS week 1823, transmitted mod-1024
|
||||
// week 799); the approximate capture date resolves the week rollover, as the
|
||||
// GNSS-SDR.observation_date configuration option does in the full receiver
|
||||
d_ls_pvt->set_ref_gps_week(gps_ref_week_from_config("2014-12-20", false));
|
||||
|
||||
// sensor data aggregator with no external sensors
|
||||
auto sensor_configuration = std::make_shared<InMemoryConfiguration>();
|
||||
const SensorDataSourceConfiguration sensor_data_source_configuration(sensor_configuration.get());
|
||||
const SensorDataAggregator sensor_data_aggregator(sensor_data_source_configuration, {});
|
||||
|
||||
// load ephemeris
|
||||
std::string eph_xml_filename = path + "data/rtklib_test/eph_GPS_L1CA_test1.xml";
|
||||
@@ -443,7 +454,7 @@ TEST(RTKLibSolverTest, test1)
|
||||
|
||||
// solve
|
||||
bool pvt_valid = false;
|
||||
if (d_ls_pvt->get_PVT(gnss_synchro_map, false))
|
||||
if (d_ls_pvt->get_PVT(gnss_synchro_map, 0.02, sensor_data_aggregator))
|
||||
{
|
||||
// DEBUG MESSAGE: Display position in console output
|
||||
if (d_ls_pvt->is_valid_position())
|
||||
|
||||
Reference in New Issue
Block a user