1 Introduction

Global Positioning System (GPS) as the powerful positioning system is vastly used in automated systems from self-driving cars to delivery systems and airlines. Therefore, introducing a comprehensive, fast, and precise algorithm would significantly affect the process of positioning and facilitates obtaining higher accuracy with a low computational burden in millions of devices. This system uses pseudo-range and carrier phase as its rudimentary observations for navigation. Pseudo-range indicates the distance between receiver and satellite. The carrier phase is the phase difference between the received signal and the signal generated by the receiver. The carrier phase is needed for more accurate positioning [1, 2].

At present, the way of precise real-time positioning using single-frequency GPS receivers is using the differential mode that is a relative positioning of two receivers [3]. The use of differential GPS is proposed to achieve higher accuracy [4]. Some other research efforts have attempted to combine GPS with other navigation systems such as GLONASS or INS to attain a higher accuracy [5]. However, these methods have high implementation cost and time complexity.

There are distinct mathematical methods to solve positioning equations and find accurate position based on fundamental observations. Kalman Filter (KF) and Least Squares (LS) methods are two of the most widely deployed methods. To obtain a higher level of precision, improved LS techniques such as Recursive Least Squares (RLS) were presented [6].

Various mathematical optimization solutions were analyzed to both enhance the accuracy performance of the positioning system and attain the real-time advantage of KF method. It was found that using a weighting system alongside KF elementary matrices would surprisingly improve accuracy. Therefore, observations with more accuracy get more significant effectiveness coefficient. The factors used in precision recognition of observations are Carrier–Noise power density ratio (C/N0), elevation angle, and combined coefficients.

In this paper, a method is proposed for positioning with single-frequency GPS receivers using the Weighted Kalman Filter (WKF) combined with stochastic models for weighing the observations based on their qualities. This method improves the positioning accuracy up to 30 percent compared to conventional methods.

The rest of this paper is organized as follows. Section 2 presents mathematical tools for solving navigation equations in GPS receivers. Section 3 reviews the KF method and how this filter is employed in positioning. Section 4 introduces effective factors in positioning accuracy and elaborates how to weight the matrices based on the quality of observations. Section 5 discusses results, simulations, and the advantages of our approach as compared to other methods. Finally, Sect. 6 presents conclusions.

2 Mathematical tools for solving navigation equations

After the signal acquisition in GPS receiver, an algorithm is needed for GPS data analysis and positioning. There are various mathematical tools for positioning in localization systems. In this section, we review some mostly used methods in positioning.

2.1 Least squares method

LS is one of the basic and widely used methods in linear recursive models. This algorithm changes model coefficients and tries to make the recursive model, the most possibly identical one to observations. LS method is used to optimize computations and maximize accuracy. The method is implemented where the equations are more than unknowns, or there is an over-determined system. GPS receivers output four parameters, including time and three positioning components. Therefore, having four satellites could be enough to solve equations and find out these unknown parameters. Therefore, when there are more than four satellites within line of sight, implementing the LS method, extra satellites’ observations are used to obtain a higher degree of accuracy [7].

2.2 Kalman Filter method

KF necessitates independence of initials and noises that should be explicitly defined for one-step-ahead prediction. One of its prominent characteristics is recursive analysis. Hence, storing only the last computation results in this filter helps out in storage space issues effectively. In this method, the dataset is updated using the previous computation results, without attaining all the results [8, 9]. This feature is beneficial in the system run time and overall performance.

The first step in reviewing KF recursive relations is defining state equations:

$$X_{k + 1} = \phi_{k} X_{k} + W_{k} ,$$
(1)

where XK indicates state process vector in \(t_{k}\), \(\phi_{k}\) is the transition matrix of \(X_{k}\) to \(X_{k + 1}\), and \(W_{k}\) is the process error vector. Measurement equations are defined by Eq. (2):

$$Z_{k + 1} = H_{k} X_{k} + V_{k} ,$$
(2)

where \(Z_{k }\) indicates measured vector in \(t_{k}\), \(H_{k}\) is the ideal transition matrix of \(Z_{k}\) to \(X_{k}\) and \(V_{k}\) is the measurement error vector.

The prediction and update relations in the KF are as follows:

$$\hat{X}_{k} = \hat{X}_{k}^{ - } + K_{k} \left( {Z_{k} - H_{k} \hat{X}_{k}^{ - }} \right),$$
(3)
$$\hat{X}_{k + 1}^{ - } = \phi_{k} \hat{X}_{k} ,$$
(4)
$$P_{k + 1}^{ - } = \phi_{k} P_{k} \phi_{k}^{T} + Q_{k} ,$$
(5)
$$P_{k} = \left( {I - K_{k} H_{k} } \right)P_{k}^{ - } ,$$
(6)
$$K_{k} = P_{k}^{ - } H_{k}^{T} \left( {H_{k} P_{k}^{ - } H_{k}^{T} + R_{k} } \right)^{ - 1} ,$$
(7)

where \(P_{k}^{ - }\) is a known matrix that indicates corresponding error covariance.

3 Deployment of Kalman Filter in positioning

Definition of KF parameters differs by its usage [10,11,12,13]. When it is implemented for positioning and navigation, the state vector will have eight elements, including the receiver position, speed, and clock bias changes [14]. The state transition matrix for a receiver with constant velocity is presented by Eq. (8):

$$\left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\delta x_{k + 1} } \\ {\delta y_{k + 1} } \\ {\delta z_{k + 1} } \\ {\delta \dot{x}_{k + 1} } \\ \end{array} } \\ {\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}{*{20}c} 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}{*{20}c} {\begin{array}{*{20}c} {\delta x_{k} } \\ {\delta y_{k} } \\ {\delta z_{k} } \\ {\delta \dot{x}_{k} } \\ \end{array} } \\ {\delta \dot{y}_{k} } \\ {\delta \dot{z}_{k} } \\ {\delta t_{k} } \\ {\delta \dot{t}_{k} } \\ \end{array} } \right].$$
(8)

The state vector of error will be estimated in every measurement loop. Then, the state vector of estimated error, as shown in Eq. (9), will be added to the receiver’s estimated location, and its value will be returned to zero for the next step.

$$\left[ {\begin{array}{*{20}c} {\hat{X}_{K}^{ + } } \\ {\hat{Y}_{K}^{ + } } \\ {\hat{Z}_{K}^{ + } } \\ {\hat{t}_{K}^{ + } } \\ {\hat{\dot{t}}_{K}^{ + } } \\ \end{array} } \right]\, = \,\left[ {\begin{array}{*{20}c} {\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]$$
(9)

In the measurement step, the estimation of state vector will be used for linearization of observations matrix that is shown in the presented equation:

$$H\, = \,\left[ {\begin{array}{*{20}c} {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],$$
(10)

where \(a_{x,i}\), \(a_{y,i}\) and \(a_{z,i}\) are distances between i-th satellite and receiver and \(a_{{\dot{x},i}}\), \(a_{{\dot{y},i}}\) and \(a_{{\dot{z},i}}\) are distance changes speed for i-th satellite and receiver. P is an 8 × 8 diagonal covariance matrix. z is the measurement vector that indicates the difference between pseudo-range observations vector received from satellites and estimated pseudo-range based on receivers clock bias and location as Eq. (11):

$$\hat{\rho }_{i} \, = \,\sqrt {\left( {\hat{X}_{i} \, - \,\hat{X}_{K}^{ - } \,} \right)^{2} \, + \,\left( {\hat{Y}_{i} \, - \,\hat{Y}_{K}^{ - } } \right)^{2} \, + \,\left( {\hat{Z}_{i} \, - \,\hat{Z}_{K}^{ - } } \right)^{2} } \, + \,c\hat{t}_{K}^{ - } .$$
(11)

Measurement covariance matrix (R) is another diagonal matrix. Its non-zero diagonal elements are dependent upon every satellite’s pseudo-range measurement variance. The matrix is shown by Eq. (12):

$$R = \,\left[ {\begin{array}{*{20}c} {\delta_{{\rho_{1} }}^{2} } & 0 & \ldots & 0 \\ 0 & {\delta_{\rho 2}^{2} } & {} & \vdots \\ \vdots & {} & \ddots & 0 \\ 0 & \ldots & 0 & {\delta_{\rho i}^{2} } \\ \end{array} } \right].$$
(12)

Next matrix that is presented in this section is Q. It is described as process noise covariance and indicates uncertainty in dynamic models. It was developed to define time unknown parameters and is used to not allow the digital filter falling asleep.

$$Q\, = \,\left[ {\begin{array}{*{20}l} {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 3} }}{3}} \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill \\ {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & {{\text{Sp}}\Delta {\text{t}}} \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill \\ 0 \hfill & 0 \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 3} }}{3}} \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill \\ 0 \hfill & 0 \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & {{\text{Sp}}\Delta {\text{t}}} \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill \\ 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 3} }}{3}} \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & 0 \hfill & 0 \hfill \\ 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & {{\text{Sp}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & {{\text{Sp}}\Delta {\text{t}}} \hfill & 0 \hfill & 0 \hfill \\ 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & {S{\text{f}}\Delta {\text{t}}\, + \,{\text{Sg}}\frac{{\Delta {\text{t}}^{ 3} }}{3}} \hfill & {{\text{Sg}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill \\ 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & 0 \hfill & {{\text{Sg}}\frac{{\Delta {\text{t}}^{ 2} }}{2}} \hfill & {{\text{Sg}}\Delta {\text{t}}} \hfill \\ \end{array} } \right],$$
(13)

where parameters \({\text{S}}_{\text{p}}\), \({\text{S}}_{\text{f}}\) and \({\text{S}}_{\text{g}}\) are the spectral amplitudes associated with the white noise driving functions.

4 Weight implementation in Kalman Filter

KF can be modified for distinctly different usages. In positioning, inputs with low precision and loss of quality cause a discrepancy in computations. Then, by defining a coefficient, through which observations can be weighed, distortion effects can be gradually reduced or eliminated. In the next part, firstly, we discuss deteriorating factors that would distort observations inclusive of elevation angle and C/ N0. Finally, we present an efficient variance estimation method, which utilizes measured deteriorating factors and along with KF, helps in discrepancy reduction.

4.1 Elevation angle and C/N0 dependency in GPS signal quality

There is a vast range of variables that are capable of changing the GPS receiving signals quality. Meanwhile, two factors are more impactful in positioning precision: elevation angle, and C/N0. The accuracy of observables alters by the elevation angle change for satellites within the line of sight. Due to the observable precision of a single channel, quality of observations deteriorates significantly as the elevation angle decreases. Furthermore, propagation and environmental effects deteriorate transmitted GPS signals. Accordingly, the transmitted signals quality diminishes drastically, and it is possible to have a loss in power that hinders positioning. The second factor is C/N0. It is carrier–noise power density ratio in a 1-Hz bandwidth, which can demonstrate effective signal power in GPS receiver.

Considering the inverse relationship between the quality of signals and the variance of observations, variance inverse is employed as a weight matrix in KF to achieve output that is more accurate. All components of the weight matrix are related to elevation angle or C/N0 at specified satellite through presented models. Therefore, matrix A, defined as the covariance matrix, makes it feasible for the system to make use of noisy observations for positioning effectively. This is done by assigning these observations low weights and not ignoring them. Variance is defined using elevation angle and C/N0. Next section elaborately discusses variance determination. The matrix A is as Eq. (14):

$$A = \left[ {\begin{array}{*{20}c} {\sigma_{{x_{1} }}^{2} } & {\sigma_{{x_{1} x_{2} }}^{ } } & \cdots & {\sigma_{{x_{1} x_{n} }}^{ } } \\ {\sigma_{{x_{2} x_{1} }}^{ } } & {\sigma_{{x_{2} }}^{2} } & \cdots & {\sigma_{{x_{2} x_{n} }}^{ } } \\ \vdots & \vdots & \ddots & \vdots \\ {\sigma_{{x_{n} x_{1} }}^{ } } & {\sigma_{{x_{n} x_{2} }}^{ } } & \cdots & {\sigma_{{x_{n} }}^{2} } \\ \end{array} } \right],$$
(14)

where \(\sigma_{{x_{i} }}^{2}\) is the variance of i-th observation and \(\sigma_{{x_{i} x_{j} }}\) is the variance between i th and j th observation. The off-diagonal terms are set to zero because observations are independent. Accordingly, the covariance matrix and the weight matrix are both diagonal.

$$A\, = \,\left[ {\begin{array}{*{20}c} {\sigma_{{x_{1} }}^{2} } & 0 & \cdots & 0 \\ 0 & {\sigma_{{x_{2} }}^{2} } & & \vdots \\ \vdots & & \ddots & 0 \\ 0 & \cdots & 0 & {\sigma_{{x_{n} }}^{2} } \\ \end{array} } \right]$$
(15)

The weight for i th observation is computed as follows:

$$W_{i} \left( n \right) = \frac{{\sigma_{0}^{2} }}{{\sigma_{i}^{2} \left( n \right)}},$$
(16)

where \(\sigma_{0}^{2}\) is an arbitrary scale factor used as observation variance. Its value can be adjusted, but the default value is one here.

$$W_{i} \left( n \right) = \frac{1}{{\sigma_{i}^{2} \left( n \right)}}.$$
(17)

Then, the independent observation weight is known and the modified R matrix will be as Eq. (18):

$$R\, = \,\delta_{{\rho_{1} }}^{2} \times \left[ {\begin{array}{*{20}c} {\frac{1}{{\sigma_{{x_{1} }}^{2} }}} & 0 & \cdots & 0 \\ 0 & {\frac{1}{{\sigma_{{x_{2} }}^{2} }}} & & \vdots \\ \vdots & & \ddots & 0 \\ 0 & \cdots & 0 & {\frac{1}{{\sigma_{{x_{n} }}^{2} }}} \\ \end{array} } \right],$$
(18)

where \(\sigma_{{x_{i} }}^{2}\) is the variance of i th observation and \(\delta_{{\rho_{1} }}\) is known and optimized. The procedure of Fig. 1 is used in weight implementation.

Fig. 1
figure 1

Proposed WKF procedure

4.2 Variance estimation function models

In this section, we may use stochastic models based on variance estimation methods to define the best standard deviation of the observables and to fit the weight matrix. The satellites with low elevation angle have observations containing high multi-path and atmospheric refraction errors. Hence, small weights will be assigned to observations of these satellites to reduce ionospheric and tropospheric deteriorating effects. As a result, the graph structural strength in the satellite’s distribution will be guaranteed. Finally, three C/N0-based models are introduced, in which small weights would be assigned to the observations with low C/N0.

4.2.1 Elevation-based exponential function model

As a weighting scheme, the exponential function is an optimal model [14]. This model is expressed by Eq. (19):

$$\sigma_{i}^{2} \left( n \right) = a + b \times \exp \left( {\frac{{ - \theta_{i} \left( n \right)}}{{\theta_{0} }}} \right),$$
(19)

where \(\sigma\) is the standard deviation of observables and \(\theta_{i} \left( n \right)\) is the elevation angle for n th observable at epoch \(t_{i}\). The parameters a and b are to be driven using estimated variance components. Figure 2 shows the \(\sigma_{i}^{2}\) value based on Model 1.

Fig. 2
figure 2

\(\sigma_{i}^{2}\) value based on Model 1

4.2.2 Elevation-based sinusoidal function model

Sinusoidal function is one of the most widely used models. It can be indicated by Eq. (20) [14]:

$$\sigma_{i}^{2} \left( n \right) = \frac{{a^{2} }}{{\sin^{2} \left( {\theta_{i} \left( n \right)} \right)}}.$$
(20)

The Eq. (20) can be modified to Eq. (21) for better performance in low angles.

$$\sigma_{i}^{2} \left( n \right) = a^{2} + \frac{{b^{2} }}{{c^{2} + \sin^{2} \left( {\theta_{i} \left( n \right)} \right)}},$$
(21)

where a, b and c are all experimental values. Figure 3 shows the \(\sigma_{i}^{2}\) value based on Model 2.

Fig. 3
figure 3

\(\sigma_{i}^{2}\) value based on Model 2

4.2.3 Elevation-based tan function model

Another suitable scheme is the function of Tangent [15]. Although avoiding singularity, tan(0), which has an absolute result of zero, an appropriate adjustment should be used by Eq. (22):

$$\sigma_{i}^{2} \left( n \right) = a^{2} \, + \,\frac{{b^{2} }}{{c^{2} + { \tan }^{2} \left( {\theta_{i} \left( n \right) - \theta_{0} } \right)}},$$
(22)

where \(\theta_{0}\) is a reference elevation angle that is chosen close to zero. Figure 4 shows the \(\sigma_{i}^{2}\) value based on Model 3.

Fig. 4
figure 4

\(\sigma_{i}^{2}\) value based on Model 3

4.2.4 Elevation-based cosine function model

The final scheme for elevation-based models, which may be beneficial to define \(\sigma_{i}^{2} \left( n \right)\), is the cosine function [16]. The model is simple, and its equation is defined by Eq. (23):

$$\sigma_{i}^{2} \left( n \right) = a^{2} \, + \,b^{2} \times \cos_{ }^{2} \left( {\theta_{i} \left( n \right)} \right) .$$
(23)

Figure 5 shows the \(\sigma_{i}^{2}\) value based on Model 4.

Fig. 5
figure 5

\(\sigma_{i}^{2}\) value based on Model 4

4.2.5 C/N0-based sigma ε function model

Hartinger and Brunner introduced this model [17]. The model uses C/N0 observable to determine \(\sigma_{i}^{2}\) through the model parameter \(C_{i}\). They added an additive term shown as \(V_{i}\) for receiver–antenna combinations issue. The finalized model is expressed by Eq. (24):

$$\sigma_{i}^{2} \left( n \right) = V_{i} + C_{i} \times 10^{{ - C/N_{0} }} ,$$
(24)

where the model parameters Vi [m2] and Ci [m2Hz] are estimated as \(C_{{{\text{L}}1 }} = 0.244\) and \(V_{\text{L1}}\) = 0 for \({\text{L}}1\) frequency. Figure 6 shows the \(\sigma_{i}^{2}\) value based on Model 5.

Fig. 6
figure 6

\(\sigma_{i}^{2}\) value based on Model 5

4.2.6 C/N0-based sigma ∆ function model

This model takes the difference (∆) between the expected value and the measured C/N0 of the received signal. It is used to indicate signal distortion [18]. The final equation is presented by Eq. (25):

$$\sigma_{i}^{2} \left( n \right) = V_{i} + C_{i} \times 10^{{ - \frac{{C/N_{0} - \propto \left| \Delta \right|}}{10}}} ,$$
(25)

where is an empirical constant factor. Figure 7 shows the \(\sigma_{i}^{2}\) value based on Model 6.

Fig. 7
figure 7

\(\sigma_{i}^{2}\) value based on Model 6

4.2.7 C/N0-based function model combined with noise bandwidth of the carrier tracking loop

Langley, Braasch, and Dierendonck presented a formula which determines \(\sigma_{i}^{2}\) based on C/N0 and noise bandwidth. This relation is expressed by Eq. (26) [19, 20]:

$$\sigma_{i}^{2} \left( n \right) = \sqrt {\frac{B}{{C/N_{0} }}} \times \frac{\lambda }{2\pi },$$
(26)

where B is the noise bandwidth of the carrier tracking loop (in Hz) and λ is the wavelength of the carrier (in meter). Figure 8 shows the \(\sigma_{i}^{2}\) value based on Model 7.

Fig. 8
figure 8

\(\sigma_{i}^{2}\) value based on Model 7

Having this modified R matrix, the positioning will be affordable through WKF procedure in Fig. 1.

5 Simulations and results

Raw GPS data including pseudo-range, Doppler shift, and satellite ephemeris are generated by Rhode and Schwarz GNSS simulator. The GNSS simulator in the R and S®SMBV100A is capable of generating multi-path signals and can simulate realistic transmission conditions using atmospheric effects modeling. It is used to model the effects that impact on GNSS receivers’ overall performance, such as atmospheric conditions, multi-path reflections, and interference signals. Positioning in dynamic states based on stochastic weighting empowered KF model was analyzed to find out the effects of stochastic weighting on precision and speed performance of KF. The results of RLS and KF methods were compared with this proposed model. Then, the simulations were executed for three different scenarios based on speed and type of movement all in Matlab. The first scenario corresponds to moving object motion in the air with a velocity of 90 m/s. The second and third scenarios are corresponding to the two objects both with circular movements, but with different speeds of 100 m/s and 500 m/s. The mentioned motion scenarios are indicated in Figs. 9, 10, 11.

Fig. 9
figure 9

Move in air with velocity of 90 m/s

Fig. 10
figure 10

Circular motion with velocity of 100 m/s

Fig. 11
figure 11

Circular motion with velocity of 500 m/s

The results of navigating and positioning performance (precision and CPU time) for RLS, KF, and proposed WKF methods are shown in Tables 1 and 2. In addition, the positioning simulation results compared with the reference position for three mentioned types of motion scenarios are shown in Figs. 12, 13, 14.

Table 1 Comparison of RMS errors in meters for nine methods
Table 2 Comparison of CPU times in seconds for nine methods
Fig. 12
figure 12

WKF + Model 2 positioning result for 90 m/s air motion

Fig. 13
figure 13

WKF + Model 2 positioning result for 100 m/s circular motion

Fig. 14
figure 14

WKF + Model 2 positioning result for 500 m/s circular motion

The results analysis indicates that the precision in positioning has been improved effectively in all three scenarios after implementing the WKF methods. As shown in Table 1, when WKF is used alongside Model 2 using elevation angle, the positioning error is decreased to its lowest level (due to the dramatically high-level contrast of weights in Model 2). The digital filter itself had far better CPU time compared to the RLS method. The significant fact is that implementation of the weighting method in the filter did not change CPU time considerably, although it has improved accuracy.

6 Conclusion

GPS is the most vastly deployed positioning system worldwide. There are myriad of devices, which need instant and precise positioning. In this paper, a new method for positioning with single-frequency GPS receivers using the WKF combined with stochastic models was proposed. This method improved KF accuracy with low computational burden and CPU time. The results of simulations indicate that the novel stochastic observation-based sigma WKF model has the best performance in speed and accuracy generally, as compared to RLS and KF. In addition, the results for different motion scenarios with a vast range of velocities from 90 m/s to 500 m/s highlight that the proposed algorithm has functionality in a wide range of general purpose moving objects. The new approach, considering its high accuracy and fast performance, has usability in medium- to high-speed moving objects such as airplanes and so on. Compared to RLS, it has more than 80% better CPU time, and compared to KF, it has up to 30% better accuracy.