Classes | |
struct | cn0_est_state_t |
struct | correlation_t |
Modules | |
Tracking Loops | |
Functions | |
void | calc_navigation_measurement (u8 n_channels, channel_measurement_t meas[], navigation_measurement_t nav_meas[], double nav_time, ephemeris_t ephemerides[]) |
void | calc_navigation_measurement_ (u8 n_channels, channel_measurement_t *meas[], navigation_measurement_t *nav_meas[], double nav_time, ephemeris_t *ephemerides[]) |
float | cn0_est (cn0_est_state_t *s, float I) |
void | cn0_est_init (cn0_est_state_t *s, float bw, float cn0_0, float cutoff_freq, float loop_freq) |
int | nav_meas_cmp (const void *a, const void *b) |
u8 | tdcp_doppler (u8 n_new, navigation_measurement_t *m_new, u8 n_old, navigation_measurement_t *m_old, navigation_measurement_t *m_corrected) |
Functions used in tracking.
void calc_navigation_measurement | ( | u8 | n_channels, |
channel_measurement_t | meas[], | ||
navigation_measurement_t | nav_meas[], | ||
double | nav_time, | ||
ephemeris_t | ephemerides[] | ||
) |
void calc_navigation_measurement_ | ( | u8 | n_channels, |
channel_measurement_t * | meas[], | ||
navigation_measurement_t * | nav_meas[], | ||
double | nav_time, | ||
ephemeris_t * | ephemerides[] | ||
) |
float cn0_est | ( | cn0_est_state_t * | s, |
float | I | ||
) |
Estimate the Carrier-to-Noise Density, of a tracked signal.
Implements a modification of the estimator presented in [1]. In [1] the estimator essentially uses a moving average over the reciprocal of the Signal-to-Noise Ratio (SNR). To reduce memory utilisation a simple IIR low-pass filter is used instead.
The noise and signal powers estimates for the -th observation, and , are calculated as follows:
Where is the in-phase output of the prompt correlator for the -th integration period.
The "Noise-to-Signal Ratio" (NSR) is estimated and filtered with a simple low-pass IIR filter:
Where the IIR filter coefficient, can be calculated in terms of a cutoff frequency and the loop update frequency .
The filtered NSR value is converted to a value and returned.
References:
s | The estimator state struct to initialise. |
I | The prompt in-phase correlation from the tracking correlators. |
void cn0_est_init | ( | cn0_est_state_t * | s, |
float | bw, | ||
float | cn0_0, | ||
float | cutoff_freq, | ||
float | loop_freq | ||
) |
Initialise the estimator state.
See cn0_est() for a full description.
s | The estimator state struct to initialise. |
bw | The loop noise bandwidth in Hz. |
cn0_0 | The initial value of in dBHz. |
cutoff_freq | The low-pass filter cutoff frequency, , in Hz. |
loop_freq | The loop update frequency, , in Hz. |
int nav_meas_cmp | ( | const void * | a, |
const void * | b | ||
) |
u8 tdcp_doppler | ( | u8 | n_new, |
navigation_measurement_t * | m_new, | ||
u8 | n_old, | ||
navigation_measurement_t * | m_old, | ||
navigation_measurement_t * | m_corrected | ||
) |
Set measurement precise Doppler using time difference of carrier phase.
n_new | Number of measurements in `m_new` m_new Array of new navigation measurements |
n_old | Number of measurements in `m_old` m_new Array of old navigation measurements, sorted by PRN |
m_tdcp | Array in which to store the output measurements |