mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-13 03:30:33 +00:00
Fix bug in hybrid PVT
The block was not correctly handling satellites from the two constellations, causing problems when receiving two satellites (one GPS and one Galileo) with the same PRN number
This commit is contained in:
parent
df47884cd7
commit
fda0b93d83
@ -323,7 +323,7 @@ int hybrid_pvt_cc::general_work (int noutput_items __attribute__((unused)), gr_v
|
|||||||
{
|
{
|
||||||
if (in[i][0].Flag_valid_pseudorange == true)
|
if (in[i][0].Flag_valid_pseudorange == true)
|
||||||
{
|
{
|
||||||
gnss_pseudoranges_map.insert(std::pair<int,Gnss_Synchro>(in[i][0].PRN, in[i][0])); // store valid pseudoranges in a map. PROBLEM: sats with the same PRN!!
|
gnss_pseudoranges_map.insert(std::pair<int,Gnss_Synchro>(i, in[i][0])); // store valid pseudoranges in a map.
|
||||||
//d_rx_time = in[i][0].d_TOW_at_current_symbol; // all the channels have the same RX timestamp (common RX time pseudoranges)
|
//d_rx_time = in[i][0].d_TOW_at_current_symbol; // all the channels have the same RX timestamp (common RX time pseudoranges)
|
||||||
d_TOW_at_curr_symbol_constellation = in[i][0].d_TOW_at_current_symbol; // d_TOW_at_current_symbol not corrected by delta t (just for debug)
|
d_TOW_at_curr_symbol_constellation = in[i][0].d_TOW_at_current_symbol; // d_TOW_at_current_symbol not corrected by delta t (just for debug)
|
||||||
d_rx_time = in[i][0].d_TOW_hybrid_at_current_symbol; // hybrid rx time, all the channels have the same RX timestamp (common RX time pseudoranges)
|
d_rx_time = in[i][0].d_TOW_hybrid_at_current_symbol; // hybrid rx time, all the channels have the same RX timestamp (common RX time pseudoranges)
|
||||||
|
@ -120,7 +120,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
|
|||||||
{
|
{
|
||||||
//std::cout << "Satellite System: " << gnss_pseudoranges_iter->second.System <<std::endl;
|
//std::cout << "Satellite System: " << gnss_pseudoranges_iter->second.System <<std::endl;
|
||||||
// 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key
|
// 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key
|
||||||
galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_pseudoranges_iter->first);
|
galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
|
||||||
if (galileo_ephemeris_iter != galileo_ephemeris_map.end())
|
if (galileo_ephemeris_iter != galileo_ephemeris_map.end())
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
@ -166,7 +166,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
|
|||||||
// no valid pseudorange for the current SV
|
// no valid pseudorange for the current SV
|
||||||
W(obs_counter, obs_counter) = 0; // SV de-activated
|
W(obs_counter, obs_counter) = 0; // SV de-activated
|
||||||
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
|
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
|
||||||
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->first;
|
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->second.PRN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
|
|||||||
{
|
{
|
||||||
//std::cout << "Satellite System: " << gnss_pseudoranges_iter->second.System <<std::endl;
|
//std::cout << "Satellite System: " << gnss_pseudoranges_iter->second.System <<std::endl;
|
||||||
// 1 GPS - find the ephemeris for the current GPS SV observation. The SV PRN ID is the map key
|
// 1 GPS - find the ephemeris for the current GPS SV observation. The SV PRN ID is the map key
|
||||||
gps_ephemeris_iter = gps_ephemeris_map.find(gnss_pseudoranges_iter->first);
|
gps_ephemeris_iter = gps_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
|
||||||
if (gps_ephemeris_iter != gps_ephemeris_map.end())
|
if (gps_ephemeris_iter != gps_ephemeris_map.end())
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
@ -218,7 +218,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
|
|||||||
// no valid pseudorange for the current SV
|
// no valid pseudorange for the current SV
|
||||||
W(obs_counter, obs_counter) = 0; // SV de-activated
|
W(obs_counter, obs_counter) = 0; // SV de-activated
|
||||||
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
|
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
|
||||||
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->first;
|
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->second.PRN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
obs_counter++;
|
obs_counter++;
|
||||||
|
Loading…
Reference in New Issue
Block a user