mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 12:10:34 +00:00
Bug fixes for duplicated observable time
This commit is contained in:
parent
ddcf1b1dee
commit
e26ddf07bc
@ -188,6 +188,7 @@ int hybrid_observables_cc::general_work (int noutput_items,
|
||||
gnss_synchro_map.end(),
|
||||
Hybrid_pairCompare_gnss_synchro_sample_counter);
|
||||
T_rx_s = (double)gnss_synchro_map_iter->second.Tracking_sample_counter/(double)gnss_synchro_map_iter->second.fs;
|
||||
T_rx_s = floor(T_rx_s*1000.0)/1000.0;// truncate to ms
|
||||
T_rx_s +=past_history_s; //increase T_rx to have a minimum past history to interpolate
|
||||
}
|
||||
|
||||
@ -216,25 +217,25 @@ int hybrid_observables_cc::general_work (int noutput_items,
|
||||
int distance=std::distance(d_gnss_synchro_history_queue[i].begin(), gnss_synchro_deque_iter);
|
||||
if (distance>0)
|
||||
{
|
||||
double T_rx_channel_prev=(double)d_gnss_synchro_history_queue[i].at(distance-1).Tracking_sample_counter/(double)gnss_synchro_deque_iter->fs;
|
||||
double delta_T_rx_s_prev=T_rx_channel_prev-T_rx_s;
|
||||
if (fabs(delta_T_rx_s_prev)<fabs(delta_T_rx_s))
|
||||
{
|
||||
realigned_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(
|
||||
d_gnss_synchro_history_queue[i].at(distance-1).Channel_ID,
|
||||
d_gnss_synchro_history_queue[i].at(distance-1)));
|
||||
adjacent_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(gnss_synchro_deque_iter->Channel_ID,
|
||||
*gnss_synchro_deque_iter));
|
||||
}else{
|
||||
// double T_rx_channel_prev=(double)d_gnss_synchro_history_queue[i].at(distance-1).Tracking_sample_counter/(double)gnss_synchro_deque_iter->fs;
|
||||
// double delta_T_rx_s_prev=T_rx_channel_prev-T_rx_s;
|
||||
// if (fabs(delta_T_rx_s_prev)<fabs(delta_T_rx_s))
|
||||
// {
|
||||
// realigned_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(
|
||||
// d_gnss_synchro_history_queue[i].at(distance-1).Channel_ID,
|
||||
// d_gnss_synchro_history_queue[i].at(distance-1)));
|
||||
// adjacent_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(gnss_synchro_deque_iter->Channel_ID,
|
||||
// *gnss_synchro_deque_iter));
|
||||
// }else{
|
||||
realigned_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(gnss_synchro_deque_iter->Channel_ID,
|
||||
*gnss_synchro_deque_iter));
|
||||
adjacent_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(
|
||||
d_gnss_synchro_history_queue[i].at(distance-1).Channel_ID,
|
||||
d_gnss_synchro_history_queue[i].at(distance-1)));
|
||||
}
|
||||
}else{
|
||||
realigned_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(gnss_synchro_deque_iter->Channel_ID,
|
||||
*gnss_synchro_deque_iter));
|
||||
// }
|
||||
// }else{
|
||||
// realigned_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(gnss_synchro_deque_iter->Channel_ID,
|
||||
// *gnss_synchro_deque_iter));
|
||||
}
|
||||
|
||||
}else{
|
||||
@ -254,6 +255,9 @@ int hybrid_observables_cc::general_work (int noutput_items,
|
||||
realigned_gnss_synchro_map.end(),
|
||||
Hybrid_pairCompare_gnss_synchro_d_TOW);
|
||||
double d_TOW_reference = gnss_synchro_map_iter->second.TOW_at_current_symbol_s;
|
||||
// std::cout << std::fixed;
|
||||
// std::cout << std::setprecision(2);
|
||||
// std::cout<<"d_TOW_reference:"<<d_TOW_reference*1000.0<<std::endl;
|
||||
double d_ref_PRN_phase_samples = gnss_synchro_map_iter->second.Code_phase_samples;
|
||||
//std::cout<<"OBS SV REF SAT: "<<gnss_synchro_map_iter->second.PRN<<std::endl;
|
||||
|
||||
|
@ -455,8 +455,7 @@ int galileo_e1b_telemetry_decoder_cc::general_work (int noutput_items __attribut
|
||||
current_synchro_data.Flag_valid_word = false;
|
||||
}
|
||||
|
||||
current_synchro_data.TOW_at_current_symbol_s = d_TOW_at_current_symbol;
|
||||
//todo: move to observables: current_synchro_data.d_TOW_hybrid_at_current_symbol = current_synchro_data.d_TOW_at_current_symbol - delta_t; //delta_t = t_gal - t_gps ----> t_gps = t_gal -delta_t
|
||||
current_synchro_data.TOW_at_current_symbol_s = floor(d_TOW_at_current_symbol*1000.0)/1000.0;
|
||||
|
||||
if(d_dump == true)
|
||||
{
|
||||
|
@ -533,7 +533,7 @@ int galileo_e5a_telemetry_decoder_cc::general_work (int noutput_items __attribut
|
||||
current_synchro_data.Flag_valid_word = false;
|
||||
}
|
||||
|
||||
current_synchro_data.TOW_at_current_symbol_s = d_TOW_at_current_symbol;
|
||||
current_synchro_data.TOW_at_current_symbol_s = floor(d_TOW_at_current_symbol*1000.0)/1000.0;
|
||||
|
||||
if(d_dump == true)
|
||||
{
|
||||
|
@ -340,7 +340,7 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
|
||||
// update TOW at the preamble instant
|
||||
d_TOW_at_Preamble = d_GPS_FSM.d_nav.d_TOW + GPS_L1_CA_CODE_PERIOD;
|
||||
|
||||
d_TOW_at_current_symbol = d_TOW_at_Preamble;
|
||||
d_TOW_at_current_symbol = floor(d_TOW_at_Preamble*1000.0)/1000.0;
|
||||
flag_TOW_set = true;
|
||||
d_flag_new_tow_available=false;
|
||||
}
|
||||
|
@ -155,6 +155,7 @@ int gps_l2c_telemetry_decoder_cc::general_work (int noutput_items __attribute__(
|
||||
//* \code
|
||||
//* symbolTime_ms = msg->tow * 6000 + *pdelay * 20
|
||||
d_TOW_at_current_symbol=((double)msg.tow) * 6.0 + ((double)delay) * GPS_L2_M_PERIOD +12*GPS_L2_M_PERIOD;
|
||||
d_TOW_at_current_symbol=floor(d_TOW_at_current_symbol*1000.0)/1000.0;
|
||||
d_flag_valid_word=true;
|
||||
}
|
||||
else
|
||||
|
@ -70,7 +70,7 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking(
|
||||
std::string default_dump_filename = "./track_ch";
|
||||
dump_filename = configuration->property(role + ".dump_filename",
|
||||
default_dump_filename); //unused!
|
||||
vector_length = std::round(fs_in / (GPS_L2_M_CODE_RATE_HZ / GPS_L2_M_CODE_LENGTH_CHIPS));
|
||||
vector_length = std::round((double)fs_in / ((double)GPS_L2_M_CODE_RATE_HZ / (double)GPS_L2_M_CODE_LENGTH_CHIPS));
|
||||
|
||||
//################# MAKE TRACKING GNURadio object ###################
|
||||
if (item_type.compare("gr_complex") == 0)
|
||||
|
@ -316,6 +316,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribute__
|
||||
current_synchro_data.Carrier_phase_rads = d_acc_carrier_phase_rad;
|
||||
current_synchro_data.Carrier_Doppler_hz = d_carrier_doppler_hz;
|
||||
current_synchro_data.fs=d_fs_in;
|
||||
current_synchro_data.correlation_length_ms = 1;
|
||||
*out[0] = current_synchro_data;
|
||||
consume_each(samples_offset); // shift input to perform alignment with local replica
|
||||
return 1;
|
||||
@ -428,6 +429,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribute__
|
||||
|
||||
current_synchro_data.Tracking_sample_counter =d_sample_counter + d_current_prn_length_samples;
|
||||
current_synchro_data.System = {'G'};
|
||||
current_synchro_data.correlation_length_ms = 1;
|
||||
}
|
||||
|
||||
//assign the GNURadio block output data
|
||||
|
@ -319,6 +319,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work (int noutput_items __attribu
|
||||
samples_offset = round(d_acq_code_phase_samples + acq_trk_shif_correction_samples);
|
||||
current_synchro_data.Tracking_sample_counter = d_sample_counter + samples_offset;
|
||||
current_synchro_data.fs=d_fs_in;
|
||||
current_synchro_data.correlation_length_ms = 1;
|
||||
*out[0] = current_synchro_data;
|
||||
d_sample_counter += samples_offset; //count for the processed samples
|
||||
d_pull_in = false;
|
||||
@ -453,6 +454,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work (int noutput_items __attribu
|
||||
}
|
||||
|
||||
current_synchro_data.System = {'G'};
|
||||
current_synchro_data.correlation_length_ms = 1;
|
||||
current_synchro_data.Tracking_sample_counter = d_sample_counter + d_correlation_length_samples;
|
||||
}
|
||||
|
||||
|
@ -320,6 +320,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items __attribute__(
|
||||
current_synchro_data.Carrier_phase_rads = d_acc_carrier_phase_rad;
|
||||
current_synchro_data.Carrier_Doppler_hz = d_carrier_doppler_hz;
|
||||
current_synchro_data.fs=d_fs_in;
|
||||
current_synchro_data.correlation_length_ms = 20;
|
||||
*out[0] = current_synchro_data;
|
||||
consume_each(samples_offset); // shift input to perform alignment with local replica
|
||||
return 1;
|
||||
@ -429,6 +430,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items __attribute__(
|
||||
d_correlator_outs[n] = gr_complex(0,0);
|
||||
}
|
||||
current_synchro_data.Tracking_sample_counter =d_sample_counter + d_current_prn_length_samples;
|
||||
current_synchro_data.correlation_length_ms = 20;
|
||||
}
|
||||
//assign the GNURadio block output data
|
||||
current_synchro_data.fs=d_fs_in;
|
||||
|
Loading…
Reference in New Issue
Block a user