1 Introduction

Once upon a time when there were no sign of today’s technology, primitive men used constellations for their positioning and navigation. Then it was compass’s turn until now when different global navigation systems like Global Positioning System (GPS) conduct the responsibility for navigation and positioning. In addition to GPS which is designed by the USA Department Of Defense (DOD), other navigation systems like the Russian GLONASS, the Chinese Beidou Satellite Navigation System, GALILEO, etc. are designed over the past years.

GPS has many uses in different industries and its receivers are produced in various prices and accuracies. There are two types of single-frequency and dual-frequency receivers in which the former uses only one carrier band while the latter is able to use a second one, too.

GPS is a one-way measurement system; i.e. the satellite is just a signal sender. GPS satellites send two signals: (1) L1 signal with Coarse/Acquisition code (C/A code) and (2) L2 signal with Precise code (P code). L1 and L2 signals propagate at 1575.42 and 1227.60 MHz, respectively. L1 carrier signal has a 19 cm wavelength and L2 a 25 cm one. The number of carrier wavelengths from receiver to satellite is called integer. L1 signal with C/A code is used for standard positioning, but L1 and L2 with the P code are used for precise positioning [1, 2].

At present the only way of positioning a kinematic receiver in real-time with centimeter-level positioning accuracy is by differential mode that is a relative positioning of two receivers [3, 4]. To achieve a higher accuracy in positioning with GPS, many researches have been done on differential GPS and hybrid systems [58]. In some other research efforts too, it has been tried to combine GPS with other navigation systems to attain a higher accuracy [911].

Dual-frequency receivers, which are able to receive both L1 and L2 carrier waves, in comparison with single-frequency receivers, which are not able to receive L2 carrier wave, acquire a higher accuracy however they are more expensive than the others. By using single-frequency receivers and optimizing accuracy, we will try to make a balance between price and efficiency.

GPS receivers according to the type of received data and waves can be classified to some categories. In this research, two types of receivers will be discussed: (1) C/A code receivers and (2) C/A code receivers + L1 carrier wave.

Due to deviations in positioning data, it is mandatory to filter positioning data. Kalman Filter (KF) will be used for this purpose. KF was created by Kalman in 1960 [12]; a recursive-based filter which estimates the state of a dynamic system from a sequence of incomplete and corrupted evaluations. In this filter according to measurements an accurate estimation from the system states is obtained. To make an accurate estimation from the distribution, KF uses only the mean and distribution covariance. While in general to compute a probability distribution, we need many distribution parameters. Even in case that there were such a probability the other problematic matter is the huge amount of data to be used which imposes a high load of computation to the estimation process.

KF, which is an important concept in control theory and control system engineering, is used in a wide range of engineering functions from radar to computer optic. This filter has a crucial role in the development of GPS. It is also used in noise modeling optimization [13].

System’s estimated state and estimation variance are kept by KF. KF is a mathematical method which aims to use observed measurements through time (including noise or random changes and the other inaccuracies) in order to produce some quantities which are more inclined to the real measurements and related computed values.

Positioning in GPS receivers are based on two types of pseudo-range and carrier phase measurements. Code tracking with low accuracy, which is based on pseudo-range, makes unambiguous pseudo-ranges. Carrier phase has a better accuracy than pseudo-range method, but its main problem is that it is an indirect measurement. It also gets limited with integer ambiguity.

In this paper, positioning in single-frequency GPS receivers using KF with pseudo-range and carrier phase data and the corporation of pseudo-range capability and carrier phase in single-frequency GPS receivers will be discussed. This corporation makes a substitute for the pure pseudo-range observations and provides a high level of positioning accuracy.

Many researches have been done in this regard each of which has their own advantages and disadvantages. Our objective in this paper is to reach an acceptable positioning accuracy in high velocities (for example 3000 meter/second velocities) while keeping the simplicity of the filter and relations by using cheap single frequency receivers without using relative positioning (second receiver), at the same time by combining the data their benefits will be used simultaneously. As it is shown in the paper different methods have been compared with combined method and their efficiencies in high velocities have been analyzed.

Advantages of the proposed KF in our paper are that they are simple, low cost, and easy to design. They have the structure complexity less than for hardware implementation. They also require less memory than for software implementation.

2 Basic Measurements

2.1 Calculation of the Range Between Satellite and Receiver

To know the distance from the satellite is the main step in GPS. The main idea of it comes from the equation of light speed in delay time. GPS receiver measures the period of time in which it takes for the radio waves to reach the receiver from the satellite. As it is known, radio waves move with the light speed. Therefore, the receiver can compute its distance to the satellite by multiplying the measured time to the light speed. Then to measure the signal’s arrival time, we are dealing with very short periods of time, since the signals with light speed move very fast. There is a time gap between created GPS copy code in the receiver and the original received code from the satellite which by multiplying it to the light speed, pseudo-range can be achieved. This method with both C/A and P methods is feasible. Produced codes in the receiver result from the receiver’s clock and the satellite’s sent codes are made by the satellite.

Time error in both receiver and satellite clocks causes that measured range vary from the geometric range between the satellite and receiver. These clocks are very precise and expensive. Satellites to obtain more reliability level have got four atomic clocks. As they are very expensive, they cannot be used in receivers. As a result cheaper clocks are used which make slight differences in time measurement. However, because this difference symmetrically affects all the measurements, its effect in the computation can be assumed negligible. With some specific solutions, necessary corrections are carried though. The receiver computes its distance to the satellite with the existing error in its clock. Distances computed this way include many but coordinate errors; that is the error has the same effect on every four measurement. Therefore, these unreal but useful distances are called pseudo-range. Since positions of the satellites are precise, the error caused by pseudo-range can be computed with at least four equations. When the error is computed, position parameters can be determined and receiver clock can be corrected [14].

2.2 Pseudo-Range Measurement

If data transfer time from j-th satellite is \(t^{j}\), data production time in receiver is \(t_i\), and satellite and receiver’s clock errors are respectively \(\delta t^{j}\) and \(\delta t_i\), then pseudo-range \(\rho _i^j\) is obtained from Eq. (1):

$$\begin{aligned} \rho _i^j =\left( \Big (t_i +\delta t_i\Big )-\left( t^{j}+\delta t^{j}\right) \right) c+ \varepsilon _\rho =\left( t_i -t^{j}\right) c+\left( \delta t_i -\delta t^{j}\right) c+\varepsilon _\rho \end{aligned}$$
(1)

where \(\varepsilon _\rho \) is non-modeling errors. Ionosphere and troposphere delays \((I_\rho , T_\rho )\) are raised, because their propagation speed is not always equal to \(c\). Multi-path and satellite orbital errors for each satellite are analyzed in Eq. (2):

$$\begin{aligned} P_i^j =\rho +\delta t_i c-\delta t^{j}c+T_\rho +I_\rho +M_\rho +\varepsilon ^{j} \end{aligned}$$
(2)

Satellite orbital errors \(\varepsilon ^{j}\) are sent in navigation messages, but multi-path errors \(M_\rho \) depend on the receiver position. Pseudo-range equation without considering this error is computed in Eq. (3):

$$\begin{aligned} P_i^j =\rho +\delta t_i c-\delta t^{j}c+T_\rho +I_\rho \end{aligned}$$
(3)

where \(\rho \) is receiver’s precise range in ideal situation. If \(X_i =(x_i,y_i,z_i)\) is receiver’s position and \(X^{j}=(x^{j},y^{j},z^{j})\) is j-th satellite position for each \(j=1, 2, \ldots , J\), then \(\rho \) in Eq. (3) is computed like Eq. (4):

$$\begin{aligned} \rho ^{j}=\sqrt{(x^{j}-x_i)^{2}+(y^{j}-y_i)^{2}+(z^{j}-z_i)^{2}} \end{aligned}$$
(4)

2.3 Carrier Phase Measurement

The measurement which is more accurate than code is the received carrier phase from a satellite. Carrier phase measurement is the difference between produced carrier phase in receiver and received carrier from a satellite in a particular moment. Received signal phase in each moment is in accordance with the phase in the transfer time. Carrier phase measurement will be fixed in a fraction of cycle and the range between satellite and receiver equals some numbers of whole cycles plus a fraction of the measured cycle.

The number of whole cycles, which is shown in carrier phase equation by \(N_i^j\) without considering errors, may change through time however this change is unknown for us. In case there are no clock and measurement errors, \(\phi _i^j\) carrier phase in cycle unit is like:

$$\begin{aligned} \phi _i^j (t)=\phi _i (t)-\phi ^j (t-\tau )+N_i^j \end{aligned}$$
(5)

where \(\phi _i (t)\) is carrier phase of produced code in receiver at the time \(t\) and \(\phi ^j (t-\tau )\) is received carrier phase from a satellite at the time \((t-\tau )\). So carrier phase based on meter \(\left( \Phi _i^j\right) \) can be expressed as the following:

$$\begin{aligned} \lambda \phi _i^j (t)=\lambda \phi _i (t)-\lambda \phi ^j (t-\tau )+\lambda N_i^j \Rightarrow \Phi _i^j =\rho +\delta t_i c-\delta t^{j}c+\lambda N_i^j \end{aligned}$$
(6)

Carrier phase equation based on meter which includes all the error sources is like Eq. (7):

$$\begin{aligned} \Phi _i^j =\rho +\delta t_i c-\delta t^{j}c+T_\rho -I_\rho +M_\rho +\lambda N_i^j +\varepsilon _\phi \end{aligned}$$
(7)

where \(\rho \) is the range between receiver and satellite, \(N_i^j\) is integer ambiguity and \(\lambda \) is carrier signal wavelength (L1 wavelength equals 19 cm and L2 wavelength equals 24 cm).

3 Position Determination Using Kalman Filter

3.1 Kalman Filter Equations

In the following, we will discuss position determination by KF using pseudo-range data, carrier phase and the combination of pseudo-range and carrier phase. First, an introduction to KF is presented. The KF has been documented clearly [1518]. KF is an optimal estimator which shows an optimal estimation of the system state by using the state space concept and system error model. One of the main features of KF is its recursive calculations where by saving the latest calculations occupies a small volume of memory and updates the previous calculations with the new data. In order to explain KF’s recursive relations, let’s start with state and measurement equations. State equation in KF is as the following [19, 20]:

$$\begin{aligned} X_{k+1} = \phi _k X_k +W_k \end{aligned}$$
(8)

where \(X_k\) is process state vector at the time \(t_k, X_{k+1}\) is process state vector at the time \(t_{k+1}, \phi _k\) defines state transition matrix from \(X_k\) to \(X_{k+1}\) and \(W_k\) defines process error vector (a white sequence with a defined covariance function is presumed). Measurement equation in KF is as the following:

$$\begin{aligned} Z_k =H_k X_k +V_k \end{aligned}$$
(9)

where \(Z_k\) defines measurement vector at time \(t_k, H_k\) is a matrix which defines ideal relation (noiseless) between measurement vector and state vector at \(t_k, V_k\) defines measurement error vector (it is presumed as a white sequence with a defined covariance and zero correlation with \(W_k\) sequence). Covariance matrix for \(W_k\) and \(V_k\) vectors are defined with the following equations:

$$\begin{aligned} E[W_k W_i^T ]&= \left\{ {\begin{array}{l@{\quad }l} Q_k ;&{} i=k \\ 0 ;&{} i\ne k \\ \end{array}}\right. \end{aligned}$$
(10)
$$\begin{aligned} E[V_k V_i^T]&= \left\{ {\begin{array}{l@{\quad }l} R_k ;&{} i=k \\ 0 ;&{} i\ne k \\ \end{array}}\right. \end{aligned}$$
(11)
$$\begin{aligned} E[W_k V_i^T ]&= 0;\quad \mathrm{for\,all}\,i\,\mathrm{and}\,k \end{aligned}$$
(12)

The summary of KF algorithm is as the following:

Step 1

Kalman gain computation: KF gain is computed as the following:

$$\begin{aligned} K_k = P_k^- H_k^T (H_k P_k^- H_k^T +R_k)^{-1} \end{aligned}$$
(13)

where \(P_k^-\), which is known for us, defines error covariance matrix corresponding with optimal estimation of system state vector.

Step 2

Updated estimation with measurement vector \(Z_k\): Updated estimation with measurement vector \(Z_k\) is done as the following:

$$\begin{aligned} \mathop {X_k}\limits ^\wedge ={\mathop {X}\limits ^\wedge } \mathop {k}\limits ^- +K_k (Z_k -H_k {\mathop {X}\limits ^\wedge } \mathop {k}\limits ^-) \end{aligned}$$
(14)

Step 3

Error covariance computation for updating the estimation: Error covariance matrix corresponding with optimal estimation is computed as the following:

$$\begin{aligned} P_k =(I-K_k H_k)P_k^- \end{aligned}$$
(15)

Step 4

A propagation step forward: Finally optimal estimation of state and covariance matrix for the next time step is calculated as the following:

$$\begin{aligned} {\mathop {X}\limits ^\wedge }{{\mathop {k}\limits ^{-}}+1}&= \phi _k \mathop X\limits ^\wedge k\end{aligned}$$
(16)
$$\begin{aligned} P_{k+1}^-&= \phi _k P_k \phi _k^T +Q_k \end{aligned}$$
(17)

Matrix Eqs. (13)–(17) define Kalman recursive equations.

3.2 Receiver’s Position Estimation Using KF with Pseudo-Range Data

KF parameters’ definition varies according to its function. To calculate KF, if receiver’s position \((\delta x_k, \delta y_k, \delta z_k)\), velocity \((\delta \dot{x}_k, \delta \dot{y}_k, \delta \dot{z}_k)\) and bias changes \((\delta t_k, \delta \dot{t}_{k1})\) are used, state vector \(X\) will be of eight elements where its relation with state transition matrix \(\phi \) in Eq. (18) is shown with constant velocity for the receiver.

$$\begin{aligned} \left[ {\begin{array}{l} \delta x_{k+1} \\ \delta y_{k+1} \\ \delta z_{k+1} \\ \delta \dot{x}_{k+1} \\ \delta \dot{y}_{k+1} \\ \delta \dot{z}_{k+1} \\ \delta t_{k+1} \\ \delta \dot{t}_{k+1} \\ \end{array}}\right] = \left[ {{\begin{array}{l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l} 1&{} 0&{} 0&{} {\Delta T}&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 1&{} 0&{} 0&{} {\Delta T}&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 1&{} 0&{} 0&{} {\Delta T}&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 1&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 1&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 0&{} 1&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 1&{} {\Delta T} \\ 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 1 \\ \end{array}}}\right] \left[ {\begin{array}{l} \delta x_k \\ \delta y_k \\ \delta z_k \\ \delta \dot{x}_k \\ \delta \dot{y}_k \\ \delta \dot{z}_k \\ \delta t_k \\ \delta \dot{t}_k \\ \end{array}}\right] \end{aligned}$$
(18)

where \(\left[ \begin{array}{llllllll} {\delta x_{k+1}}&{} {\delta y_{k+1}} &{} {\delta z_{k+1}} &{} {\delta \dot{x}_{k+1}}&{} {\delta \dot{y}_{k+1}}&{} {\delta \dot{z}_{k+1}} &{} {\delta t_{k+1}} &{} {\delta \dot{t}_{k+1}}\\ \end{array}\right] ^T\) is error state vector at epoch (k+1) and \(\Delta T=1\). State vector is according to the position and velocity errors of the receiver, clock bias and bias changes. Error state vector is estimated in measurement periods. Then the estimated error state vector is added to the estimated quantities of the receiver’s position, clock bias and bias changes according to the Eq. (19) and for the next step, it is returned to zero.

$$\begin{aligned} \left[ {\begin{array}{l} \hat{{x}}_k^+ \\ \hat{{y}}_k^+ \\ \hat{{z}}_k^+ \\ \hat{{t}}_k^+ \\ \hat{{\dot{t}}}_k^-\\ \end{array}}\right] =\left[ {\begin{array}{l} \hat{{x}}_k^- +\delta x_k^+ \\ \hat{{y}}_k^- +\delta y_k^+ \\ \hat{{z}}_k^- +\delta z_k^+ \\ \hat{{t}}_k^- +\delta t_k^+ \\ \hat{{\dot{t}}}_k^- +\delta \dot{t}_k^+ \\ \end{array}}\right] \end{aligned}$$
(19)

In each step of measurement, state vector estimation is applied for linearization of shown observation matrix in Eq. (20).

$$\begin{aligned} H=\left[ {{\begin{array}{l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l} {a_{x,1}}&{} {a_{\dot{x},1}}&{} {a_{y,1}}&{} {a_{\dot{y},1}}&{} {a_{z,1}}&{} {a_{\dot{z},1}}&{} 1&{} 0 \\ {a_{x,2}}&{} {a_{\dot{x},2}}&{} {a_{y,2}}&{} {a_{\dot{y},2}}&{} {a_{z,2}}&{} {a_{\dot{z},2}}&{} 1&{} 0 \\ \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots &{} \vdots \\ {a_{x,i}}&{} {a_{\dot{x},i}}&{} {a_{y,i}}&{} {a_{\dot{y},i}}&{} {a_{z,i}}&{} {a_{\dot{z},i}}&{} 1&{} 0 \\ \end{array}}}\right] \end{aligned}$$
(20)

In Eq. (20), \(a_{x,i}, a_{y,i}\) and \(a_{z,i}\) define the range between i-th satellite and receiver, and \(a_{\dot{x},i}, a_{\dot{y},i}\) and \(a_{\dot{z},i}\) define range changes velocity of i-th satellite to receiver. Covariance matrix \(P\) is initialized as an \(8\times 8\) diagonal matrix with large diagonal elements and zero non-diagonal elements. Therefore, the position and the velocity error states can be assumed to have initial variances of \((100m)^{2}\) and \((100\frac{m}{s})^{2}\), respectively.

Measurement vector \(Z\) is the difference between the received observed pseudo-range vector from satellites and estimated pseudo-range according to the estimation of receiver’s position \((\hat{{x}}_k^-, \hat{{y}}_k^-, \hat{{z}}_k^-)\) and clock bias \(\hat{{t}}_k^-\) which is shown in Eq. (21):

$$\begin{aligned} \hat{{\rho }}_i =\sqrt{(\hat{{x}}_i -\hat{{x}}_k^-)^{2}+(\hat{{y}}_i -\hat{{y}}_k^-)^{2}+(\hat{{z}}_i -\hat{{z}}_k^-)^{2}}+c\hat{{t}}_k^- \end{aligned}$$
(21)

Measurement covariance matrix \(R\) is a diagonal matrix with zero non-diagonal elements. The quantity of elements on original diameter depends separately on pseudo-range measurement variance of each satellite \((\delta _{\rho _1}^2, \delta _{\rho _2}^2, \ldots , \delta _{\rho _i}^2)\) which is shown in Eq. (22):

$$\begin{aligned} R=\left[ {{\begin{array}{l@{\quad }l@{\quad }l@{\quad }l} {\delta _{\rho _1}^2}&{} 0&{} \cdots &{} 0 \\ 0&{} {\delta _{\rho _2}^2}&{} &{} \vdots \\ \vdots &{} &{} \ddots &{} 0 \\ 0&{} \cdots &{} 0&{} {\delta _{\rho _i}^2} \\ \end{array}}}\right] \end{aligned}$$
(22)

\(Q\) is the process noise covariance matrix which describes uncertainty in dynamic model. The goal of process noise covariance matrix is to define unknown parameters in time. White noise, random walk, and autocorrelation function are the three models which are usually used in data processing of GPS.

Elements of \(Q\) process noise covariance matrix are used to estimate un-modeled velocity variance and un-modeled clock variance besides preventing filter from falling asleep. These elements are not dependent on position. \(Q\) matrix equation is defined as Eq. (23):

$$\begin{aligned} Q=\left[ {{\begin{array}{l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l} {S_p \frac{\Delta t^{3}}{3}}&{} {S_p \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0 \\ {S_p \frac{\Delta t^{2}}{2}}&{} {S_p \Delta t}&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} {S_p \frac{\Delta t^{3}}{3}}&{} {S_p \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} {S_p \frac{\Delta t^{2}}{2}}&{} {S_p \Delta t}&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} {S_p \frac{\Delta t^{3}}{3}}&{} {S_p \frac{\Delta t^{2}}{2}}&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} {S_p \frac{\Delta t^{2}}{2}}&{} {S_p \Delta t}&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} {S_f \Delta t+S_g \frac{\Delta t^{3}}{2}}&{} {S_g \frac{\Delta t^{2}}{2}} \\ 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} {S_g \frac{\Delta t^{2}}{2}}&{} {S_g \Delta t} \\ \end{array}}}\right] _{8\times 8} \end{aligned}$$
(23)

3.3 Receiver’s Position Estimation Using KF with Single-Difference of Pseudo-Range Data

In this method to compute receiver’s position, previous receiver’s position and velocity in KF are used. State vector \(X\) will be of nine elements which are defined in Eq. (24):

$$\begin{aligned} X=[P_1 ,V,P_0] \end{aligned}$$
(24)

where \(P_1 =[x,y,z]\) and \(P_0 =[x,y,z]\) are the current and previous position error vectors, respectively, and the current velocity error vector is \(V=[V_x, V_y, V_z]\). The KF must be modified to transfer the \(P_1\) elements to the \(P_0\) in the state vector. The modified transition matrix \(\Phi \) is defined as Eq. (25):

$$\begin{aligned} \Phi = \left[ {{\begin{array}{l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l} 1&{} 0&{} 0&{} {\Delta t}&{} 0&{} 0&{} 1&{} 0&{} 0 \\ 0&{} 1&{} 0&{} 0&{} {\Delta t}&{} 0&{} 0&{} 1&{} 0 \\ 0&{} 0&{} 1&{} 0&{} 0&{} {\Delta t}&{} 0&{} 0&{} 1 \\ 0&{} 0&{} 0&{} 1&{} 0&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 1&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 0&{} 0&{} 1&{} 0&{} 0&{} 0 \\ 1&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 1&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} 1&{} 0&{} 0&{} 0&{} 0&{} 0&{} 0 \\ \end{array}}}\right] _{9\times 9} \end{aligned}$$
(25)

For the pseudo-range difference in i-th and j-th satellites, a linear equation based on the satellite’s and receiver’s positions can be defined. As the single-difference is presumed, we can say:

$$\begin{aligned} \Delta \rho _m^{ij}&= \left( \rho _m^i -\rho _m^j\right) =\Delta H^{ij}\end{aligned}$$
(26)
$$\begin{aligned} \Delta H^{ij}&= \Bigg [\frac{\Delta x^{i}}{R^{i}}-\frac{\Delta x^{j}}{R^{j}},\frac{\Delta y^{i}}{R^{i}}-\frac{\Delta y^{j}}{R^{j}},\frac{\Delta z^{i}}{R^{i}}-\frac{\Delta z^{j}}{R^{j}},0,0,0,-\left( \frac{\Delta x^{i}}{R^{i}}-\frac{\Delta x^{j}}{R^{j}}\right) ,\nonumber \\&\quad -\left( \frac{\Delta y^{i}}{R^{i}}-\frac{\Delta y^{j}}{R^{j}}\right) ,-\left( \frac{\Delta z^{i}}{R^{i}}-\frac{\Delta z^{j}}{R^{j}}\right) \Bigg ] \end{aligned}$$
(27)

where \(\Delta x^{i}=x^{i}-x_r\) is the difference between \(x\) component of i-th satellite and receiver, \(\Delta x^{j}=x^{j}-x_r\) is the difference between \(x\) component of j-th satellite and receiver, with the same phrase the other components; \(R^{i}=\sqrt{(\Delta x^{i})^{2}+(\Delta y^{i})^{2}+(\Delta z^{i})^{2}}\) is the best approximation of geometric range from receiver to satellite.

$$\begin{aligned} Z=\Delta \rho _m^{ij} -\Delta \hat{{\rho }}_s^{ij} \end{aligned}$$
(28)

where \(Z\) defines measurement vector, \(\Delta \rho _m^{ij}\) is measured pseudo-ranges difference and \(\Delta \hat{{\rho }}_s^{ij}\) defines difference of reconstructed pseudo-ranges. The measurement covariance matrix \(R\) is a diagonal matrix with zero non-diagonal elements. The covariance matrix \(P\) is a \(9 \times 9\) diagonal matrix. The process noise covariance matrix \(Q\) is defined as Eq. (29):

$$\begin{aligned} Q\!=\!\left[ {{\begin{array}{lllllllll} {q_p \Delta t\!+\!q_v \frac{\Delta t^{3}}{3}}&{} 0&{} 0&{} {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_p \Delta t}&{} 0&{} 0 \\ 0&{} {q_p \Delta t\!+\!q_v \frac{\Delta t^{3}}{3}}&{} 0&{} 0&{} {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_p \Delta t}&{} 0 \\ 0&{} 0&{} {q_p \Delta t\!+\!q_v \frac{\Delta t^{3}}{3}}&{} 0&{} 0&{} {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_p \Delta t} \\ {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_v \Delta t}&{} 0&{} 0&{} 0&{} 0&{} 0 \\ 0&{} {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_v \Delta t}&{} 0&{} 0&{} 0&{} 0 \\ 0&{} 0&{} {q_v \frac{\Delta t^{2}}{2}}&{} 0&{} 0&{} {q_v \Delta t}&{} 0&{} 0&{} 0 \\ {q_p \Delta t}&{} 0&{} 0&{} 0&{} 0&{} 0&{} {q_p \Delta t}&{} 0&{} 0 \\ 0&{} {q_p \Delta t}&{} 0&{} 0&{} 0&{} 0&{} 0&{} {q_p \Delta t}&{} 0 \\ 0&{} 0&{} {q_p \Delta t}&{} 0&{} 0&{} 0&{} 0&{} 0&{} {q_p \Delta t} \\ \end{array}}}\right] _{9\times 9}\nonumber \\ \end{aligned}$$
(29)

where \(q_p\) and \(q_v\) are the common spectral density for the position and velocity elements.

3.4 Receiver’s Position Estimation Using KF with Single-Difference of Carrier Phase Data

The single-difference phase across time can be modeled as:

$$\begin{aligned} \Delta \varphi _{t1t2}^i =H^i (x_{t2} -x_{t1})+\Delta clock \end{aligned}$$
(30)

where \(H\) vector is defined as \(H^{i}=\left[ {{\begin{array}{llllllll} {\frac{\Delta x^{i}}{R^{i}}}&{} 0&{} {\frac{\Delta y^{i}}{R^{i}}}&{} 0&{} {\frac{\Delta z^{i}}{R^{i}}}&{} 0&{} 1&{} 0 \\ \end{array}}}\right] \) and \(x_{t2} - x_{t1}\) is the vector of position differences between the current time \((t_2)\) and the previous time \((t_1)\).

$$\begin{aligned} Z=\Delta \varphi _{t_1, t_2}^i -\Delta \hat{{\rho }}_{t_1, t_2}^i \end{aligned}$$
(31)

where \(Z\) defines measurement vector, \(\Delta \varphi _{t_1, t_2}^i\) defines i-th satellite measured phase data difference in successive time intervals and \(\Delta \hat{{\rho }}_{t_1, t_2}^i\) defines i-th satellite reconstructed pseudo-ranges difference.

3.5 Receiver’s Position Estimation Using KF with Double Difference of Carrier Phase Data

For double-difference carrier phase with respect to time and satellite there is:

$$\begin{aligned} \Delta \nabla \varphi _{t_1, t_2}^{ij} =\Delta \varphi _{t_1, t_2}^i -\Delta \varphi _{t_1, t_2}^j =\Delta H^{ij}(x_{t_2}) \end{aligned}$$
(32)

where \(\Delta \varphi _{t_1, t_2}^j\) is j-th satellite measured phase data difference in successive time intervals and \(\Delta H^{ij}\) is defined as Eq. (33):

$$\begin{aligned} \Delta H^{ij}(x_{t_2})&= H^{j}(x_{t_2})-H^{i}(x_{t_2}); H^i =\left[ \frac{\Delta x^{i}}{R^{i}},\frac{\Delta y^{i}}{R^{i}},\frac{\Delta z^{i}}{R^{i}},0,0,0,-\frac{\Delta x^{i}}{R^{i}},-\frac{\Delta y^{i}}{R^{i}},-\frac{\Delta z^{i}}{R^{i}}\right] \nonumber \\ \end{aligned}$$
(33)
$$\begin{aligned} Z&= (\Delta \varphi _{t_1, t_2}^i -\Delta \hat{{\rho }}_{t_1,t_2}^i)-(\Delta \varphi _{t_1,t_2}^j -\Delta \hat{{\rho }}_{t_1,t_2}^j) \end{aligned}$$
(34)

where \(Z\) defines measurement vector, \(\Delta \varphi _{t_1, t_2}^i\) defines measured phase data difference in successive time intervals, \(\Delta \hat{{\rho }}_{t_1, t_2}^i\) defines i-th satellite reconstructed pseudo-range difference in successive time intervals and \(\Delta \hat{{\rho }}_{t_1,t_2}^j\) defines j-th satellite reconstructed pseudo-range difference in successive time intervals.

3.6 Receiver’s Position Estimation Using KF with Double-Difference of Pseudo-Range and Carrier Phase Data

In fact, this method is a combination of single-difference pseudo-range and double-difference carrier phase methods which is shown in Eq. (35):

$$\begin{aligned}&(\Delta \varphi _{t_1, t_2}^i -\Delta \varphi _{t_1, t_2}^j)-(\rho _m^i)=\Delta H^{ij}(x_{t_1})\end{aligned}$$
(35)
$$\begin{aligned}&H=\left[ \frac{\Delta x^{i}}{R^{i}},\frac{\Delta y^{i}}{R^{i}},\frac{\Delta z^{i}}{R^{i}},0,0,0,-\frac{\Delta x^{i}}{R^{i}},-\frac{\Delta y^{i}}{R^{i}},-\frac{\Delta z^{i}}{R^{i}}\right] \end{aligned}$$
(36)
$$\begin{aligned}&Z=\nabla \Delta \varphi _{t1t2}^{ij} +P^j (t1)-\rho _0^j (t2) \end{aligned}$$
(37)

where \(Z\) defines measurement vector, \(\Delta \varphi _{t_1, t_2}\) defines measured phase data difference in successive time intervals, \(\rho _m^i\) defines measured pseudo-range by the system, \(P^j (t1)\) is measured pseudo-range in the previous time and \(\rho _0^j (t2)\) defines estimated pseudo-range in the current time.

4 Results and Analysis

Rohde & Schwarz GNSS simulator is used to generate raw GPS data such as pseudo range, integrated carrier phase, Doppler shift and satellite ephemeris. The GNSS simulator in the R&S\(^{{\circledR }}\)SMBV100A includes the ability to simulate realistic transmission conditions through the use of multipath signal generation and modeling of various atmospheric effects. The motion of an aircraft containing GNSS receiver, simulator is used to model effects that impact GNSS receiver performance, such as atmospheric conditions, multipath reflections, antenna characteristics and interference signals.

The results of receiver position estimation using KF with discussed methods are shown simultaneously in Fig. 1. In this figure, methods of smoothed positioning equations using KF with pseudo-range, carrier phase and the combination of these two are compared with a reference data. Also, Fig. 2 shows methods error. They show performance and accuracy of the proposed method.

Fig. 1
figure 1

Receiver position estimation using proposed KF methods (\(X\) component has been magnified)

Fig. 2
figure 2

Receiver position errors using proposed KF methods

As seen, the position estimation diagram by pseudo-range data has distortion. For the performance evaluating of the proposed method, root mean square error (RMSE) was used as [2125]:

$$\begin{aligned} RMS=\sqrt{\frac{1}{N}\sum _{i=1}^{i=N} {[Desired(i)-Output(i)]^{2}}} \end{aligned}$$
(38)

where \(N\) is number of tests and \(Desired(i)\) and \(Output(i)\) represent the true coordinates data and algorithms output data, respectively. The overall RMS error by this method in three dimensions of \(x, y\) and \(z\) is about 23 m.

Accuracy of receiver position estimation using KF with single-difference pseudo-range data is higher than pseudo-range data method. Also, state estimation diagram using KF with single- difference carrier phase data is smoother and the overall RMS is about 20 m.

When double-difference carrier phase data is used, position estimation diagram follows reference data diagram with higher accuracy. It is the advantage of using carrier phase which has a higher accuracy than pseudo-range does. However, it should be noticed that in carrier phase method we face the notion of integer ambiguity. In other words, carrier phase measurement is an ambiguous indirect measurement of transfer signal time since the range between satellite and receiver equals some unknown whole cycles plus a fraction of measured cycle while carrier phase measurement doesn’t include whole cycles i.e. integer ambiguity. To remove the phase integer ambiguity from the equations, carrier phase difference in an observable satellite, as shown in single-difference methods of carrier phase data, in two time intervals are used. The success in this method depends on fixing the integer ambiguity in the time interval. In double-difference carrier phase method, twice subtracting across the time and satellite results in removal of the produced receiver clock change. Therefore, the accuracy is more than the single-difference one.

Receiver position estimation based on pseudo-range and carrier phase data, which is the combination of single-difference pseudo-range and double-difference carrier phase methods, in fact makes a balance between these two methods which has a higher accuracy in comparison with the pure pseudo-range method.

The next point to be mentioned is that the overall RMS error obtained by double-difference carrier phase data in a period of time in which the receiver is fixed is about 5 m. Whereas the overall RMS error in this method in the whole time period is about 17 m. However in pseudorange-carrier phase combined method, there is a more stability in overall RMS error in the whole time period which shows the optimal performance of this method in high velocities. This is in addition to the positioning capability of combined method (without needing to initial position) versus displacement calculation in double-difference carrier phase method, because double-difference carrier phase method can only calculate displacement and it’s positioning firmly depends on initial conditions. As the initial position estimate gets farther from the actual location, therefore, to get a good position estimate with this method, one must have an accurate estimate of the initial location and this imposes a major limitation.

The overall RMS errors based on the methods in meter are presented in Table 1.

Table 1 RMS errors in methods (in m)

In this paper, the simulations have been carried out using a DELL-PC with Intel (R) Core (TM) i3 CPUM350 2.27 GHz and 2-GB RAM by MATLAB R2010a. Methods calculating time measured in millisecond are shown in Table 2.

Table 2 Methods calculating time measured (in ms)

From Table 2, it can be concluded that combined method in positioning time is, too, faster than double-difference carrier phase method.

5 Conclusion

In this paper, receiver position estimation using KF with pseudo-range data, carrier phase data and the combination of these two were discussed wherein each of which has its own advantages and disadvantages. However, the results of the proposed methods showed acceptable improvements in the accuracy of receiver position estimation.