mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-16 05:00:35 +00:00
Modify hybrid observables
This commit is contained in:
parent
756fd1904e
commit
c3657f3251
@ -55,8 +55,8 @@ hybrid_observables_cc::hybrid_observables_cc(unsigned int nchannels_in, unsigned
|
|||||||
gr::io_signature::make(nchannels_in, nchannels_in, sizeof(Gnss_Synchro)),
|
gr::io_signature::make(nchannels_in, nchannels_in, sizeof(Gnss_Synchro)),
|
||||||
gr::io_signature::make(nchannels_out, nchannels_out, sizeof(Gnss_Synchro)))
|
gr::io_signature::make(nchannels_out, nchannels_out, sizeof(Gnss_Synchro)))
|
||||||
{
|
{
|
||||||
set_max_noutput_items(1);
|
//set_max_noutput_items(1);
|
||||||
set_max_output_buffer(1);
|
//set_max_output_buffer(1);
|
||||||
d_dump = dump;
|
d_dump = dump;
|
||||||
d_nchannels = nchannels_out;
|
d_nchannels = nchannels_out;
|
||||||
d_dump_filename = dump_filename;
|
d_dump_filename = dump_filename;
|
||||||
@ -65,12 +65,7 @@ hybrid_observables_cc::hybrid_observables_cc(unsigned int nchannels_in, unsigned
|
|||||||
max_extrapol_time_s = 0.1; // 100 ms
|
max_extrapol_time_s = 0.1; // 100 ms
|
||||||
valid_channels.resize(d_nchannels, false);
|
valid_channels.resize(d_nchannels, false);
|
||||||
d_num_valid_channels = 0;
|
d_num_valid_channels = 0;
|
||||||
for (unsigned int i = 0; i < d_nchannels; i++)
|
|
||||||
{
|
|
||||||
d_gnss_synchro_history.push_back(std::pair<Gnss_Synchro,Gnss_Synchro>());
|
|
||||||
d_gnss_synchro_history.at(i).first.Flag_valid_word = false;
|
|
||||||
d_gnss_synchro_history.at(i).second.Flag_valid_word = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ############# ENABLE DATA FILE LOG #################
|
// ############# ENABLE DATA FILE LOG #################
|
||||||
if (d_dump)
|
if (d_dump)
|
||||||
@ -335,6 +330,11 @@ double Hybrid_Compute_T_rx_s(const Gnss_Synchro& a)
|
|||||||
else { return 0.0; }
|
else { return 0.0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Hybrid_find_trx(const Gnss_Synchro&a)
|
||||||
|
{
|
||||||
|
return(std::fabs(T_rx_s - a.RX_time) > trx_comp_thres);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
bool Hybrid_pairCompare_gnss_synchro_T_rx(const std::pair<Gnss_Synchro, Gnss_Synchro>& a, const std::pair<Gnss_Synchro, Gnss_Synchro>& b)
|
bool Hybrid_pairCompare_gnss_synchro_T_rx(const std::pair<Gnss_Synchro, Gnss_Synchro>& a, const std::pair<Gnss_Synchro, Gnss_Synchro>& b)
|
||||||
{
|
{
|
||||||
@ -446,20 +446,26 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused)
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
std::vector<std::pair<Gnss_Synchro, Gnss_Synchro>>::iterator it;
|
std::vector<std::deque<Gnss_Synchro>>::iterator it;
|
||||||
if (total_input_items > 0)
|
if (total_input_items > 0)
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
for (it = d_gnss_synchro_history.begin(); it != d_gnss_synchro_history.end(); it++)
|
for (it = d_gnss_synchro_history.begin(); it != d_gnss_synchro_history.end(); it++)
|
||||||
{
|
{
|
||||||
if (ninput_items[i] > 0 and (Hybrid_Compute_T_rx_s(in[i][0]) < T_rx_s))
|
if (ninput_items[i] > 0)
|
||||||
{
|
{
|
||||||
it->second = it->first; // second is the older Gnss_Synchro
|
for(int aux = 0; aux < ninput_items[i]; aux++)
|
||||||
it->first = in[i][0]; // first is the newest Gnss_Synchro
|
{
|
||||||
it->first.RX_time = Hybrid_Compute_T_rx_s(it->first);
|
it->push_back(in[i][aux]);
|
||||||
consume(i, 1);
|
it->at(it->size() - 1).RX_time = Hybrid_Compute_T_rx_s(in[i][aux]);
|
||||||
}
|
}
|
||||||
if (it->first.Flag_valid_word and it->second.Flag_valid_word) { valid_channels[i] = true; }
|
consume(ninput_items[i], 1);
|
||||||
|
}
|
||||||
|
while(std::find(d_gnss_synchro_history.begin(), d_gnss_synchro_history.end(), Hybrid_compare_trx) != d_gnss_synchro_history.end())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
if (it->size() > 2) { valid_channels[i] = true; }
|
||||||
else { valid_channels[i] = false; }
|
else { valid_channels[i] = false; }
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -506,7 +512,7 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused)
|
|||||||
{
|
{
|
||||||
if(valid_channels[i])
|
if(valid_channels[i])
|
||||||
{
|
{
|
||||||
double traveltime_ms = (out[i][0].RX_time - TOW_ref)*1000.0 + GPS_STARTOFFSET_ms;
|
double traveltime_ms = (out[i][0].RX_time - TOW_ref) * 1000.0 + GPS_STARTOFFSET_ms;
|
||||||
out[i][0].Pseudorange_m = traveltime_ms * GPS_C_m_ms;
|
out[i][0].Pseudorange_m = traveltime_ms * GPS_C_m_ms;
|
||||||
out[i][0].RX_time = TOW_ref + GPS_STARTOFFSET_ms / 1000.0;
|
out[i][0].RX_time = TOW_ref + GPS_STARTOFFSET_ms / 1000.0;
|
||||||
//std::cout << "Sat " << out[i][0].PRN << ". Prang = " << out[i][0].Pseudorange_m << ". TOW = " << out[i][0].RX_time << std::endl;
|
//std::cout << "Sat " << out[i][0].PRN << ". Prang = " << out[i][0].Pseudorange_m << ". TOW = " << out[i][0].RX_time << std::endl;
|
||||||
|
@ -35,8 +35,9 @@
|
|||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility> //std::pair
|
//#include <utility> //std::pair
|
||||||
#include <vector> //std::vector
|
#include <vector> //std::vector
|
||||||
|
#include <deque>
|
||||||
#include <boost/dynamic_bitset.hpp>
|
#include <boost/dynamic_bitset.hpp>
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
@ -65,7 +66,7 @@ private:
|
|||||||
hybrid_observables_cc(unsigned int nchannels_in, unsigned int nchannels_out, bool dump, std::string dump_filename);
|
hybrid_observables_cc(unsigned int nchannels_in, unsigned int nchannels_out, bool dump, std::string dump_filename);
|
||||||
|
|
||||||
//Tracking observable history
|
//Tracking observable history
|
||||||
std::vector<std::pair<Gnss_Synchro, Gnss_Synchro>> d_gnss_synchro_history;
|
std::vector<std::deque<Gnss_Synchro>> d_gnss_synchro_history;
|
||||||
boost::dynamic_bitset<> valid_channels;
|
boost::dynamic_bitset<> valid_channels;
|
||||||
double T_rx_s;
|
double T_rx_s;
|
||||||
double T_rx_step_s;
|
double T_rx_step_s;
|
||||||
|
Loading…
Reference in New Issue
Block a user