Kalman Filter Based GPS Signal Tracking!!

Shashank Joisa
Viithiisys
Published in
3 min readDec 14, 2017

GNSS (Global Navigation Satellite System) is a satellite system that is used to pinpoint the geographic location of a user’s receiver anywhere in the world.

One of the software which is used to implement this is GNSS-SDR which stands for Global Navigation Satellite System-Software Defined Radio.

In this project an algorithm is implemented for incorporating constant gain Kalman Filters in tracking of GPS signals.

Why this is been done?

  1. To filter out random noise

2. To improve high dynamics

3. To reduce shadowing problem

Traditional Methods

In most of the existing receivers PLL(Phase Locked Loops) are being used to track the frequency of the incoming signal that is related to Doppler frequency. The PLL tracks the phase of the incoming signals with the locally generated code. This process occurs when a carrier Numerically Controlled Oscillator (NCO) mixes a reference frequency with the incoming signal. If the frequencies are identical, then the carrier frequency goes to baseband. This could also be called “Carrier Removal” since the actual carrier frequency is removed. Once the frequencies are identical all that is left to match are the phases of the signals.

Due to insufficient filtering by traditional techniques like PLL and DLL, there is rising need of more efficient method.

Kalman Filter

Kalman filter is an optimal estimator, i.e. infers parameters of interest from indirect, inaccurate and uncertain observations. The filter uses a Gaussian approximation and minimizes the mean square error of the estimated parameters and only propagates the mean and covariance of the predictive and posterior distributions. The underlying model is a Bayesian model similar to hidden Markov model. The Kalman filter algorithm is what used for the tracking purpose in this program instead of a traditional PLL carrier discriminator filter.

The purpose of filtering is to extract the required information from a signal, ignoring everything else. The general state-space model is given as

Before starting with algorithm let us define the state variables used in it:

This project makes the use of linear KF which does not evaluate the non-linear observation equation, Hk and has the discriminator as phase detector.

*********Code**********

double kal_gain[3][1] = {{1.121817},{7.533759},{232.944295}}; //column matrix

//Measurement prediction

error[k][0] = carr_nco — pred[0][k]; //error = y_k — y_k-1

**********Code**********

The results obtained were pretty good.

Signal tracking in GNSS-SDR using Kalman filter
Kalman filter based tracking results

From the plot it is inferred that Kalman filter has filtered more error signals than PLL. So, there is reduction in the noise variance of the output of phase discriminator. This shows that Kalman filter based tracking blocks are robust and give much more precise values of coordinates then the traditional filters.

For any feedback: shjoisa1996@gmail.com

If you have any queries related to this project you can comment below.

--

--