mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-18 21:23:02 +00:00
Rename GPS_L1_CA_KF_VTL_Tracking to GPS_L1_CA_KF_Tracking
This commit is contained in:
parent
17b03eeb3e
commit
66935170a6
@ -97,7 +97,7 @@ Acquisition_1B.dump_filename=./acq_dump.dat
|
|||||||
|
|
||||||
|
|
||||||
;######### TRACKING GPS CONFIG ############
|
;######### TRACKING GPS CONFIG ############
|
||||||
Tracking_1C.implementation=GPS_L1_CA_KF_VTL_Tracking
|
Tracking_1C.implementation=GPS_L1_CA_KF_Tracking
|
||||||
Tracking_1C.item_type=gr_complex
|
Tracking_1C.item_type=gr_complex
|
||||||
Tracking_1C.dump=true
|
Tracking_1C.dump=true
|
||||||
Tracking_1C.dump_filename=./tracking_ch_
|
Tracking_1C.dump_filename=./tracking_ch_
|
@ -51,7 +51,7 @@ set(TRACKING_ADAPTER_SOURCES
|
|||||||
glonass_l2_ca_dll_pll_c_aid_tracking.cc
|
glonass_l2_ca_dll_pll_c_aid_tracking.cc
|
||||||
beidou_b1i_dll_pll_tracking.cc
|
beidou_b1i_dll_pll_tracking.cc
|
||||||
beidou_b3i_dll_pll_tracking.cc
|
beidou_b3i_dll_pll_tracking.cc
|
||||||
gps_l1_ca_kf_vtl_tracking.cc
|
gps_l1_ca_kf_tracking.cc
|
||||||
${OPT_TRACKING_ADAPTERS_SOURCES}
|
${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ set(TRACKING_ADAPTER_HEADERS
|
|||||||
glonass_l2_ca_dll_pll_c_aid_tracking.h
|
glonass_l2_ca_dll_pll_c_aid_tracking.h
|
||||||
beidou_b1i_dll_pll_tracking.h
|
beidou_b1i_dll_pll_tracking.h
|
||||||
beidou_b3i_dll_pll_tracking.h
|
beidou_b3i_dll_pll_tracking.h
|
||||||
gps_l1_ca_kf_vtl_tracking.h
|
gps_l1_ca_kf_tracking.h
|
||||||
${OPT_TRACKING_ADAPTERS_HEADERS}
|
${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file gps_l1_ca_kf_vtl_tracking.h
|
* \file gps_l1_ca_kf_tracking.h
|
||||||
* \brief Interface of an adapter of a code + carrier Kalman Filter tracking loop with VTL capabilities block
|
* \brief Interface of an adapter of a code + carrier Kalman Filter tracking
|
||||||
|
* loop with VTL capabilities block
|
||||||
* for GPS L1 C/A to a TrackingInterface
|
* for GPS L1 C/A to a TrackingInterface
|
||||||
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
||||||
*
|
*
|
||||||
@ -20,7 +21,7 @@
|
|||||||
* -----------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gps_l1_ca_kf_vtl_tracking.h"
|
#include "gps_l1_ca_kf_tracking.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
@ -30,7 +31,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
GpsL1CaKfVtlTracking::GpsL1CaKfVtlTracking(
|
GpsL1CaKfTracking::GpsL1CaKfTracking(
|
||||||
const ConfigurationInterface* configuration, const std::string& role,
|
const ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
@ -65,7 +66,7 @@ GpsL1CaKfVtlTracking::GpsL1CaKfVtlTracking(
|
|||||||
if (trk_params.item_type == "gr_complex")
|
if (trk_params.item_type == "gr_complex")
|
||||||
{
|
{
|
||||||
item_size_ = sizeof(gr_complex);
|
item_size_ = sizeof(gr_complex);
|
||||||
tracking_ = kf_vtl_make_tracking(trk_params);
|
tracking_ = kf_make_tracking(trk_params);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -85,13 +86,13 @@ GpsL1CaKfVtlTracking::GpsL1CaKfVtlTracking(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL1CaKfVtlTracking::stop_tracking()
|
void GpsL1CaKfTracking::stop_tracking()
|
||||||
{
|
{
|
||||||
tracking_->stop_tracking();
|
tracking_->stop_tracking();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL1CaKfVtlTracking::start_tracking()
|
void GpsL1CaKfTracking::start_tracking()
|
||||||
{
|
{
|
||||||
tracking_->start_tracking();
|
tracking_->start_tracking();
|
||||||
}
|
}
|
||||||
@ -100,20 +101,20 @@ void GpsL1CaKfVtlTracking::start_tracking()
|
|||||||
/*
|
/*
|
||||||
* Set tracking channel unique ID
|
* Set tracking channel unique ID
|
||||||
*/
|
*/
|
||||||
void GpsL1CaKfVtlTracking::set_channel(unsigned int channel)
|
void GpsL1CaKfTracking::set_channel(unsigned int channel)
|
||||||
{
|
{
|
||||||
channel_ = channel;
|
channel_ = channel;
|
||||||
tracking_->set_channel(channel);
|
tracking_->set_channel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL1CaKfVtlTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
|
void GpsL1CaKfTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
|
||||||
{
|
{
|
||||||
tracking_->set_gnss_synchro(p_gnss_synchro);
|
tracking_->set_gnss_synchro(p_gnss_synchro);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL1CaKfVtlTracking::connect(gr::top_block_sptr top_block)
|
void GpsL1CaKfTracking::connect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (top_block)
|
if (top_block)
|
||||||
{ /* top_block is not null */
|
{ /* top_block is not null */
|
||||||
@ -122,7 +123,7 @@ void GpsL1CaKfVtlTracking::connect(gr::top_block_sptr top_block)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL1CaKfVtlTracking::disconnect(gr::top_block_sptr top_block)
|
void GpsL1CaKfTracking::disconnect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (top_block)
|
if (top_block)
|
||||||
{ /* top_block is not null */
|
{ /* top_block is not null */
|
||||||
@ -131,13 +132,13 @@ void GpsL1CaKfVtlTracking::disconnect(gr::top_block_sptr top_block)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gr::basic_block_sptr GpsL1CaKfVtlTracking::get_left_block()
|
gr::basic_block_sptr GpsL1CaKfTracking::get_left_block()
|
||||||
{
|
{
|
||||||
return tracking_;
|
return tracking_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gr::basic_block_sptr GpsL1CaKfVtlTracking::get_right_block()
|
gr::basic_block_sptr GpsL1CaKfTracking::get_right_block()
|
||||||
{
|
{
|
||||||
return tracking_;
|
return tracking_;
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file gps_l1_ca_kf_vtl_tracking.h
|
* \file gps_l1_ca_kf_tracking.h
|
||||||
* \brief Interface of an adapter of a code + carrier Kalman Filter tracking loop with VTL capabilities block
|
* \brief Interface of an adapter of a code + carrier Kalman Filter tracking
|
||||||
|
* loop with VTL capabilities block
|
||||||
* for GPS L1 C/A to a TrackingInterface
|
* for GPS L1 C/A to a TrackingInterface
|
||||||
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
||||||
*
|
*
|
||||||
@ -19,38 +20,39 @@
|
|||||||
* -----------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GNSS_SDR_GPS_L1_CA_kf_vtl_TRACKING_H
|
#ifndef GNSS_SDR_GPS_L1_CA_KF_TRACKING_H
|
||||||
#define GNSS_SDR_GPS_L1_CA_kf_vtl_TRACKING_H
|
#define GNSS_SDR_GPS_L1_CA_KF_TRACKING_H
|
||||||
|
|
||||||
#include "kf_vtl_tracking.h"
|
#include "kf_tracking.h"
|
||||||
#include "tracking_interface.h"
|
#include "tracking_interface.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a code + carrier Kalman Filter tracking loop with VTL capabilities
|
* \brief This class implements a code + carrier Kalman Filter tracking loop
|
||||||
|
* with VTL capabilities
|
||||||
*/
|
*/
|
||||||
class GpsL1CaKfVtlTracking : public TrackingInterface
|
class GpsL1CaKfTracking : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GpsL1CaKfVtlTracking(
|
GpsL1CaKfTracking(
|
||||||
const ConfigurationInterface* configuration,
|
const ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
~GpsL1CaKfVtlTracking() = default;
|
~GpsL1CaKfTracking() = default;
|
||||||
|
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "GPS_L1_CA_kf_vtl_Tracking"
|
//! Returns "GPS_L1_CA_KF_Tracking"
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GPS_L1_CA_KF_VTL_Tracking";
|
return "GPS_L1_CA_KF_Tracking";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
@ -70,7 +72,8 @@ public:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
||||||
* to efficiently exchange synchronization data between acquisition and tracking blocks
|
* to efficiently exchange synchronization data between acquisition
|
||||||
|
* and tracking blocks
|
||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
@ -82,7 +85,7 @@ public:
|
|||||||
void stop_tracking() override;
|
void stop_tracking() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
kf_vtl_tracking_sptr tracking_;
|
kf_tracking_sptr tracking_;
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
unsigned int channel_;
|
unsigned int channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
@ -90,4 +93,4 @@ private:
|
|||||||
unsigned int out_streams_;
|
unsigned int out_streams_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_GPS_L1_CA_kf_vtl_TRACKING_H
|
#endif // GNSS_SDR_GPS_L1_CA_KF_TRACKING_H
|
@ -39,7 +39,7 @@ set(TRACKING_GR_BLOCKS_SOURCES
|
|||||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
|
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
|
||||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
|
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
|
||||||
dll_pll_veml_tracking.cc
|
dll_pll_veml_tracking.cc
|
||||||
kf_vtl_tracking.cc
|
kf_tracking.cc
|
||||||
${OPT_TRACKING_BLOCKS_SOURCES}
|
${OPT_TRACKING_BLOCKS_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ set(TRACKING_GR_BLOCKS_HEADERS
|
|||||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
|
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
|
||||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
|
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
|
||||||
dll_pll_veml_tracking.h
|
dll_pll_veml_tracking.h
|
||||||
kf_vtl_tracking.h
|
kf_tracking.h
|
||||||
${OPT_TRACKING_BLOCKS_HEADERS}
|
${OPT_TRACKING_BLOCKS_HEADERS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file kf_vtl_tracking.cc
|
* \file kf_tracking.cc
|
||||||
* \brief Implementation of a Kalman filter based tracking with optional Vector
|
* \brief Implementation of a Kalman filter based tracking with optional Vector
|
||||||
* Tracking Loop message receiver block.
|
* Tracking Loop message receiver block.
|
||||||
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
||||||
@ -18,7 +18,7 @@
|
|||||||
* -----------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "kf_vtl_tracking.h"
|
#include "kf_tracking.h"
|
||||||
#include "Beidou_B1I.h"
|
#include "Beidou_B1I.h"
|
||||||
#include "Beidou_B3I.h"
|
#include "Beidou_B3I.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
@ -71,14 +71,14 @@ namespace wht = boost;
|
|||||||
namespace wht = std;
|
namespace wht = std;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
kf_vtl_tracking_sptr kf_vtl_make_tracking(const Kf_Conf &conf_)
|
kf_tracking_sptr kf_make_tracking(const Kf_Conf &conf_)
|
||||||
{
|
{
|
||||||
return kf_vtl_tracking_sptr(new kf_vtl_tracking(conf_));
|
return kf_tracking_sptr(new kf_tracking(conf_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
kf_vtl_tracking::kf_vtl_tracking(const Kf_Conf &conf_)
|
kf_tracking::kf_tracking(const Kf_Conf &conf_)
|
||||||
: gr::block("kf_vtl_tracking",
|
: gr::block("kf_tracking",
|
||||||
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||||
gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))),
|
gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))),
|
||||||
d_trk_parameters(conf_),
|
d_trk_parameters(conf_),
|
||||||
@ -146,9 +146,9 @@ kf_vtl_tracking::kf_vtl_tracking(const Kf_Conf &conf_)
|
|||||||
[this](auto &&PH1) { msg_handler_telemetry_to_trk(PH1); });
|
[this](auto &&PH1) { msg_handler_telemetry_to_trk(PH1); });
|
||||||
#else
|
#else
|
||||||
#if USE_BOOST_BIND_PLACEHOLDERS
|
#if USE_BOOST_BIND_PLACEHOLDERS
|
||||||
boost::bind(&kf_vtl_tracking::msg_handler_telemetry_to_trk, this, boost::placeholders::_1));
|
boost::bind(&kf_tracking::msg_handler_telemetry_to_trk, this, boost::placeholders::_1));
|
||||||
#else
|
#else
|
||||||
boost::bind(&kf_vtl_tracking::msg_handler_telemetry_to_trk, this, _1));
|
boost::bind(&kf_tracking::msg_handler_telemetry_to_trk, this, _1));
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -160,9 +160,9 @@ kf_vtl_tracking::kf_vtl_tracking(const Kf_Conf &conf_)
|
|||||||
[this](auto &&PH1) { msg_handler_pvt_to_trk(PH1); });
|
[this](auto &&PH1) { msg_handler_pvt_to_trk(PH1); });
|
||||||
#else
|
#else
|
||||||
#if USE_BOOST_BIND_PLACEHOLDERS
|
#if USE_BOOST_BIND_PLACEHOLDERS
|
||||||
boost::bind(&kf_vtl_tracking::msg_handler_pvt_to_trk, this, boost::placeholders::_1));
|
boost::bind(&kf_tracking::msg_handler_pvt_to_trk, this, boost::placeholders::_1));
|
||||||
#else
|
#else
|
||||||
boost::bind(&kf_vtl_tracking::msg_handler_pvt_to_trk, this, _1));
|
boost::bind(&kf_tracking::msg_handler_pvt_to_trk, this, _1));
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -587,7 +587,7 @@ kf_vtl_tracking::kf_vtl_tracking(const Kf_Conf &conf_)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::forecast(int noutput_items,
|
void kf_tracking::forecast(int noutput_items,
|
||||||
gr_vector_int &ninput_items_required)
|
gr_vector_int &ninput_items_required)
|
||||||
{
|
{
|
||||||
if (noutput_items != 0)
|
if (noutput_items != 0)
|
||||||
@ -597,7 +597,7 @@ void kf_vtl_tracking::forecast(int noutput_items,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::msg_handler_telemetry_to_trk(const pmt::pmt_t &msg)
|
void kf_tracking::msg_handler_telemetry_to_trk(const pmt::pmt_t &msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -619,7 +619,7 @@ void kf_vtl_tracking::msg_handler_telemetry_to_trk(const pmt::pmt_t &msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::msg_handler_pvt_to_trk(const pmt::pmt_t &msg)
|
void kf_tracking::msg_handler_pvt_to_trk(const pmt::pmt_t &msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -641,7 +641,7 @@ void kf_vtl_tracking::msg_handler_pvt_to_trk(const pmt::pmt_t &msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::start_tracking()
|
void kf_tracking::start_tracking()
|
||||||
{
|
{
|
||||||
gr::thread::scoped_lock l(d_setlock);
|
gr::thread::scoped_lock l(d_setlock);
|
||||||
// correct the code phase according to the delay between acq and trk
|
// correct the code phase according to the delay between acq and trk
|
||||||
@ -854,7 +854,7 @@ void kf_vtl_tracking::start_tracking()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::init_kf(double acq_code_phase_chips, double acq_doppler_hz)
|
void kf_tracking::init_kf(double acq_code_phase_chips, double acq_doppler_hz)
|
||||||
{
|
{
|
||||||
// Kalman Filter class variables
|
// Kalman Filter class variables
|
||||||
const double Ti = d_current_correlation_time_s;
|
const double Ti = d_current_correlation_time_s;
|
||||||
@ -895,7 +895,7 @@ void kf_vtl_tracking::init_kf(double acq_code_phase_chips, double acq_doppler_hz
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::update_kf_narrow_integration_time()
|
void kf_tracking::update_kf_narrow_integration_time()
|
||||||
{
|
{
|
||||||
// Kalman Filter class variables
|
// Kalman Filter class variables
|
||||||
const double Ti = d_current_correlation_time_s;
|
const double Ti = d_current_correlation_time_s;
|
||||||
@ -935,7 +935,7 @@ void kf_vtl_tracking::update_kf_narrow_integration_time()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::update_kf_cn0(double current_cn0_dbhz)
|
void kf_tracking::update_kf_cn0(double current_cn0_dbhz)
|
||||||
{
|
{
|
||||||
// Kalman Filter class variables
|
// Kalman Filter class variables
|
||||||
const double Ti = d_current_correlation_time_s; // d_correlation_length_ms * 0.001;
|
const double Ti = d_current_correlation_time_s; // d_correlation_length_ms * 0.001;
|
||||||
@ -955,7 +955,7 @@ void kf_vtl_tracking::update_kf_cn0(double current_cn0_dbhz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
kf_vtl_tracking::~kf_vtl_tracking()
|
kf_tracking::~kf_tracking()
|
||||||
{
|
{
|
||||||
if (d_dump_file.is_open())
|
if (d_dump_file.is_open())
|
||||||
{
|
{
|
||||||
@ -994,7 +994,7 @@ kf_vtl_tracking::~kf_vtl_tracking()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool kf_vtl_tracking::acquire_secondary()
|
bool kf_tracking::acquire_secondary()
|
||||||
{
|
{
|
||||||
// ******* preamble correlation ********
|
// ******* preamble correlation ********
|
||||||
int32_t corr_value = 0;
|
int32_t corr_value = 0;
|
||||||
@ -1033,7 +1033,7 @@ bool kf_vtl_tracking::acquire_secondary()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool kf_vtl_tracking::cn0_and_tracking_lock_status(double coh_integration_time_s)
|
bool kf_tracking::cn0_and_tracking_lock_status(double coh_integration_time_s)
|
||||||
{
|
{
|
||||||
// ####### CN0 ESTIMATION AND LOCK DETECTORS ######
|
// ####### CN0 ESTIMATION AND LOCK DETECTORS ######
|
||||||
if (d_cn0_estimation_counter < d_trk_parameters.cn0_samples)
|
if (d_cn0_estimation_counter < d_trk_parameters.cn0_samples)
|
||||||
@ -1098,7 +1098,7 @@ bool kf_vtl_tracking::cn0_and_tracking_lock_status(double coh_integration_time_s
|
|||||||
// - updated remnant code phase in samples (d_rem_code_phase_samples)
|
// - updated remnant code phase in samples (d_rem_code_phase_samples)
|
||||||
// - d_code_freq_chips
|
// - d_code_freq_chips
|
||||||
// - d_carrier_doppler_hz
|
// - d_carrier_doppler_hz
|
||||||
void kf_vtl_tracking::do_correlation_step(const gr_complex *input_samples)
|
void kf_tracking::do_correlation_step(const gr_complex *input_samples)
|
||||||
{
|
{
|
||||||
// ################# CARRIER WIPEOFF AND CORRELATORS ##############################
|
// ################# CARRIER WIPEOFF AND CORRELATORS ##############################
|
||||||
// perform carrier wipe-off and compute Early, Prompt and Late correlation
|
// perform carrier wipe-off and compute Early, Prompt and Late correlation
|
||||||
@ -1126,7 +1126,7 @@ void kf_vtl_tracking::do_correlation_step(const gr_complex *input_samples)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::run_Kf()
|
void kf_tracking::run_Kf()
|
||||||
{
|
{
|
||||||
// Carrier discriminator
|
// Carrier discriminator
|
||||||
if (d_cloop)
|
if (d_cloop)
|
||||||
@ -1204,7 +1204,7 @@ void kf_vtl_tracking::run_Kf()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::check_carrier_phase_coherent_initialization()
|
void kf_tracking::check_carrier_phase_coherent_initialization()
|
||||||
{
|
{
|
||||||
if (d_acc_carrier_phase_initialized == false)
|
if (d_acc_carrier_phase_initialized == false)
|
||||||
{
|
{
|
||||||
@ -1214,7 +1214,7 @@ void kf_vtl_tracking::check_carrier_phase_coherent_initialization()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::clear_tracking_vars()
|
void kf_tracking::clear_tracking_vars()
|
||||||
{
|
{
|
||||||
std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0));
|
std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0));
|
||||||
if (d_trk_parameters.track_pilot)
|
if (d_trk_parameters.track_pilot)
|
||||||
@ -1234,7 +1234,7 @@ void kf_vtl_tracking::clear_tracking_vars()
|
|||||||
|
|
||||||
|
|
||||||
// todo: IT DOES NOT WORK WHEN NO KF IS RUNNING (extended correlation epochs!!)
|
// todo: IT DOES NOT WORK WHEN NO KF IS RUNNING (extended correlation epochs!!)
|
||||||
void kf_vtl_tracking::update_tracking_vars()
|
void kf_tracking::update_tracking_vars()
|
||||||
{
|
{
|
||||||
d_T_chip_seconds = 1.0 / d_code_freq_kf_chips_s;
|
d_T_chip_seconds = 1.0 / d_code_freq_kf_chips_s;
|
||||||
d_T_prn_seconds = d_T_chip_seconds * static_cast<double>(d_code_length_chips);
|
d_T_prn_seconds = d_T_chip_seconds * static_cast<double>(d_code_length_chips);
|
||||||
@ -1313,7 +1313,7 @@ void kf_vtl_tracking::update_tracking_vars()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::save_correlation_results()
|
void kf_tracking::save_correlation_results()
|
||||||
{
|
{
|
||||||
if (d_secondary)
|
if (d_secondary)
|
||||||
{
|
{
|
||||||
@ -1426,7 +1426,7 @@ void kf_vtl_tracking::save_correlation_results()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::log_data()
|
void kf_tracking::log_data()
|
||||||
{
|
{
|
||||||
if (d_dump)
|
if (d_dump)
|
||||||
{
|
{
|
||||||
@ -1525,7 +1525,7 @@ void kf_vtl_tracking::log_data()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t kf_vtl_tracking::save_matfile() const
|
int32_t kf_tracking::save_matfile() const
|
||||||
{
|
{
|
||||||
// READ DUMP FILE
|
// READ DUMP FILE
|
||||||
std::ifstream::pos_type size;
|
std::ifstream::pos_type size;
|
||||||
@ -1725,7 +1725,7 @@ int32_t kf_vtl_tracking::save_matfile() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::set_channel(uint32_t channel)
|
void kf_tracking::set_channel(uint32_t channel)
|
||||||
{
|
{
|
||||||
gr::thread::scoped_lock l(d_setlock);
|
gr::thread::scoped_lock l(d_setlock);
|
||||||
d_channel = channel;
|
d_channel = channel;
|
||||||
@ -1756,21 +1756,21 @@ void kf_vtl_tracking::set_channel(uint32_t channel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::set_gnss_synchro(Gnss_Synchro *p_gnss_synchro)
|
void kf_tracking::set_gnss_synchro(Gnss_Synchro *p_gnss_synchro)
|
||||||
{
|
{
|
||||||
gr::thread::scoped_lock l(d_setlock);
|
gr::thread::scoped_lock l(d_setlock);
|
||||||
d_acquisition_gnss_synchro = p_gnss_synchro;
|
d_acquisition_gnss_synchro = p_gnss_synchro;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void kf_vtl_tracking::stop_tracking()
|
void kf_tracking::stop_tracking()
|
||||||
{
|
{
|
||||||
gr::thread::scoped_lock l(d_setlock);
|
gr::thread::scoped_lock l(d_setlock);
|
||||||
d_state = 0;
|
d_state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int kf_vtl_tracking::general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items,
|
int kf_tracking::general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items,
|
||||||
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
|
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
|
||||||
{
|
{
|
||||||
gr::thread::scoped_lock l(d_setlock);
|
gr::thread::scoped_lock l(d_setlock);
|
@ -1,5 +1,5 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file kf_vtl_tracking.cc
|
* \file kf_tracking.cc
|
||||||
* \brief Implementation of a Kalman filter based tracking with optional Vector
|
* \brief Implementation of a Kalman filter based tracking with optional Vector
|
||||||
* Tracking Loop message receiver block.
|
* Tracking Loop message receiver block.
|
||||||
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
* \author Javier Arribas, 2020. jarribas(at)cttc.es
|
||||||
@ -18,8 +18,8 @@
|
|||||||
* -----------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GNSS_SDR_KF_VTL_TRACKING_H
|
#ifndef GNSS_SDR_KF_TRACKING_H
|
||||||
#define GNSS_SDR_KF_VTL_TRACKING_H
|
#define GNSS_SDR_KF_TRACKING_H
|
||||||
|
|
||||||
#if ARMA_NO_BOUND_CHECKING
|
#if ARMA_NO_BOUND_CHECKING
|
||||||
#define ARMA_NO_DEBUG 1
|
#define ARMA_NO_DEBUG 1
|
||||||
@ -48,19 +48,19 @@
|
|||||||
#include <utility> // for pair
|
#include <utility> // for pair
|
||||||
|
|
||||||
class Gnss_Synchro;
|
class Gnss_Synchro;
|
||||||
class kf_vtl_tracking;
|
class kf_tracking;
|
||||||
|
|
||||||
using kf_vtl_tracking_sptr = gnss_shared_ptr<kf_vtl_tracking>;
|
using kf_tracking_sptr = gnss_shared_ptr<kf_tracking>;
|
||||||
|
|
||||||
kf_vtl_tracking_sptr kf_vtl_make_tracking(const Kf_Conf &conf_);
|
kf_tracking_sptr kf_make_tracking(const Kf_Conf &conf_);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a code DLL + carrier PLL tracking block.
|
* \brief This class implements a code DLL + carrier PLL tracking block.
|
||||||
*/
|
*/
|
||||||
class kf_vtl_tracking : public gr::block
|
class kf_tracking : public gr::block
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
~kf_vtl_tracking();
|
~kf_tracking();
|
||||||
|
|
||||||
void set_channel(uint32_t channel);
|
void set_channel(uint32_t channel);
|
||||||
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
|
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
|
||||||
@ -73,8 +73,8 @@ public:
|
|||||||
void forecast(int noutput_items, gr_vector_int &ninput_items_required);
|
void forecast(int noutput_items, gr_vector_int &ninput_items_required);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend kf_vtl_tracking_sptr kf_vtl_make_tracking(const Kf_Conf &conf_);
|
friend kf_tracking_sptr kf_make_tracking(const Kf_Conf &conf_);
|
||||||
explicit kf_vtl_tracking(const Kf_Conf &conf_);
|
explicit kf_tracking(const Kf_Conf &conf_);
|
||||||
|
|
||||||
void init_kf(double acq_code_phase_chips, double acq_doppler_hz);
|
void init_kf(double acq_code_phase_chips, double acq_doppler_hz);
|
||||||
void update_kf_narrow_integration_time();
|
void update_kf_narrow_integration_time();
|
||||||
@ -233,4 +233,4 @@ private:
|
|||||||
bool d_enable_extended_integration;
|
bool d_enable_extended_integration;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_KF_VTL_TRACKING_H
|
#endif // GNSS_SDR_KF_TRACKING_H
|
@ -73,7 +73,7 @@
|
|||||||
#include "gnss_sdr_string_literals.h"
|
#include "gnss_sdr_string_literals.h"
|
||||||
#include "gps_l1_ca_dll_pll_tracking.h"
|
#include "gps_l1_ca_dll_pll_tracking.h"
|
||||||
#include "gps_l1_ca_gaussian_tracking.h"
|
#include "gps_l1_ca_gaussian_tracking.h"
|
||||||
#include "gps_l1_ca_kf_vtl_tracking.h"
|
#include "gps_l1_ca_kf_tracking.h"
|
||||||
#include "gps_l1_ca_pcps_acquisition.h"
|
#include "gps_l1_ca_pcps_acquisition.h"
|
||||||
#include "gps_l1_ca_pcps_acquisition_fine_doppler.h"
|
#include "gps_l1_ca_pcps_acquisition_fine_doppler.h"
|
||||||
#include "gps_l1_ca_pcps_assisted_acquisition.h"
|
#include "gps_l1_ca_pcps_assisted_acquisition.h"
|
||||||
@ -1085,9 +1085,9 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetBlock(
|
|||||||
out_streams);
|
out_streams);
|
||||||
block = std::move(block_);
|
block = std::move(block_);
|
||||||
}
|
}
|
||||||
else if (implementation == "GPS_L1_CA_KF_VTL_Tracking")
|
else if (implementation == "GPS_L1_CA_KF_Tracking")
|
||||||
{
|
{
|
||||||
std::unique_ptr<GNSSBlockInterface> block_ = std::make_unique<GpsL1CaKfVtlTracking>(configuration, role, in_streams,
|
std::unique_ptr<GNSSBlockInterface> block_ = std::make_unique<GpsL1CaKfTracking>(configuration, role, in_streams,
|
||||||
out_streams);
|
out_streams);
|
||||||
block = std::move(block_);
|
block = std::move(block_);
|
||||||
}
|
}
|
||||||
@ -1541,9 +1541,9 @@ std::unique_ptr<TrackingInterface> GNSSBlockFactory::GetTrkBlock(
|
|||||||
out_streams);
|
out_streams);
|
||||||
block = std::move(block_);
|
block = std::move(block_);
|
||||||
}
|
}
|
||||||
else if (implementation == "GPS_L1_CA_KF_VTL_Tracking")
|
else if (implementation == "GPS_L1_CA_KF_Tracking")
|
||||||
{
|
{
|
||||||
std::unique_ptr<TrackingInterface> block_ = std::make_unique<GpsL1CaKfVtlTracking>(configuration, role, in_streams,
|
std::unique_ptr<TrackingInterface> block_ = std::make_unique<GpsL1CaKfTracking>(configuration, role, in_streams,
|
||||||
out_streams);
|
out_streams);
|
||||||
block = std::move(block_);
|
block = std::move(block_);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user