Keywords

1 Introduction

In the present world, Global Positioning System (GPS) [1, 2] is widely used for positioning, navigation, and timing. GPS receiver location can be obtained as two-dimensional coordinates and also as three-dimensional coordinates by trilateration principle. To determine the position of the receiver, one must have to know the GPS satellite’s orbital position in space and distance between satellites to the receiver. The GPS receiver position can be calculated with the help of four or more satellites. In this paper, more than four satellites are considered in each epoch, and then, extended Kalman filter [2,3,4] is applied to estimate GPS receiver position [5] along with the receiver clock error. Section 2 covers GPS and its basic equations for finding receiver position. Section 3 covers all of extended Kalman filter. In Sect. 4, extended Kalman filter is applied to find the GPS receiver position. The paper ends with conclusions in the last section.

2 Global Positioning System

The Global Positioning System (GPS) is a real-time radio navigation system, which provides, 24 h a day, accurate GPS receiver position. GPS positioning tasks are satellite signal acquisition, tracking, and positioning. Satellite signal acquires approximated estimates of signal parameters. Tracking is to keep track of these parameters as they change over time. After tracking is done, GPS navigation data will be obtained and pseudoranges are calculated, and then, the receiver position can be computed. The GPS receiver position estimated with the help of four satellites is as shown in Fig. 1.

Fig. 1
figure 1

GPS receiver 3D-positioning using four satellites

More than four satellites can also be used to find a receiver position. The basic observed pseudorange equation is given by

$$ P_{r}^{obs} = \rho^{Gr} + c\left( {\Delta t^{sat} - \Delta t} \right) + \Delta_{ion} + \Delta_{trop} + \xi_{mr} $$
(1)

where \( \Delta t \) is the receiver clock offset, \( \Delta t^{sat} \) is the satellite clock offset, \( \Delta_{ion} \) is the delay imparted by ionosphere, \( \Delta_{trop} \) is the delay imparted by the troposphere, \( \xi_{mr} \) is the effects of multipath and receiver measurement noise, \( c \) is the velocity of light, and \( \rho^{Gr} \) is the geometric range between a particular satellite and receiver. From ephemeris data, position of the satellite \( (x^{sat} ,y^{sat} ,z^{sat} ) \) can be computed. \( \rho^{Gr} \) is the geometric range between satellite and receiver, given by

$$ \rho^{Gr} = \sqrt {(x^{sat} - x_{r} )^{2} + (y^{sat} - y_{r} )^{2} + (z^{sat} - z_{r} )^{2} } $$
(2)

where \( (x_{r} ,y_{r} ,z_{r} ) \) is the position of the receiver. Except the receiver clock error, remaining error terms in Eq. (1) are ignored for simplification. Therefore, Eq. (1) will be given as,

$$ P_{r}^{obs} = \sqrt {(x^{sat} - x_{r} )^{2} + (y^{sat} - y_{r} )^{2} + (z^{sat} - z_{r} )^{2} } + clk_{r} $$
(3)

where \( clk_{r} \) is the receiver clock error expressed in the distance (equal to \( - c.\Delta t \)). In Eq. (3), there are four unknown parameters \( x_{r} ,y_{r} ,z_{r} \), and \( clk_{r} \). To determine these unknown parameters, we need four range equations from four different satellites. Therefore,

$$ \begin{aligned} \mathop {P_{r}^{obs} }\nolimits_{1} & = \left( {\left( {x^{sat1} - x_{r} } \right)^{2} + \left( {y^{sat1} - y_{r} } \right)^{2} + \left( {z^{sat1} - z_{r} } \right)^{2} } \right)^{1/2} + clk_{r} \\ \mathop {P_{r}^{obs} }\nolimits_{2} & = \left( {\left( {x^{sat2} - x_{r} } \right)^{2} + \left( {y^{sat2} - y_{r} } \right)^{2} + \left( {z^{sat2} - z_{r} } \right)^{2} } \right)^{1/2} + clk_{r} \\ \mathop {P_{r}^{obs} }\nolimits_{3} & = \left( {\left( {x^{sat3} - x_{r} } \right)^{2} + \left( {y^{sat3} - y_{r} } \right)^{2} + \left( {z^{sat3} - z_{r} } \right)^{2} } \right)^{1/2} + clk_{r} \\ \mathop {P_{r}^{obs} }\nolimits_{4} & = \left( {\left( {x^{sat4} - x_{r} } \right)^{2} + \left( {y^{sat4} - y_{r} } \right)^{2} + \left( {z^{sat4} - z_{r} } \right)^{2} } \right)^{1/2} + clk_{r} \\ \end{aligned} $$
(4)

Above equations are nonlinear simultaneous equations. To get four unknown parameters, first linearize the nonlinear Eq. (3) and then solve. Differentiating Eq. (3) results

$$ \Omega P_{r}^{obs} = \frac{{ - (x^{sat} - x^{r} )\Omega x_{r} - (y^{sat} - y^{r} )\Omega y_{r} - (z^{sat} - z^{r} )\Omega z_{r} }}{{\sqrt {(x^{sat} - x_{r} )^{2} + (y^{sat} - y_{r} )^{2} + (z^{sat} - z_{r} )^{2} } }} +\Omega clk_{r} $$
(5)

Consider \( \Omega x_{r} \), \( \Omega {\text{y}}_{\text{r}} \), \( \Omega z_{r} \), and \( \varOmega clk_{r} \) as the unknown parameters in the above equation. \( x_{r} ,y_{r} ,z_{r} \), and \( clk_{r} \) are treated as known values by taking some initial values for these quantities. These initial values are substituted in Eq. (5) which yields the solution for \( \Omega x_{r} \), \( \Omega y_{r} \), \( \Omega z_{r} \), and \( \Omega clk_{r} \). These are used to update the initial \( x_{r} ,y_{r} ,z_{r} \), and \( clk_{r} \) to find another new set of solutions for \( \Omega x_{r} \), \( \Omega y_{r} \), \( \Omega z_{r} \), and \( \Omega clk_{r} \). This new set is used again to update \( x_{r} ,y_{r} ,z_{r} \), and \( clk_{r} \). This recursive process continues until the values of the parameters \( \Omega x_{r} \), \( \Omega y_{r} \), \( \Omega z_{r} \), and \( \Omega clk_{r} \) are small and within a certain predefined limit. The desired solution is obtained when the parameters \( \Omega x_{r} \), \( \Omega y_{r} \), \( \Omega z_{r} \), and \( \Omega clk_{r} \) reached this predefined limit. Then, the final GPS receiver coordinates are \( x_{r} ,y_{r} ,z_{r} \), and \( clk_{r} \). This is an iteration method. In this paper, more than four satellites are considered for GPS receiver position calculation even though four satellites are enough. For example, if we consider nine satellites for GPS receiver position estimation, then Eq. (5) can be composed as a

Matrix form, which is expressed as

$$ \left[ {\begin{array}{*{20}c} {\Omega \mathop {P_{r}^{obs} }\nolimits_{1} } \\ \vdots \\ {\Omega \mathop {P_{r}^{obs} }\nolimits_{9} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\xi_{11} } & {\xi_{12} } & {\xi_{13} } & 1 \\ \vdots & \vdots & \vdots & \vdots \\ {\xi_{91} } & {\xi_{92} } & {\xi_{93} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\Omega x_{r} } \\ {\Omega y_{r} } \\ {\Omega z_{r} } \\ {\Omega clk_{r} } \\ \end{array} } \right] $$
(6)

where the elements \( \xi_{i1} \), \( \xi_{i2} \), and \( \xi_{i3} \) are given by

$$ \xi_{i1} = - \tfrac{{(x^{sat} - x_{r} )}}{{P_{r}^{obs} - clk_{r} }},\xi_{i2} = - \tfrac{{(y^{sat} - y_{r} )}}{{P_{r}^{obs} - clk_{r} }},\xi_{i3} = - \tfrac{{(z^{sat} - z_{r} )}}{{P_{r}^{obs} - clk_{r} }} $$
(7)

3 Extended Kalman Filter

The extended Kalman filter (EKF) [2,3,4, 6,7,8] is the nonlinear genre of the Kalman filter [9, 10] which linearizes about an estimate of the current mean and covariance. The state transition and observation models for the extended Kalman filter are taken as

$$ \chi_{t} = f\left( {\chi_{t - 1} } \right) + \omega_{t - 1} $$
(8)
$$ z_{t} = h(\chi_{t} ) + \upsilon_{t} $$
(9)

where \( \omega_{t - 1} \) is the process noise with zero mean and covariance \( Q_{t} \), and \( \upsilon_{t} \, \) is the observation noise with zero mean and covariance \( R_{t} \).

The functions \( f\left( {\chi_{t - 1} } \right) \) and \( h(\chi_{t} ) \) are used to compute the predicted state from the previous estimate and predicted measurement from the predicted state, respectively. Instead of applying \( f\left( {\chi_{t - 1} } \right) \) and \( h(\chi_{t} ) \) to the covariance directly, a Jacobian matrix is applied which is evaluated with current predicted states at each time step. This process essentially linearizes the nonlinear function around the current estimate. Discrete-time extended Kalman filter’s prediction (time update) and correction (measurement update) equations are given by,

Prediction (time update):

  1. i.

    Predicted state estimate

    $$ \hat{\chi }_{{t\left| {t - 1} \right.}} = f\left( {\hat{\chi }_{{t - 1\left| {t - 1} \right.}} } \right) $$
    (10)
  2. ii.

    Predicted covariance estimate

    $$ P_{{t\left| {t - 1} \right.}} = F_{t - 1} P_{{t - 1\left| {t - 1} \right.}} F_{t - 1}^{T} + Q_{t - 1} $$
    (11)

Correction (measurement update):

  1. i.

    Kalman gain

    $$ K_{t} = P_{{t\left| {t - 1} \right.}} H_{t}^{T} (H_{t} P_{{t\left| {t - 1} \right.}} H_{t}^{T} + R_{t} )^{ - 1} $$
    (12)
  2. ii.

    Updated state estimate

    $$ \hat{\chi }_{t\left| t \right.} = \hat{\chi }_{{t\left| {t - 1} \right.}} + K_{t} \left( {z_{t} - h\left( {\hat{\chi }_{{t\left| {t - 1} \right.}} } \right)} \right) $$
    (13)
  3. iii.

    Updated covariance estimate

    $$ P_{t\left| t \right.} = \left( {I - K_{t} H_{t} } \right)P_{t\left| t \right. - 1} $$
    (14)

Where the Jacobian for state transition and observation matrices are defined as

$$ F_{t - 1} = \left. {\frac{\partial f}{\partial \chi }} \right|_{{\hat{\chi }_{{t - 1\left| {t - 1} \right.}} }} $$
(15)
$$ H_{t} = \left. {\frac{\partial h}{\partial \chi }} \right|_{{\hat{\chi }_{{t\left| {t - 1} \right.}} }} $$
(16)

The Jacobian \( H_{t} \) is taken from Eqs. (6) and (7) as

$$ H_{t} = \left[ {\begin{array}{*{20}c} {\xi_{11} } & {\xi_{12} } & {\xi_{13} } & 1 \\ \vdots & \vdots & \vdots & \vdots \\ {\xi_{91} } & {\xi_{92} } & {\xi_{93} } & 1 \\ \end{array} } \right] $$
(17)

The above method is extended Kalman filter (EKF) of first order. Higher-order EKFs can be composed by retaining more terms of the Taylor series expansions.

4 Results and Discussion

Real-time GPS data, recorded for 24 h, has been taken, at the Department of Electronics and Communication Engineering, Andhra University, Visakhapatnam (latitude 17.73° N/longitude 83.31° E), from a dual-frequency GPS receiver. In each epoch, data include more than four different satellites’ position and the pseudorange between satellites to GPS receiver. In this paper, extended Kalman filter is applied to this data. Assume that initial receiver position coordinates are (0 0 0). The resultant GPS receiver position coordinates obtained, from the filtering operation, are compared with the original GPS receiver position coordinates to show how much they are close to the original position. This shows the accuracy provided by the application of extended Kalman filter. These results are presented in Table 1.

Table 1 Position error estimation

In Table 1, x-position error (Xe), y-position error (Ye), z-position error (Ze) in meters, and receiver clock error (Rclk) in nanosecond (10−9) are presented. From the results in Table 1, it is observed that error in coordinates and receiver clock error are slightly varied for every 2 h due to neglecting other error sources in GPS pseudorange expression. The mean values of x-position error, y-position error, and z-position error for 24 h data are 48.47 m, 100.63 m, and 34.6 m, respectively. These mean values are the error in three-dimensional coordinates while comparing with the original GPS receiver position coordinates. The mean value of receiver clock error estimated is 100 ns, due to neglecting ionosphere, troposphere, and multipath errors.

In Table 2, x-position variance, y-position variance, z-position variance, and receiver clock variance in distance, i.e.,\( \sigma_{x}^{2} \), \( \sigma_{y}^{2} \), \( \sigma_{z}^{2} \), and \( \sigma_{clk}^{2} \) respectively, are presented. From Table 2, variances obtained are very low which ensures the deviations are low from its mean values. From Tables 1 and 2 results, it is observed that extended Kalman filter provides good accuracy for estimating GPS receiver position.

Table 2 Variance estimation

5 Conclusions

Extended Kalman filter approximates nonlinear function. Here, linearizing the nonlinear functions helps to use linear Kalman filter for the estimation of GPS receiver position with good accuracy. For GPS receiver position estimation, extended Kalman filter provides less variance and good accuracy in position estimation and also provides receiver clock error of 100 ns; it is because of neglecting other sources which influences the clock error. However, the mean values for the error in GPS receiver position while comparing with the original GPS receiver position coordinates are 48.47 m, 100.63 m, and 34.6 m, respectively. Therefore, extended Kalman filter is better algorithm for GPS receiver position estimation and also for nonlinear type of estimation problems.