mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 04:00:34 +00:00
Merge branch 'next' of https://github.com/mmajoral/gnss-sdr into improve_fpga_extended_correlation
This commit is contained in:
commit
83b202a5f7
@ -38,4 +38,6 @@ double gdop = 25; // Geometric Dilution of Precision
|
|||||||
double pdop = 26; // Position (3D) Dilution of Precision
|
double pdop = 26; // Position (3D) Dilution of Precision
|
||||||
double hdop = 27; // Horizontal Dilution of Precision
|
double hdop = 27; // Horizontal Dilution of Precision
|
||||||
double vdop = 28; // Vertical Dilution of Precision
|
double vdop = 28; // Vertical Dilution of Precision
|
||||||
|
|
||||||
|
double user_clk_drift_ppm = 29; // User clock drift [ppm]
|
||||||
}
|
}
|
||||||
|
@ -4168,6 +4168,15 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
|||||||
std::cout << std::setprecision(ss);
|
std::cout << std::setprecision(ss);
|
||||||
DLOG(INFO) << "RX clock offset: " << d_user_pvt_solver->get_time_offset_s() << "[s]";
|
DLOG(INFO) << "RX clock offset: " << d_user_pvt_solver->get_time_offset_s() << "[s]";
|
||||||
|
|
||||||
|
std::cout
|
||||||
|
<< TEXT_BOLD_GREEN
|
||||||
|
<< "Velocity: " << std::fixed << std::setprecision(3)
|
||||||
|
<< "East: " << d_user_pvt_solver->get_rx_vel()[0] << " [m/s], North: " << d_user_pvt_solver->get_rx_vel()[1]
|
||||||
|
<< " [m/s], Up = " << d_user_pvt_solver->get_rx_vel()[2] << " [m/s]" << TEXT_RESET << std::endl;
|
||||||
|
|
||||||
|
std::cout << std::setprecision(ss);
|
||||||
|
DLOG(INFO) << "RX clock drift: " << d_user_pvt_solver->get_clock_drift_ppm() << " [ppm]";
|
||||||
|
|
||||||
// boost::posix_time::ptime p_time;
|
// boost::posix_time::ptime p_time;
|
||||||
// gtime_t rtklib_utc_time = gpst2time(adjgpsweek(d_user_pvt_solver->gps_ephemeris_map.cbegin()->second.i_GPS_week), d_rx_time);
|
// gtime_t rtklib_utc_time = gpst2time(adjgpsweek(d_user_pvt_solver->gps_ephemeris_map.cbegin()->second.i_GPS_week), d_rx_time);
|
||||||
// p_time = boost::posix_time::from_time_t(rtklib_utc_time.time);
|
// p_time = boost::posix_time::from_time_t(rtklib_utc_time.time);
|
||||||
|
@ -89,6 +89,9 @@ public:
|
|||||||
double hdop;
|
double hdop;
|
||||||
double vdop;
|
double vdop;
|
||||||
|
|
||||||
|
// User clock drift [ppm]
|
||||||
|
double user_clk_drift_ppm;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This member function serializes and restores
|
* \brief This member function serializes and restores
|
||||||
* Monitor_Pvt objects from a byte stream.
|
* Monitor_Pvt objects from a byte stream.
|
||||||
@ -134,6 +137,8 @@ public:
|
|||||||
ar& BOOST_SERIALIZATION_NVP(pdop);
|
ar& BOOST_SERIALIZATION_NVP(pdop);
|
||||||
ar& BOOST_SERIALIZATION_NVP(hdop);
|
ar& BOOST_SERIALIZATION_NVP(hdop);
|
||||||
ar& BOOST_SERIALIZATION_NVP(vdop);
|
ar& BOOST_SERIALIZATION_NVP(vdop);
|
||||||
|
|
||||||
|
ar& BOOST_SERIALIZATION_NVP(user_clk_drift_ppm);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -316,6 +316,16 @@ void Pvt_Solution::set_time_offset_s(double offset)
|
|||||||
d_rx_dt_s = offset;
|
d_rx_dt_s = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double Pvt_Solution::get_clock_drift_ppm() const
|
||||||
|
{
|
||||||
|
return d_rx_clock_drift_ppm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Pvt_Solution::set_clock_drift_ppm(double clock_drift_ppm)
|
||||||
|
{
|
||||||
|
d_rx_clock_drift_ppm = clock_drift_ppm;
|
||||||
|
}
|
||||||
|
|
||||||
double Pvt_Solution::get_latitude() const
|
double Pvt_Solution::get_latitude() const
|
||||||
{
|
{
|
||||||
@ -409,6 +419,17 @@ arma::vec Pvt_Solution::get_rx_pos() const
|
|||||||
return d_rx_pos;
|
return d_rx_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Pvt_Solution::set_rx_vel(const arma::vec &vel)
|
||||||
|
{
|
||||||
|
d_rx_vel = vel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
arma::vec Pvt_Solution::get_rx_vel() const
|
||||||
|
{
|
||||||
|
return d_rx_vel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
boost::posix_time::ptime Pvt_Solution::get_position_UTC_time() const
|
boost::posix_time::ptime Pvt_Solution::get_position_UTC_time() const
|
||||||
{
|
{
|
||||||
|
@ -53,9 +53,11 @@ public:
|
|||||||
double get_time_offset_s() const; //!< Get RX time offset [s]
|
double get_time_offset_s() const; //!< Get RX time offset [s]
|
||||||
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
||||||
|
|
||||||
double get_latitude() const; //!< Get RX position Latitude WGS84 [deg]
|
double get_clock_drift_ppm() const; //!< Get the Rx clock drift [ppm]
|
||||||
double get_longitude() const; //!< Get RX position Longitude WGS84 [deg]
|
void set_clock_drift_ppm(double clock_drift_ppm); //!< Set the Rx clock drift [ppm]
|
||||||
double get_height() const; //!< Get RX position height WGS84 [m]
|
double get_latitude() const; //!< Get RX position Latitude WGS84 [deg]
|
||||||
|
double get_longitude() const; //!< Get RX position Longitude WGS84 [deg]
|
||||||
|
double get_height() const; //!< Get RX position height WGS84 [m]
|
||||||
|
|
||||||
double get_speed_over_ground() const; //!< Get RX speed over ground [m/s]
|
double get_speed_over_ground() const; //!< Get RX speed over ground [m/s]
|
||||||
void set_speed_over_ground(double speed_m_s); //!< Set RX speed over ground [m/s]
|
void set_speed_over_ground(double speed_m_s); //!< Set RX speed over ground [m/s]
|
||||||
@ -70,6 +72,9 @@ public:
|
|||||||
void set_rx_pos(const arma::vec &pos); //!< Set position: Latitude [deg], longitude [deg], height [m]
|
void set_rx_pos(const arma::vec &pos); //!< Set position: Latitude [deg], longitude [deg], height [m]
|
||||||
arma::vec get_rx_pos() const;
|
arma::vec get_rx_pos() const;
|
||||||
|
|
||||||
|
void set_rx_vel(const arma::vec &vel); //!< Set velocity: East [m/s], North [m/s], Up [m/s]
|
||||||
|
arma::vec get_rx_vel() const;
|
||||||
|
|
||||||
bool is_valid_position() const;
|
bool is_valid_position() const;
|
||||||
void set_valid_position(bool is_valid);
|
void set_valid_position(bool is_valid);
|
||||||
|
|
||||||
@ -132,7 +137,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
||||||
private:
|
private:
|
||||||
double d_rx_dt_s; // RX time offset [s]
|
double d_rx_dt_s; // RX time offset [s]
|
||||||
|
double d_rx_clock_drift_ppm; // RX clock drift [ppm]
|
||||||
|
|
||||||
double d_latitude_d; // RX position Latitude WGS84 [deg]
|
double d_latitude_d; // RX position Latitude WGS84 [deg]
|
||||||
double d_longitude_d; // RX position Longitude WGS84 [deg]
|
double d_longitude_d; // RX position Longitude WGS84 [deg]
|
||||||
@ -154,6 +160,7 @@ private:
|
|||||||
int d_averaging_depth; // Length of averaging window
|
int d_averaging_depth; // Length of averaging window
|
||||||
|
|
||||||
arma::vec d_rx_pos;
|
arma::vec d_rx_pos;
|
||||||
|
arma::vec d_rx_vel;
|
||||||
boost::posix_time::ptime d_position_UTC_time;
|
boost::posix_time::ptime d_position_UTC_time;
|
||||||
int d_valid_observations;
|
int d_valid_observations;
|
||||||
};
|
};
|
||||||
|
@ -147,7 +147,7 @@ std::string Rtcm::add_CRC(const std::string& message_without_crc) const
|
|||||||
|
|
||||||
// 2) Computes CRC
|
// 2) Computes CRC
|
||||||
CRC_RTCM.process_bytes(bytes.data(), bytes.size());
|
CRC_RTCM.process_bytes(bytes.data(), bytes.size());
|
||||||
std::bitset<24> crc_frame = std::bitset<24>(CRC_RTCM.checksum());
|
auto crc_frame = std::bitset<24>(CRC_RTCM.checksum());
|
||||||
|
|
||||||
// 3) Builds the complete message
|
// 3) Builds the complete message
|
||||||
std::string complete_message = message_without_crc + crc_frame.to_string();
|
std::string complete_message = message_without_crc + crc_frame.to_string();
|
||||||
@ -162,7 +162,7 @@ bool Rtcm::check_CRC(const std::string& message) const
|
|||||||
std::string message_bin = Rtcm::binary_data_to_bin(message);
|
std::string message_bin = Rtcm::binary_data_to_bin(message);
|
||||||
// Check CRC
|
// Check CRC
|
||||||
std::string crc = message_bin.substr(message_bin.length() - 24, 24);
|
std::string crc = message_bin.substr(message_bin.length() - 24, 24);
|
||||||
std::bitset<24> read_crc = std::bitset<24>(crc);
|
auto read_crc = std::bitset<24>(crc);
|
||||||
std::string msg_without_crc = message_bin.substr(0, message_bin.length() - 24);
|
std::string msg_without_crc = message_bin.substr(0, message_bin.length() - 24);
|
||||||
|
|
||||||
boost::dynamic_bitset<uint8_t> frame_bits(msg_without_crc);
|
boost::dynamic_bitset<uint8_t> frame_bits(msg_without_crc);
|
||||||
@ -171,7 +171,7 @@ bool Rtcm::check_CRC(const std::string& message) const
|
|||||||
std::reverse(bytes.begin(), bytes.end());
|
std::reverse(bytes.begin(), bytes.end());
|
||||||
|
|
||||||
CRC_RTCM_CHECK.process_bytes(bytes.data(), bytes.size());
|
CRC_RTCM_CHECK.process_bytes(bytes.data(), bytes.size());
|
||||||
std::bitset<24> computed_crc = std::bitset<24>(CRC_RTCM_CHECK.checksum());
|
auto computed_crc = std::bitset<24>(CRC_RTCM_CHECK.checksum());
|
||||||
if (read_crc == computed_crc)
|
if (read_crc == computed_crc)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -414,7 +414,7 @@ std::string Rtcm::build_message(const std::string& data) const
|
|||||||
{
|
{
|
||||||
uint32_t msg_length_bits = data.length();
|
uint32_t msg_length_bits = data.length();
|
||||||
uint32_t msg_length_bytes = std::ceil(static_cast<float>(msg_length_bits) / 8.0);
|
uint32_t msg_length_bytes = std::ceil(static_cast<float>(msg_length_bits) / 8.0);
|
||||||
std::bitset<10> message_length = std::bitset<10>(msg_length_bytes);
|
auto message_length = std::bitset<10>(msg_length_bytes);
|
||||||
uint32_t zeros_to_fill = 8 * msg_length_bytes - msg_length_bits;
|
uint32_t zeros_to_fill = 8 * msg_length_bytes - msg_length_bits;
|
||||||
std::string b(zeros_to_fill, '0');
|
std::string b(zeros_to_fill, '0');
|
||||||
std::string msg_content = data + b;
|
std::string msg_content = data + b;
|
||||||
@ -691,7 +691,7 @@ std::bitset<101> Rtcm::get_MT1003_sat_content(const Gps_Ephemeris& ephL1, const
|
|||||||
Rtcm::set_DF011(gnss_synchroL1);
|
Rtcm::set_DF011(gnss_synchroL1);
|
||||||
Rtcm::set_DF012(gnss_synchroL1);
|
Rtcm::set_DF012(gnss_synchroL1);
|
||||||
Rtcm::set_DF013(ephL1, obs_time, gnss_synchroL1);
|
Rtcm::set_DF013(ephL1, obs_time, gnss_synchroL1);
|
||||||
std::bitset<2> DF016_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
auto DF016_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
||||||
Rtcm::set_DF017(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF017(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF018(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF018(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF019(ephL2, obs_time, gnss_synchroL2);
|
Rtcm::set_DF019(ephL2, obs_time, gnss_synchroL2);
|
||||||
@ -802,7 +802,7 @@ std::bitset<125> Rtcm::get_MT1004_sat_content(const Gps_Ephemeris& ephL1, const
|
|||||||
Rtcm::set_DF013(ephL1, obs_time, gnss_synchroL1);
|
Rtcm::set_DF013(ephL1, obs_time, gnss_synchroL1);
|
||||||
Rtcm::set_DF014(gnss_synchroL1);
|
Rtcm::set_DF014(gnss_synchroL1);
|
||||||
Rtcm::set_DF015(gnss_synchroL1);
|
Rtcm::set_DF015(gnss_synchroL1);
|
||||||
std::bitset<2> DF016_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
auto DF016_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
||||||
Rtcm::set_DF017(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF017(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF018(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF018(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF019(ephL2, obs_time, gnss_synchroL2);
|
Rtcm::set_DF019(ephL2, obs_time, gnss_synchroL2);
|
||||||
@ -1058,7 +1058,7 @@ std::string Rtcm::print_MT1006(uint32_t ref_id, double ecef_x, double ecef_y, do
|
|||||||
std::string Rtcm::print_MT1008(uint32_t ref_id, const std::string& antenna_descriptor, uint32_t antenna_setup_id, const std::string& antenna_serial_number)
|
std::string Rtcm::print_MT1008(uint32_t ref_id, const std::string& antenna_descriptor, uint32_t antenna_setup_id, const std::string& antenna_serial_number)
|
||||||
{
|
{
|
||||||
uint32_t msg_number = 1008;
|
uint32_t msg_number = 1008;
|
||||||
std::bitset<12> DF002_ = std::bitset<12>(msg_number);
|
auto DF002_ = std::bitset<12>(msg_number);
|
||||||
Rtcm::set_DF003(ref_id);
|
Rtcm::set_DF003(ref_id);
|
||||||
std::string ant_descriptor = antenna_descriptor;
|
std::string ant_descriptor = antenna_descriptor;
|
||||||
uint32_t len = ant_descriptor.length();
|
uint32_t len = ant_descriptor.length();
|
||||||
@ -1072,7 +1072,7 @@ std::string Rtcm::print_MT1008(uint32_t ref_id, const std::string& antenna_descr
|
|||||||
std::string DF030_str_;
|
std::string DF030_str_;
|
||||||
for (char c : ant_descriptor)
|
for (char c : ant_descriptor)
|
||||||
{
|
{
|
||||||
std::bitset<8> character = std::bitset<8>(c);
|
auto character = std::bitset<8>(c);
|
||||||
DF030_str_ += character.to_string();
|
DF030_str_ += character.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1090,7 +1090,7 @@ std::string Rtcm::print_MT1008(uint32_t ref_id, const std::string& antenna_descr
|
|||||||
std::string DF033_str_;
|
std::string DF033_str_;
|
||||||
for (char c : ant_sn)
|
for (char c : ant_sn)
|
||||||
{
|
{
|
||||||
std::bitset<8> character = std::bitset<8>(c);
|
auto character = std::bitset<8>(c);
|
||||||
DF033_str_ += character.to_string();
|
DF033_str_ += character.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1375,7 +1375,7 @@ std::bitset<107> Rtcm::get_MT1011_sat_content(const Glonass_Gnav_Ephemeris& ephL
|
|||||||
Rtcm::set_DF041(gnss_synchroL1);
|
Rtcm::set_DF041(gnss_synchroL1);
|
||||||
Rtcm::set_DF042(gnss_synchroL1);
|
Rtcm::set_DF042(gnss_synchroL1);
|
||||||
Rtcm::set_DF043(ephL1, obs_time, gnss_synchroL1);
|
Rtcm::set_DF043(ephL1, obs_time, gnss_synchroL1);
|
||||||
std::bitset<2> DF046_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
auto DF046_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
||||||
Rtcm::set_DF047(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF047(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF048(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF048(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF049(ephL2, obs_time, gnss_synchroL2);
|
Rtcm::set_DF049(ephL2, obs_time, gnss_synchroL2);
|
||||||
@ -1488,7 +1488,7 @@ std::bitset<130> Rtcm::get_MT1012_sat_content(const Glonass_Gnav_Ephemeris& ephL
|
|||||||
Rtcm::set_DF043(ephL1, obs_time, gnss_synchroL1);
|
Rtcm::set_DF043(ephL1, obs_time, gnss_synchroL1);
|
||||||
Rtcm::set_DF044(gnss_synchroL1);
|
Rtcm::set_DF044(gnss_synchroL1);
|
||||||
Rtcm::set_DF045(gnss_synchroL1);
|
Rtcm::set_DF045(gnss_synchroL1);
|
||||||
std::bitset<2> DF046_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
auto DF046_ = std::bitset<2>(0); // code indicator 0: C/A or L2C code 1: P(Y) code direct 2:P(Y) code cross-correlated 3: Correlated P/Y
|
||||||
Rtcm::set_DF047(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF047(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF048(gnss_synchroL1, gnss_synchroL2);
|
Rtcm::set_DF048(gnss_synchroL1, gnss_synchroL2);
|
||||||
Rtcm::set_DF049(ephL2, obs_time, gnss_synchroL2);
|
Rtcm::set_DF049(ephL2, obs_time, gnss_synchroL2);
|
||||||
@ -2039,12 +2039,12 @@ std::string Rtcm::print_MT1029(uint32_t ref_id, const Gps_Ephemeris& gps_eph, do
|
|||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::bitset<8> character = std::bitset<8>(c);
|
auto character = std::bitset<8>(c);
|
||||||
text_binary += character.to_string();
|
text_binary += character.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::bitset<7> DF138_ = std::bitset<7>(i);
|
auto DF138_ = std::bitset<7>(i);
|
||||||
std::bitset<8> DF139_ = std::bitset<8>(message.length());
|
auto DF139_ = std::bitset<8>(message.length());
|
||||||
|
|
||||||
std::string data = DF002.to_string() +
|
std::string data = DF002.to_string() +
|
||||||
DF003.to_string() +
|
DF003.to_string() +
|
||||||
@ -2101,7 +2101,7 @@ std::string Rtcm::print_MT1045(const Galileo_Ephemeris& gal_eph)
|
|||||||
Rtcm::set_DF314(gal_eph);
|
Rtcm::set_DF314(gal_eph);
|
||||||
Rtcm::set_DF315(gal_eph);
|
Rtcm::set_DF315(gal_eph);
|
||||||
uint32_t seven_zero = 0;
|
uint32_t seven_zero = 0;
|
||||||
std::bitset<7> DF001_ = std::bitset<7>(seven_zero);
|
auto DF001_ = std::bitset<7>(seven_zero);
|
||||||
|
|
||||||
std::string data;
|
std::string data;
|
||||||
data.clear();
|
data.clear();
|
||||||
@ -2357,7 +2357,7 @@ std::string Rtcm::get_MSM_header(uint32_t msg_number,
|
|||||||
Rtcm::set_DF003(ref_id);
|
Rtcm::set_DF003(ref_id);
|
||||||
Rtcm::set_DF393(more_messages);
|
Rtcm::set_DF393(more_messages);
|
||||||
Rtcm::set_DF409(0); // Issue of Data Station. 0: not utilized
|
Rtcm::set_DF409(0); // Issue of Data Station. 0: not utilized
|
||||||
std::bitset<7> DF001_ = std::bitset<7>("0000000");
|
auto DF001_ = std::bitset<7>("0000000");
|
||||||
Rtcm::set_DF411(clock_steering_indicator);
|
Rtcm::set_DF411(clock_steering_indicator);
|
||||||
Rtcm::set_DF412(external_clock_indicator);
|
Rtcm::set_DF412(external_clock_indicator);
|
||||||
Rtcm::set_DF417(divergence_free);
|
Rtcm::set_DF417(divergence_free);
|
||||||
@ -2956,7 +2956,7 @@ std::string Rtcm::get_MSM_5_content_sat_data(const std::map<int32_t, Gnss_Synchr
|
|||||||
Rtcm::set_DF397(ordered_by_PRN_pos.at(nsat).second);
|
Rtcm::set_DF397(ordered_by_PRN_pos.at(nsat).second);
|
||||||
Rtcm::set_DF398(ordered_by_PRN_pos.at(nsat).second);
|
Rtcm::set_DF398(ordered_by_PRN_pos.at(nsat).second);
|
||||||
Rtcm::set_DF399(ordered_by_PRN_pos.at(nsat).second);
|
Rtcm::set_DF399(ordered_by_PRN_pos.at(nsat).second);
|
||||||
std::bitset<4> reserved = std::bitset<4>("0000");
|
auto reserved = std::bitset<4>("0000");
|
||||||
first_data_type += DF397.to_string();
|
first_data_type += DF397.to_string();
|
||||||
second_data_type += reserved.to_string();
|
second_data_type += reserved.to_string();
|
||||||
third_data_type += DF398.to_string();
|
third_data_type += DF398.to_string();
|
||||||
|
@ -1072,6 +1072,19 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
|||||||
monitor_pvt.hdop = dop_[2];
|
monitor_pvt.hdop = dop_[2];
|
||||||
monitor_pvt.vdop = dop_[3];
|
monitor_pvt.vdop = dop_[3];
|
||||||
|
|
||||||
|
arma::vec rx_vel_enu(3);
|
||||||
|
rx_vel_enu(0) = enuv[0];
|
||||||
|
rx_vel_enu(1) = enuv[1];
|
||||||
|
rx_vel_enu(2) = enuv[2];
|
||||||
|
|
||||||
|
this->set_rx_vel(rx_vel_enu);
|
||||||
|
|
||||||
|
double clock_drift_ppm = pvt_sol.dtr[5] / GPS_C_M_S * 1e6;
|
||||||
|
|
||||||
|
this->set_clock_drift_ppm(clock_drift_ppm);
|
||||||
|
// User clock drift [ppm]
|
||||||
|
monitor_pvt.user_clk_drift_ppm = clock_drift_ppm;
|
||||||
|
|
||||||
// ######## LOG FILE #########
|
// ######## LOG FILE #########
|
||||||
if (d_flag_dump_enabled == true)
|
if (d_flag_dump_enabled == true)
|
||||||
{
|
{
|
||||||
|
@ -116,6 +116,7 @@ public:
|
|||||||
monitor_.set_pdop(monitor->pdop);
|
monitor_.set_pdop(monitor->pdop);
|
||||||
monitor_.set_hdop(monitor->hdop);
|
monitor_.set_hdop(monitor->hdop);
|
||||||
monitor_.set_vdop(monitor->vdop);
|
monitor_.set_vdop(monitor->vdop);
|
||||||
|
monitor_.set_user_clk_drift_ppm(monitor->user_clk_drift_ppm);
|
||||||
|
|
||||||
monitor_.SerializeToString(&data);
|
monitor_.SerializeToString(&data);
|
||||||
return data;
|
return data;
|
||||||
@ -153,6 +154,7 @@ public:
|
|||||||
monitor.pdop = mon.pdop();
|
monitor.pdop = mon.pdop();
|
||||||
monitor.hdop = mon.hdop();
|
monitor.hdop = mon.hdop();
|
||||||
monitor.vdop = mon.vdop();
|
monitor.vdop = mon.vdop();
|
||||||
|
monitor.user_clk_drift_ppm = mon.user_clk_drift_ppm();
|
||||||
|
|
||||||
return monitor;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
@ -972,6 +972,7 @@ void estvel(const obsd_t *obs, int n, const double *rs, const double *dts,
|
|||||||
{
|
{
|
||||||
sol->rr[i + 3] = x[i];
|
sol->rr[i + 3] = x[i];
|
||||||
}
|
}
|
||||||
|
sol->dtr[5] = x[3];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,10 +37,10 @@
|
|||||||
#ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_CC_H_
|
#ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_CC_H_
|
||||||
#define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_CC_H_
|
#define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_CC_H_
|
||||||
|
|
||||||
|
#include "cpu_multicorrelator.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "tracking_2nd_DLL_filter.h"
|
#include "tracking_2nd_DLL_filter.h"
|
||||||
#include "tracking_FLL_PLL_filter.h"
|
#include "tracking_FLL_PLL_filter.h"
|
||||||
#include "cpu_multicorrelator.h"
|
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <volk_gnsssdr/volk_gnsssdr_alloc.h> // for volk_gnsssdr::vector
|
#include <volk_gnsssdr/volk_gnsssdr_alloc.h> // for volk_gnsssdr::vector
|
||||||
|
@ -49,9 +49,9 @@
|
|||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "tracking_2nd_DLL_filter.h"
|
#include "tracking_2nd_DLL_filter.h"
|
||||||
#include "tracking_2nd_PLL_filter.h"
|
#include "tracking_2nd_PLL_filter.h"
|
||||||
#include <volk_gnsssdr/volk_gnsssdr_alloc.h> // for volk_gnsssdr::vector
|
|
||||||
#include <armadillo>
|
#include <armadillo>
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
|
#include <volk_gnsssdr/volk_gnsssdr_alloc.h> // for volk_gnsssdr::vector
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -654,94 +654,106 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_
|
|||||||
switch (PRN_)
|
switch (PRN_)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
block_ = std::string("Compass-G1"); // GEO 140.0°E; launched 2010/01/16
|
block_ = std::string("BeiDou-2 GEO01"); // GEO 140.0°E; launched 2010/01/16
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
block_ = std::string("Compass-G6"); // GEO 80°E; launched 2012/10/25
|
block_ = std::string("BeiDou-2 GEO06"); // GEO 80°E; launched 2012/10/25
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
block_ = std::string("Compass-G7"); // GEO 110.5°E; launched 2016/06/12
|
block_ = std::string("BeiDou-2 GEO07"); // GEO 110.5°E; launched 2016/06/12
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
block_ = std::string("Compass-G4"); // GEO 160.0°E; launched 2010/10/31
|
block_ = std::string("BeiDou-2 GEO04"); // GEO 160.0°E; launched 2010/10/31
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
block_ = std::string("Compass-G5"); // GEO 58.75°E; launched 2012/02/24
|
block_ = std::string("BeiDou-2 GEO05"); // GEO 58.75°E; launched 2012/02/24
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
block_ = std::string("Compass-IGS01"); // 55° inclination IGSO 118°E; launched 2010/07/31
|
block_ = std::string("BeiDou-2 IGSO01"); // 55° inclination IGSO 118°E; launched 2010/07/31
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
block_ = std::string("Compass-IGS02"); // 55° inclination IGSO 118°E; launched 2010/12/17
|
block_ = std::string("BeiDou-2 IGSO02"); // 55° inclination IGSO 118°E; launched 2010/12/17
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
block_ = std::string("Compass-IGS03"); // 55° inclination IGSO 118°E; launched 2011/04/09
|
block_ = std::string("BeiDou-2 IGSO03"); // 55° inclination IGSO 118°E; launched 2011/04/09
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
block_ = std::string("Compass-IGS04"); // 55° inclination IGSO 95°E; launched 2011/07/27
|
block_ = std::string("BeiDou-2 IGSO04"); // 55° inclination IGSO 95°E; launched 2011/07/27
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
block_ = std::string("Compass-IGS05"); // 55° inclination IGSO 118°E; launched 2011/12/01
|
block_ = std::string("BeiDou-2 IGSO05"); // 55° inclination IGSO 118°E; launched 2011/12/01
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
block_ = std::string("Compass-M3"); // Slot A07; launched 2012/04/29
|
block_ = std::string("BeiDou-2 MEO03"); // Slot A07; launched 2012/04/29
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
block_ = std::string("Compass-M4"); // Slot A08; launched 2012/04/29
|
block_ = std::string("BeiDou-2 MEO04"); // Slot A08; launched 2012/04/29
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
block_ = std::string("BeiDou-2 IGSO06"); // launched 2016/03/30
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
block_ = std::string("BeiDou-2 MEO06"); // launched 2012/09/19
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
block_ = std::string("BeiDou-2 IGSO07"); // launched 2018/07/10
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
block_ = std::string("BEIDOU-3 M1"); // Slot B-7; launched 2017/11/05
|
block_ = std::string("BeiDou-3 MEO01"); // Slot B-7; launched 2017/11/05
|
||||||
break;
|
break;
|
||||||
case 20:
|
case 20:
|
||||||
block_ = std::string("BEIDOU-3 M2"); // Slot B-5; launched 2017/11/05
|
block_ = std::string("BeiDou-3 MEO02"); // Slot B-5; launched 2017/11/05
|
||||||
break;
|
break;
|
||||||
case 21:
|
case 21:
|
||||||
block_ = std::string("BEIDOU 3M5"); // Slot B-?; launched 2018/02/12
|
block_ = std::string("BeiDou-3 MEO03"); // Slot B-?; launched 2018/02/12
|
||||||
break;
|
break;
|
||||||
case 22:
|
case 22:
|
||||||
block_ = std::string("BEIDOU 3M6"); // Slot B-6; launched 2018/02/12
|
block_ = std::string("BeiDou-3 MEO04"); // Slot B-6; launched 2018/02/12
|
||||||
break;
|
break;
|
||||||
case 23:
|
case 23:
|
||||||
block_ = std::string("BEIDOU 3M9"); // Slot C-7; launched 2018/07/29
|
block_ = std::string("BeiDou-3 MEO05"); // Slot C-7; launched 2018/07/29
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
block_ = std::string("BEIDOU 3M10"); // Slot C-1; launched 2018/07/29
|
block_ = std::string("BeiDou-3 MEO06"); // Slot C-1; launched 2018/07/29
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
block_ = std::string("BEIDOU 3M12"); // Slot C-8; launched 2018/08/24
|
block_ = std::string("BeiDou-3 MEO11"); // Slot C-8; launched 2018/08/24
|
||||||
break;
|
break;
|
||||||
case 26:
|
case 26:
|
||||||
block_ = std::string("BEIDOU 3M11"); // Slot C-2; launched 2018/08/24
|
block_ = std::string("BeiDou-3 MEO12"); // Slot C-2; launched 2018/08/24
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
block_ = std::string("BEIDOU 3M3"); // Slot A-?; launched 2018/01/11
|
block_ = std::string("BeiDou-3 3M3"); // Slot A-?; launched 2018/01/11
|
||||||
break;
|
break;
|
||||||
case 28:
|
case 28:
|
||||||
block_ = std::string("BEIDOU 3M4"); // Slot A-?; launched 2018/01/11
|
block_ = std::string("BeiDou-3 3M4"); // Slot A-?; launched 2018/01/11
|
||||||
break;
|
break;
|
||||||
case 29:
|
case 29:
|
||||||
block_ = std::string("BEIDOU 3M7"); // Slot A-?; launched 2018/03/29
|
block_ = std::string("BeiDou-3 3M7"); // Slot A-?; launched 2018/03/29
|
||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
block_ = std::string("BEIDOU 3M8"); // Slot A-?; launched 2018/03/29
|
block_ = std::string("BeiDou-3 3M8"); // Slot A-?; launched 2018/03/29
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
block_ = std::string("BEIDOU 3M13"); // Slot B-1?; launched 2018/09/19
|
block_ = std::string("BeiDou-3 MEO13"); // Slot B-1?; launched 2018/09/19
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
block_ = std::string("BEIDOU 3M14"); // Slot B-3; launched 2018/09/19
|
block_ = std::string("BeiDou-3 MEO14"); // Slot B-3; launched 2018/09/19
|
||||||
break;
|
break;
|
||||||
case 34:
|
case 34:
|
||||||
block_ = std::string("BEIDOU 3M15"); // Slot B-3; launched 2018/10/15
|
block_ = std::string("BeiDou-3 MEO15"); // Slot B-3; launched 2018/10/15
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 35:
|
||||||
block_ = std::string("BEIDOU 3M16"); // Slot B-3; launched 2018/10/15
|
block_ = std::string("BeiDou-3 MEO16"); // Slot B-3; launched 2018/10/15
|
||||||
break;
|
break;
|
||||||
case 36:
|
case 36:
|
||||||
block_ = std::string("BEIDOU 3M17"); // Slot B-3; launched 2018/11/18
|
block_ = std::string("BeiDou-3 MEO17"); // Slot B-3; launched 2018/11/18
|
||||||
break;
|
break;
|
||||||
case 37:
|
case 37:
|
||||||
block_ = std::string("BEIDOU 3M18"); // Slot B-3; launched 2018/11/18
|
block_ = std::string("BeiDou-3 MEO18"); // Slot B-3; launched 2018/11/18
|
||||||
|
break;
|
||||||
|
case 38:
|
||||||
|
block_ = std::string("BeiDou-3 IGSO01"); // Slot B-3; launched 2019/04/20
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
block_ = std::string("Unknown(Simulated)");
|
block_ = std::string("Unknown(Simulated)");
|
||||||
|
Loading…
Reference in New Issue
Block a user