GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
tracking_libs

Classes

class  Bayesian_estimator
 Bayesian_estimator is an estimator of noise characteristics (i.e. mean, covariance). More...
class  HistogramBitSynchronizer
 Histogram-based navigation data bit synchronizer. More...
class  Cpu_Multicorrelator
 Class that implements carrier wipe-off and correlators. More...
class  Cpu_Multicorrelator_16sc
 Class that implements carrier wipe-off and correlators. More...
class  Cpu_Multicorrelator_Real_Codes
 Class that implements carrier wipe-off and correlators. More...
struct  GPU_Complex
struct  GPU_Complex_Short
class  cuda_multicorrelator
 Class that implements carrier wipe-off and correlators using NVIDIA CUDA GPU accelerators. More...
class  Dll_Pll_Conf
class  Dll_Pll_Conf_Fpga
class  Exponential_Smoother
 Class that implements a first-order exponential smoother. More...
class  Fpga_Multicorrelator_8sc
 Class that implements carrier wipe-off and correlators. More...
class  ModelFunction
class  CubatureFilter
class  UnscentedFilter
class  Tcp_Communication
 TCP communication class. More...
class  Tcp_Packet_Data
 Class that implements a TCP data packet. More...
class  Tracking_2nd_DLL_filter
 This class implements a 2nd order DLL filter for code tracking loop. More...
class  Tracking_2nd_PLL_filter
 This class implements a 2nd order PLL filter for carrier tracking loop. More...
class  Tracking_FLL_PLL_filter
 This class implements a hybrid FLL and PLL filter for tracking carrier loop. More...
class  Tracking_loop_filter
 This class implements a generic 1st, 2nd or 3rd order loop filter. More...

Macros

#define NUM_TX_VARIABLES_GALILEO_E1   13
#define NUM_TX_VARIABLES_GPS_L1_CA   9
#define NUM_RX_VARIABLES   4

Typedefs

using b_io_context = boost::asio::io_service

Functions

float cn0_svn_estimator (const gr_complex *Prompt_buffer, int length, float coh_integration_time_s)
 cn0_svn_estimator is a Carrier-to-Noise (CN0) estimator based on the Signal-to-Noise Variance (SNV) estimator
float cn0_m2m4_estimator (const gr_complex *Prompt_buffer, int length, float coh_integration_time_s)
 cn0_m2m4_estimator is a Carrier-to-Noise (CN0) estimator based on the Second- and Fourth-Order Moments Method (M2M4)
float carrier_lock_detector (const gr_complex *Prompt_buffer, int length)
 A carrier lock detector.
double fll_four_quadrant_atan (gr_complex prompt_s1, gr_complex prompt_s2, double t1, double t2)
double fll_diff_atan (gr_complex prompt_s1, gr_complex prompt_s2, double t1, double t2)
double phase_unwrap (double phase_rad)
 Phase unwrapping function, input is [rad].
double pll_four_quadrant_atan (gr_complex prompt_s1)
 PLL four quadrant arctan discriminator.
double pll_cloop_two_quadrant_atan (gr_complex prompt_s1)
 PLL Costas loop two quadrant arctan discriminator.
double dll_nc_e_minus_l_normalized (gr_complex early_s1, gr_complex late_s1, float spc=0.5, float slope=1.0, float y_intercept=1.0)
 DLL Noncoherent Early minus Late envelope normalized discriminator.
double dll_nc_vemlp_normalized (gr_complex very_early_s1, gr_complex early_s1, gr_complex late_s1, gr_complex very_late_s1)
 DLL Noncoherent Very Early Minus Late Power (VEMLP) normalized discriminator.
template<typename Fun>
double CalculateSlope (Fun &&f, double x)
template<typename Fun>
double CalculateSlopeAbs (Fun &&f, double x)
template<typename Fun>
double GetYIntercept (Fun &&f, double x)
template<typename Fun>
double GetYInterceptAbs (Fun &&f, double x)
template<int M = 1, int N = M>
double SinBocCorrelationFunction (double offset_in_chips)
template<int M = 1, int N = M>
double CosBocCorrelationFunction (double offset_in_chips)

Detailed Description

Utitilies for GNSS signal tracking.

Macro Definition Documentation

◆ NUM_RX_VARIABLES

#define NUM_RX_VARIABLES   4

Definition at line 39 of file tcp_communication.h.

◆ NUM_TX_VARIABLES_GALILEO_E1

#define NUM_TX_VARIABLES_GALILEO_E1   13

Definition at line 37 of file tcp_communication.h.

◆ NUM_TX_VARIABLES_GPS_L1_CA

#define NUM_TX_VARIABLES_GPS_L1_CA   9

Definition at line 38 of file tcp_communication.h.

Typedef Documentation

◆ b_io_context

using b_io_context = boost::asio::io_service

Definition at line 34 of file tcp_communication.h.

Function Documentation

◆ CalculateSlope()

template<typename Fun>
double CalculateSlope ( Fun && f,
double x )

Definition at line 112 of file tracking_discriminators.h.

◆ CalculateSlopeAbs()

template<typename Fun>
double CalculateSlopeAbs ( Fun && f,
double x )

Definition at line 120 of file tracking_discriminators.h.

◆ carrier_lock_detector()

float carrier_lock_detector ( const gr_complex * Prompt_buffer,
int length )

A carrier lock detector.

The Carrier Phase Lock Detector block uses the estimate of the cosine of twice the carrier phase error is given by

\begin{equation} C2\phi=\frac{NBD}{NBP}, \end{equation}

where \( NBD=(\sum^{N-1}_{i=0}|Im(Pc(i))|)^2+(\sum^{N-1}_{i=0}|Re(Pc(i))|)^2 \), \( NBP=\sum^{N-1}_{i=0}Im(Pc(i))^2-\sum^{N-1}_{i=0}Re(Pc(i))^2 \), and \( Pc(i) \) is the prompt correlator output for the sample index i. Ref: Van Dierendonck, A.J. (1996), Global Positioning System: Theory and Applications, Volume I, Chapter 8: GPS Receivers, AJ Systems, Los Altos, CA 94024. Inc.: 329-407.

◆ cn0_m2m4_estimator()

float cn0_m2m4_estimator ( const gr_complex * Prompt_buffer,
int length,
float coh_integration_time_s )

cn0_m2m4_estimator is a Carrier-to-Noise (CN0) estimator based on the Second- and Fourth-Order Moments Method (M2M4)

Signal-to-Noise (SNR) ( \( \rho \)) estimator using the Moments Method:

\begin{equation} \hat{\rho}=\frac{\sqrt{2 \hat{M}_2^2 - \hat{M}_4 }}{\hat{M}_2-\sqrt{2 \hat{M}_2^2 - \hat{M}_4 }}, \end{equation}

where \( \hat{M}_2=\frac{1}{N}\sum^{K-1}_{k=0}|P[k]|^2 \), \( \hat{M}_4 = \frac{1}{K}\sum^{K-1}_{k=0}|P[k]|^4 \), \( |\cdot| \) is the absolute value, and \( P[k] \) is the prompt correlator output for the sample index k.

The SNR value is converted to CN0 [dB-Hz] taking into account the coherent integration time, using the following formula:

\begin{equation} CN0_{dB}=10*log(\hat{\rho})-10*log(T_{int}), \end{equation}

where \( T_{int} \) is the coherent integration time, in seconds.

Ref: D. R. Pauluzzi, N. C. Beaulieu, "A comparison of SNR estimation techniques for the AWGN channel," IEEE Trans. on Comm., vol. 48, no. 10, pp. 1681–1691, Oct. 2000.

◆ cn0_svn_estimator()

float cn0_svn_estimator ( const gr_complex * Prompt_buffer,
int length,
float coh_integration_time_s )

cn0_svn_estimator is a Carrier-to-Noise (CN0) estimator based on the Signal-to-Noise Variance (SNV) estimator

Signal-to-Noise (SNR) ( \( \rho \)) estimator using the Signal-to-Noise Variance (SNV) estimator:

\begin{equation} \hat{\rho}=\frac{\hat{P}_s}{\hat{P}_n}=\frac{\hat{P}_s}{\hat{P}_{tot}-\hat{P}_s}, \end{equation}

where \( \hat{P}_s=\left(\frac{1}{N}\sum^{N-1}_{i=0}|Re(Pc(i))|\right)^2 \) is the estimation of the signal power, \( \hat{P}_{tot}=\frac{1}{N}\sum^{N-1}_{i=0}|Pc(i)|^2 \) is the estimator of the total power, \( |\cdot| \) is the absolute value, \( Re(\cdot) \) stands for the real part of the value, and \( Pc(i) \) is the prompt correlator output for the sample index i.

The SNR value is converted to CN0 [dB-Hz], taking into account the coherent integration time, using the following formula:

\begin{equation} CN0_{dB}=10*log(\hat{\rho})-10*log(T_{int}), \end{equation}

where \( T_{int} \) is the coherent integration time, in seconds.

Ref: Marco Pini, Emanuela Falletti and Maurizio Fantino, "Performance Evaluation of C/N0 Estimators using a Real Time GNSS Software Receiver," IEEE 10th International Symposium on Spread Spectrum Techniques and Applications, pp.28-30, August 2008.

◆ CosBocCorrelationFunction()

template<int M = 1, int N = M>
double CosBocCorrelationFunction ( double offset_in_chips)

Definition at line 171 of file tracking_discriminators.h.

◆ dll_nc_e_minus_l_normalized()

double dll_nc_e_minus_l_normalized ( gr_complex early_s1,
gr_complex late_s1,
float spc = 0.5,
float slope = 1.0,
float y_intercept = 1.0 )

DLL Noncoherent Early minus Late envelope normalized discriminator.

DLL Noncoherent Early minus Late envelope normalized discriminator:

\begin{equation} error = \frac{y_{intercept} - \text{slope} * \epsilon}{\text{slope}} \frac{E-L}{E+L}, \end{equation}

where \(E=\sqrt{I_{ES}^2+Q_{ES}^2}\) is the Early correlator output absolute value and \(L=\sqrt{I_{LS}^2+Q_{LS}^2}\) is the Late correlator output absolute value. The output is in [chips].

◆ dll_nc_vemlp_normalized()

double dll_nc_vemlp_normalized ( gr_complex very_early_s1,
gr_complex early_s1,
gr_complex late_s1,
gr_complex very_late_s1 )

DLL Noncoherent Very Early Minus Late Power (VEMLP) normalized discriminator.

DLL Noncoherent Very Early Minus Late Power (VEMLP) normalized discriminator, using the outputs of four correlators, Very Early (VE), Early (E), Late (L) and Very Late (VL):

\begin{equation} error=\frac{E-L}{E+L}, \end{equation}

where \(E=\sqrt{I_{VE}^2+Q_{VE}^2+I_{E}^2+Q_{E}^2}\) and \(L=\sqrt{I_{VL}^2+Q_{VL}^2+I_{L}^2+Q_{L}^2}\) . The output is in [chips].

◆ fll_four_quadrant_atan()

double fll_four_quadrant_atan ( gr_complex prompt_s1,
gr_complex prompt_s2,
double t1,
double t2 )

brief FLL four quadrant arctan discriminator

FLL four quadrant arctan discriminator:

\begin{equation} \frac{\phi_2-\phi_1}{t_2-t1}=\frac{ATAN2(cross,dot)}{t_1-t_2}, \end{equation}

where \(cross=I_{PS1}Q_{PS2}-I_{PS2}Q_{PS1}\) and \(dot=I_{PS1}I_{PS2}+Q_{PS1}Q_{PS2}\), \(I_{PS1},Q_{PS1}\) are the inphase and quadrature prompt correlator outputs respectively at sample time \(t_1\), and \(I_{PS2},Q_{PS2}\) are the inphase and quadrature prompt correlator outputs respectively at sample time \(t_2\). The output is in [radians/second].

◆ GetYIntercept()

template<typename Fun>
double GetYIntercept ( Fun && f,
double x )

Definition at line 128 of file tracking_discriminators.h.

◆ GetYInterceptAbs()

template<typename Fun>
double GetYInterceptAbs ( Fun && f,
double x )

Definition at line 137 of file tracking_discriminators.h.

◆ phase_unwrap()

double phase_unwrap ( double phase_rad)

Phase unwrapping function, input is [rad].

◆ pll_cloop_two_quadrant_atan()

double pll_cloop_two_quadrant_atan ( gr_complex prompt_s1)

PLL Costas loop two quadrant arctan discriminator.

PLL Costas loop two quadrant arctan discriminator:

\begin{equation} \phi=ATAN\left(\frac{Q_{PS}}{I_{PS}}\right), \end{equation}

where \(I_{PS1},Q_{PS1}\) are the inphase and quadrature prompt correlator outputs respectively. The output is in [radians].

◆ pll_four_quadrant_atan()

double pll_four_quadrant_atan ( gr_complex prompt_s1)

PLL four quadrant arctan discriminator.

PLL four quadrant arctan discriminator:

\begin{equation} \phi=ATAN2(Q_{PS},I_{PS}), \end{equation}

where \(I_{PS1},Q_{PS1}\) are the inphase and quadrature prompt correlator outputs respectively. The output is in [radians].

◆ SinBocCorrelationFunction()

template<int M = 1, int N = M>
double SinBocCorrelationFunction ( double offset_in_chips)

Definition at line 150 of file tracking_discriminators.h.