1 Introduction

The introduction of Global Positioning System (GPS) has brought a revolution in the field of positioning and leads to the development of many sophisticated positioning systems in the fields of defence and civil sectors for guiding of troops in the battlefield, navigation of ships, the landing of aircraft, etc. (Rao 2010). Even when operated to their full capacity, these systems provide limited accuracy for these applications and hence need to be improved. The three primary functions on which most of today’s defence systems work are Navigation, Tracking and Guiding and it is unimaginable to find a system that doesn’t have any relation with these functions. These systems require determining the two or three dimensional (3D) position information of an object of interest and they use GPS receivers for this purpose. GPS is the constellation of space bodies called satellites that revolve around the earth and provides position information based on range measurements (Sirish Kumar and Srilatha Indira Dutt 2019a). With a sufficient number of range measurements, GPS can provide position estimates to high degree accuracy (Rutledge 2010; Ankur 2017). The accuracy, in turn, is the function of the type of equipment, geographic area, uncertainty in measurements, navigation algorithm, etc. In practice, the measurement uncertainty can never reach zero even though the system noise parameters and biases are modelled effectively and hence need a high accuracy navigation algorithm (Ashok Kumar et al. 2018; Kleusberg 2003) that makes out an optimal estimate from these uncertain measurements.

In the present paper, we develop a new Kalman filter, compactly called the cross Correntropy Kalman Filter (CCKF), based on the correntropy criterion (Liu et al. 2007) and a fixed-point iterative algorithm. Similar to the traditional KF, the CCKF not only retains the state mean propagation process but also preserves the covariance matrix propagation process. Thus the new filter also has a recursive structure and is suitable for online implementation. It is worth noting that the correntropy criterion has been used in hidden state estimation, but it involves no covariance propagation process and is in the form not a Kalman filter. Unlike the traditional KF algorithm, the CCKF uses a fixed-point algorithm (Agarwal et al. 2001) to update the posterior estimate of the state. The small positive number ε provides a stop condition (or a threshold) for the fixed-point iteration. The kernel bandwidth σ is a key parameter in CCKF. In general, a smaller kernel bandwidth makes the algorithm more robust (with respect to outliers) but converges more slowly. The kernel bandwidth has a significant influence on the convergence behaviour of CCKF. If the kernel bandwidth σ is too small, the algorithm will diverge or converge very slowly. A larger kernel bandwidth ensures a faster converge speed but usually leads to poor performance in impulsive noises. In practical applications, the kernel bandwidth can be set manually or optimized by trial and error methods. The effectiveness of the proposed algorithm is demonstrated on the estimation of the position of a GPS receiver, and its performance is compared to the performance of traditional Kalman filter (Kalman 1960; Yamaguchi and Tanaka 2006).

2 GPS position estimation using more than four satellites

In order to determine the position of the receiver (Rao 2010; Sirish Kumar and Srilatha Indira Dutt 2019a), we work out formulas as below.

$${\text{p}}_{\text{i}} = \sqrt {\left( {{\text{l}}^{\text{u}} - {\text{l}}_{\text{sp}} } \right)^{2} + \left( {{\text{m}}^{\text{u}} - {\text{m}}_{\text{sp}} } \right)^{2} + \left( {{\text{n}}^{\text{u}} - {\text{n}}_{\text{sp}} } \right)^{2} } + {\text{T}}_{\text{cb}}$$
(1)

In above equation \({\text{l}}^{\text{u}} ,{\text{m}}^{\text{u}} ,{\text{n}}^{\text{u}}\) and \({\text{p}}_{\text{i}}\) shows GPS receiver position coordinates and pseudorange calculated from the time of signal transmission (Fig. 1). \({\text{T}}_{\text{cb}}\) represents clock error of the receiver. In this equation there are four unknown parameters, which are the position \({\text{l}}_{{{\text{sp}},}} {\text{m}}_{\text{sp}} ,{\text{n}}_{\text{sp}} ,\) and the clocl error \({\text{T}}_{\text{cb}}\) of receiver. We need more than three equations, that is, we must acquire 4 satellites at least to calculate the receiver’s position (Ankur 2017).

Fig. 1
figure 1

GPS satellite and receiver position

To solve Eq. (1) Newton method is usually used, which expands nonlinear equation as follows.

$$\left. {\begin{array}{*{20}c} { {\text{l}}^{\text{u}}_{{{\text{k}} + 1}} = {\text{l}}^{\text{u}}_{\text{k}} + \Delta {\text{l}}^{\text{u}} } \\ {{\text{m}}^{\text{u}}_{{{\text{k}} + 1}} = {\text{m}}^{\text{u}}_{\text{k}} + \Delta {\text{m}}^{\text{u}} } \\ { {\text{n}}^{\text{u}}_{{{\text{k}} + 1}} = {\text{n}}^{\text{u}}_{\text{k}} + \Delta {\text{n}}^{\text{u}} } \\ \end{array} } \right\}$$
(2)
$${\text{p}}_{\text{k + 1,i}} = {\text{p}}_{{{\text{k}},{\text{i}}}} + \frac{{\partial {\text{p}}_{\text{i}} }}{{\partial {\text{l}}^{\text{u}}_{\text{k}} }}\Delta {\text{l}}^{\text{u}}_{\text{k}} + \frac{{\partial {\text{p}}_{\text{i}} }}{{\partial {\text{m}}^{\text{u}}_{\text{k}} }}\Delta {\text{m}}^{\text{u}}_{\text{k}} + \frac{{\partial {\text{p}}_{\text{i}} }}{{\partial {\text{n}}^{\text{u}}_{\text{k}} }}\Delta {\text{n}}^{\text{u}}_{\text{k}} + {\text{T}}_{\text{cb}}$$
(3)

In above equation we define

$${\text{a}} = \frac{{\partial {\text{p}}}}{{\partial {\text{l}}^{\text{u}} }}, {\text{b}} = \frac{{\partial {\text{p}}}}{{\partial {\text{m}}^{\text{u}} }}, {\text{c}} = \frac{{\partial {\text{p}}}}{{\partial {\text{n}}^{\text{u}} }}$$
$$\Delta {\text{p}} = {\text{p}}_{{{\text{k}} + 1,{\text{i}}}} - {\text{p}}_{{{\text{k}},{\text{i}}}}$$
$$\begin{aligned} {\text{X}} = \left( {\begin{array}{*{20}c} {\begin{array}{*{20}c} {{\text{a}}_{1} } & {{\text{b}}_{1} } & {{\text{c}}_{1} 1} \\ {{\text{a}}_{2} } & {{\text{b}}_{2} } & {{\text{c}}_{2} 1} \\ \ldots & \ldots & { \ldots \ldots } \\ \ldots & \ldots & { \ldots \ldots } \\ {{\text{a}}_{\text{k}} } & {{\text{b}}_{\text{k}} } & {{\text{c}}_{\text{k}} 1} \\ \end{array} } \\ \\ \end{array} } \right), {\mathbf{\delta P}} = \left[ {\begin{array}{*{20}c} {\Delta {\mathbf{p}}_{1} } \\ {\Delta {\mathbf{p}}_{2} } \\ \ldots \\ \ldots \\ {\Delta {\mathbf{p}}_{{\mathbf{k}}} } \\ \end{array} } \right] , {\mathbf{L}}^{\text{u}} = \left[ {\begin{array}{*{20}c} {\Delta {\text{l}}^{\text{u}} } \\ {\Delta {\text{m}}^{\text{u}} } \\ {\Delta {\text{n}}^{\text{u}} } \\ {{\text{T}}_{\text{cb}} } \\ \end{array} } \right] \hfill \\ {\mathbf{\delta P}} = {\mathbf{X}} \cdot {\mathbf{\delta L}}^{\text{u}} \left( {{\mathbf{k}} = 4} \right) \hfill \\ \end{aligned}$$
(4)

If we acquire more than 4 satellites the solution of equation is require using least-square method as follow.

$$\left. \begin{gathered} \sum {{\text{a}}_{{\text{i}}} } \Delta {\text{p}}_{{\text{i}}} = \sum {{\text{a}}_{{\text{i}}}^{2} } \Delta {\text{l}}^{{\text{u}}} + \sum {{\text{a}}_{{\text{i}}} } {\text{b}}_{{\text{i}}} \Delta {\text{m}}^{{\text{u}}} + \sum {{\text{a}}_{{\text{i}}} } {\text{c}}_{{\text{i}}} \Delta {\text{n}}^{{\text{u}}} + \sum {{\text{a}}_{{\text{i}}} } {\text{T}}_{{{\text{cb}}}} \hfill \\ \sum {{\text{b}}_{{\text{i}}} } \Delta {\text{p}}_{{\text{i}}} = \sum {{\text{a}}_{{\text{i}}} } {\text{b}}_{{\text{i}}} \Delta {\text{l}}^{{\text{u}}} + \sum {{\text{b}}_{{\text{i}}}^{2} } \Delta {\text{m}}^{{\text{u}}} + \sum {{\text{b}}_{{\text{i}}} } {\text{c}}_{{\text{i}}} \Delta {\text{n}}^{{\text{u}}} + \sum {{\text{b}}_{{\text{i}}} } {\text{T}}_{{{\text{cb}}}} \hfill \\ \sum {{\text{c}}_{{\text{i}}} } \Delta {\text{p}}_{{\text{i}}} = \sum {{\text{a}}_{{\text{i}}} } {\text{c}}_{{\text{i}}} \Delta {\text{l}}^{{\text{u}}} + \sum {{\text{c}}_{{\text{i}}} } {\text{b}}_{{\text{i}}} \Delta {\text{m}}^{{\text{u}}} + \sum {{\text{c}}_{{\text{i}}}^{2} } \Delta {\text{n}}^{{\text{u}}} + \sum {{\text{c}}_{{\text{i}}} } {\text{T}}_{{{\text{cb}}}} \hfill \\ \sum \Delta {\text{p}}_{{\text{i}}} = \sum {{\text{a}}_{{\text{i}}} } \Delta {\text{l}}^{{\text{u}}} + \sum {{\text{b}}_{{\text{i}}} } \Delta {\text{m}}^{{\text{u}}} + \sum {{\text{c}}_{{\text{i}}} } \Delta {\text{n}}^{{\text{u}}} + \sum {{\text{T}}_{{{\text{cb}}}} } \hfill \\ \end{gathered} \right\}$$
(5)

After solving Eqs. (4) or (5), we can solve Eq. (2) repeatedly. Finally we can estimate the receiver’s position.

3 Cross-correntropy notation

Cross-Correntropy (Liu et al. 2007; Chena et al. 2017) is a generalized similarity measure between two random variables. Given two random variables S, M with joint distribution function \({\text{A}}_{\text{SM}} \left( {{\text{s}},{\text{m}}} \right)\), cross correntropy is defined by

$${\text{U}}\left( {{\text{S}},{\text{M}}} \right) = {\text{E}}\left[ {{\text{n}}\left( {{\text{S}},{\text{M}}} \right)} \right] = \smallint {\text{n}}\left( {{\text{s}},{\text{m}}} \right){\text{dA}}_{\text{SM}} \left( {{\text{s}},{\text{m}}} \right)$$
(6)

where E denotes the expectation operator, and \({\text{n}}(\) ·,·) is a shift-invariant Mercer Kernel. In this paper, without mentioned otherwise the kernel function is the Gaussian Kernel \(({\text{J}}_{\upsigma} )\) given by

$$\left( {{\text{s}},{\text{m}}} \right) = {\text{J}}_{\sigma } \left( {\text{e}} \right) = \exp \left( { - \frac{{{\text{e}}^{2} }}{{2\sigma ^{2} }}} \right)$$
(7)

where e = s − m, and σ > 0 stands for the kernel bandwidth.

In most practical situations, however, only limited numbers of data are available and the joint distribution \({\text{A}}_{\text{SM}}\) is usually unknown. In these cases, one can estimate the cross correntropy using a sample mean estimator;

$${\hat{\text{U}}}\left({\text{S,M}}\right) = \frac{1}{{\text{K}}}\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{k}}{{\text{J}}_{\upsigma}} \left( {{\text{e}}\left( {\text{i}} \right)} \right)$$
(8)

where \({\text{e}}\left( {\text{i}} \right) = {\text{s}}\left( {\text{i}} \right) - {\text{m}}\left( {\text{i}} \right)\) with \(\left\{ {{\text{s}}\left( {\text{i}} \right),{\text{m}}\left( {\text{i}} \right)\}_{{{\text{i}} = 1}}^{\text{K}} } \right.\), Being K samples drawn from \({\text{A}}_{\text{SM}}\). Taking Taylor series expansion of the Gaussian Kernel, we have

$${\text{U}}\left( {{\text{S}},{\text{M}}} \right) = \mathop \sum \limits_{{{\text{k}} = 0}}^{\infty } \frac{{\left( { - 1} \right)^{\text{k}} }}{{2^{\text{k}}\upsigma^{{2{\text{k}}}} {\text{k}}!}}{\text{E}}\left[ {\left( {{\text{S}} - {\text{M}}} \right)^{{2{\text{k}}}} } \right]$$
(9)

3.1 Kalman filter

Kalman filter (Kalman 1960; Yamaguchi and Tanaka 2006) provides a powerful tool to deal with state estimation of linear systems, which is an optimal estimator under linear and Gaussian assumptions.

Consider a linear system described by the following state and measurement equations:

$${\mathbf{s}}\left( {\text{n}} \right) = {\mathbf{A}}\left( {{\text{n}} - 1} \right){\mathbf{s}}\left( {{\text{n}} - 1} \right) + {\mathbf{p}}\left( {{\text{n}} - 1} \right)$$
(10)
$${\mathbf{m}}\left( {\text{n}} \right) = {\mathbf{B}}\left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right) + {\mathbf{q}}\left( {\text{n}} \right)$$
(11)

where \({\mathbf{s}}\left( {\text{n}} \right)\) denotes the i-dimensional state vector, \({\mathbf{m}}\left( {\text{n}} \right)\) represents the j-dimensional measurement vector at instant ‘n’. A and B stand for, respectively, the system matrix (or state transition matrix) and observation matrix. p (n − 1) and q(n) are mutually uncorrelated process noise and measurement noise, respectively, with zero mean and covariance matrices.

$${\text{E}}\left[ {{\mathbf{p}}\left( {{\text{n}} - 1} \right){\mathbf{p}}^{\text{T}} \left( {{\text{n}} - 1} \right) = {\mathbf{P}}\left( {{\text{n}} - 1} \right) , {\text{E}}} \right[{\mathbf{q}}\left( {\text{n}} \right){\mathbf{q}}^{\text{T}} \left( {\text{n}} \right)] = {\mathbf{Q}}\left( {\text{n}} \right)$$
(12)

In general, Kalman filter includes the following two steps:

Step 1: Predict:

The prior mean and covariance matrix are given by

$${\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right) = {\mathbf{A}}\left( {{\text{n}} - 1} \right){\hat{\mathbf{s}}}\left( {{\text{n}} - 1 | {\text{n}} - 1} \right)$$
(13)
$${\mathbf{C}}\left( {{\text{n|n}} - 1} \right) = {\mathbf{A}}\left( {{\text{n}} - 1} \right){\mathbf{C}}\left( {{\text{n}} - 1 | {\text{n}} - 1} \right) {\mathbf{A}}^{\text{T}} \left( {{\text{n}} - 1} \right) + {\mathbf{P}}\left( {{\text{n}} - 1} \right)$$
(14)

Step 2: Update:

The KF gain is computed as

$${\mathbf{N}}\left( {\text{n}} \right) = {\mathbf{C}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right)\left( {{\mathbf{B}}\left( {\text{n}} \right){\mathbf{C}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right) + {\mathbf{Q}}\left( {\text{n}} \right)} \right)^{ - 1}$$
(15)

The posterior state is equal to the prior state plus the innovation weighted by the KF gain,

$${\hat{\mathbf{s}}}\left( {\text{n|n}} \right) = {\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right) + {\mathbf{N}}\left( {\text{n}} \right)\left( {{\mathbf{m}}\left( {\text{n}} \right) - {\mathbf{B}}\left( {\text{n}} \right){\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)} \right)$$
(16)

Additionally, the posterior covariance is recursively updated as shown in Eq. (12)

$${\mathbf{C}}\left( {\text{n|n}} \right) = \left( {{\mathbf{I}} - {\mathbf{N}}\left( {\text{n}} \right){\mathbf{B}}\left( {\text{n}} \right)} \right){\mathbf{C}}\left( {{\text{n|n}} - 1} \right)\left( {{\mathbf{I}} - {\mathbf{N}}\left( {\text{n}} \right){\mathbf{B}}\left( {\text{n}} \right)} \right)^{\text{T}} + {\mathbf{N}}\left( {\text{n}} \right){\mathbf{Q}}\left( {\text{n}} \right){\mathbf{N}}^{\text{T}} \left( {\text{n}} \right)$$
(17)

4 Cross-correntropy Kalman filter

Traditional Kalman filter works well under Gaussian noises, but its performance may degrade significantly under non-Gaussian noises, especially when the underlying system is disturbed by impulsive noises. The main reason for this is that the KF is developed based on the MMSE criterion (Umamaheswaran et al. 2019), which captures only the second order statistics of the error signal and is sensitive to large outliers. To address this problem, in this work we use the cross correntropy criterion to derive a new Kalman filter named as Cross Correntropy Kalman Filter (CCKF), which may perform much better in non-Gaussian noise environments (Liu et al. 2007; Julier et al. 2000), as cross correntropy contains second and higher order moments of the error (Chena et al. 2017). The suggested Cross-Correntropy Kalman Filter (CCKF) algorithm will include a number of steps shown in Fig. 2.

Fig. 2
figure 2

Cross-correntropy Kalman filter computational flow diagram

4.1 Algorithm derivation

For the linear model described in the previous section, we have

$$\left[ {\begin{array}{*{20}c} {{\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)} \\ {{\mathbf{m}}\left( {\text{n}} \right)} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\mathbf{I}} \\ {{\mathbf{B}}\left( {\text{n}} \right)} \\ \end{array} } \right]{\mathbf{s}}\left( {\text{n}} \right) + {\text{u}}\left( {\text{n}} \right)$$
(18)

where, I represents identity matrix and u(n) is \({\text{u}}\left( {\text{n}} \right) = \left[ {\begin{array}{*{20}c} { - \left( {{\mathbf{s}}\left( {\text{n}} \right) - {\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)} \right)} \\ {{\mathbf{q}}\left( {\text{n}} \right)} \\ \end{array} } \right]\)

With

$${\text{E}}\left[ {{\text{u}}\left( {\text{n}} \right){\text{u}}^{\text{T}} \left( {\text{n}} \right)} \right] = \left[ {\begin{array}{*{20}c} {{\mathbf{C}}\left( {{\text{n|n}} - 1} \right)} & 0 \\ 0 & {{\mathbf{Q}}\left( {\text{n}} \right)} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {{\mathbf{D}}_{\text{c}} \left( {{\text{n|n}} - 1} \right){\mathbf{D}}_{\text{c}}^{\text{T}} \left( {{\text{n|n}} - 1} \right)} & 0 \\ 0 & {{\mathbf{D}}_{\text{q}} \left( {\text{n}} \right){\mathbf{D}}_{\text{q}}^{\text{T}} \left( {\text{n}} \right)} \\ \end{array} } \right] = {\mathbf{D}}\left( {\text{n}} \right){\mathbf{D}}^{\text{T}} \left( {\text{n}} \right)$$
(19)

where \({\mathbf{D}}\left( {\text{n}} \right)\) can be obtained by Cholesky decomposition of \({\text{E}}[{\text{u}}\left( {\text{n}} \right){\text{u}}^{\text{T}} \left( {\text{n}} \right)\)]. Left multiplying both sides of Eq. (18) by \({\mathbf{B}}^{ - 1} \left( {\text{k}} \right),\) we get

$${\mathbf{F}}\left( {\text{n}} \right) = {\mathbf{V}}\left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right) + {\mathbf{e}}\left( {\text{n}} \right)$$
(20)

where, \({\mathbf{F}}\left( {\text{n}} \right) = {\mathbf{D}}^{ - 1} \left( {\text{n}} \right)\left[ {\begin{array}{*{20}c} {{\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)} \\ {{\mathbf{m}}\left( {\text{n}} \right)} \\ \end{array} } \right]\), \({\mathbf{V}}\left( {\text{n}} \right) = {\mathbf{D}}^{ - 1} \left( {\text{n}} \right)\left[ {\begin{array}{*{20}c} {\mathbf{I}} \\ {{\mathbf{B}}\left( {\text{n}} \right)} \\ \end{array} } \right],\) \({\mathbf{e}}\left( {\text{n}} \right) = {\mathbf{D}}^{ - 1} \left( {\text{n}} \right){\text{u}}\left( {\text{n}} \right)\), since \({\text{E}}\left[ {{\mathbf{e}}\left( {\text{n}} \right){\mathbf{e}}^{\text{T}} \left( {\text{n}} \right)} \right] = {\mathbf{I}},\)

Here,\({\mathbf{e}}\left( {\text{n}} \right)\) is a white residual error.

Now we propose the following cross-correntropy based cost function

$${\text{Z}}_{\text{L}} \left( {{\mathbf{s}}\left( {\text{n}} \right)} \right) = \frac{1}{\text{L}}\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} {{\text{J}}_{\upsigma}} \left( {{\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right)} \right)$$
(21)

where, \({\text{f}}_{\text{i}} \left( {\text{n}} \right)\) is the ith element of \({\mathbf{F}}\left( {\text{n}} \right)\), \({\mathbf{v}}_{\text{i}} \left( {\text{n}} \right)\) is the ith row of \({\mathbf{V}}\left( {\text{n}} \right)\), and \({\text{L}} = {\text{a}} + {\text{b }}\) is the dimension of \({\mathbf{F}}\left( {\text{n}} \right) .\)

Then under cross correntropy, the optimal estimate of \({\mathbf{s}}\left( {\text{n}} \right)\) is

$${\hat{\mathbf{s}}}\left( {\text{n}} \right) = {\text{argmax}}_{{{\mathbf{s}}\left( {\text{n}} \right)}} {\text{Z}}_{\text{L}} \left( {{\mathbf{s}}\left( {\text{n}} \right)} \right) = {\text{argmax}}_{{{\mathbf{s}}\left( {\text{n}} \right)}} \mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} {{\text{J}}_{\upsigma}} \left( {{\text{e}}_{\text{i}} \left( {\text{n}} \right)} \right)$$
(22)

where \({\text{e}}_{\text{i}} \left( {\text{n}} \right)\) is the ith element of \({\mathbf{e}}\left( {\text{n}} \right):\)

$${\text{e}}_{\text{i}} \left( {\text{n}} \right) = {\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right)$$
(23)

The optimal solution can thus be obtained by solving

$$\frac{{\partial {\text{Z}}_{\text{L}} \left( {{\mathbf{s}}\left( {\text{n}} \right)} \right)}}{{\partial {\mathbf{s}}\left( {\text{n}} \right)}} = \mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} [{\text{J}}_{{\sigma }} \left( {{\text{e}}_{\text{i}} \left( {\text{n}} \right){\mathbf{v}}_{\text{i}}^{\text{T}} ({\text{n}}} \right)\left( {{\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right))} \right] = 0$$
(24)

It follows easily that

$$\begin{aligned} {\mathbf{s}}\left( {\text{n}} \right) = & \left( {\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} [{\text{J}}_{\upsigma} \left( {{\text{e}}_{\text{i}} \left( {\text{n}} \right){\mathbf{v}}_{\text{i}}^{\text{T}} \left( {\text{n}} \right){\mathbf{v}}_{\text{i}} \left( {\text{n}} \right)} \right]} \right)^{ - 1} \\ \times \left( {\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} [{\text{J}}_{\upsigma} \left( {{\text{e}}_{\text{i}} \left( {\text{n}} \right){\mathbf{v}}_{\text{i}}^{\text{T}} \left( {\text{n}} \right){\text{f}}_{\text{i}} \left( {\text{n}} \right)} \right]} \right) \\ \end{aligned}$$
(25)

Since \({\text{e}}_{\text{i}} \left( {\text{n}} \right) = {\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right)\), the optimal solution Eq. (25) is actually a fixed-point equation (Agarwal et al. 2001; Chena et al. 2017) of \({\mathbf{s}}\left( {\text{n}} \right)\) and this can be rewritten as

$${\mathbf{s}}\left( {\text{n}} \right) = {\text{g}}\left( {{\mathbf{s}}\left( {\text{n}} \right)} \right)$$
(26)

With

$${\text{g}}\left( {{\mathbf{s}}\left( {\text{n}} \right)} \right) = \left( {\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} [{\text{J}}_{\upsigma} \left( {{\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right){\mathbf{v}}_{\text{i}}^{\text{T}} \left( {\text{n}} \right){\mathbf{v}}_{\text{i}} \left( {\text{n}} \right)} \right]} \right)^{ - 1} \times \left( {\mathop \sum \limits_{{{\text{i}} = 1}}^{\text{L}} [{\text{J}}_{\upsigma} \left( {{\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\mathbf{s}}\left( {\text{n}} \right)){\mathbf{v}}_{\text{i}}^{\text{T}} \left( {\text{n}} \right){\text{f}}_{\text{i}} \left( {\text{n}} \right)} \right]} \right)$$

A fixed-point iterative algorithm can be readily obtained as

$${\hat{\mathbf{s}}}\left( {\text{n}} \right)_{{{\text{t}} + 1}} = {\text{g}}\left( {{\hat{\mathbf{s}}}\left( {\text{n}} \right)_{\text{t}} } \right)$$
(27)

where, \({\hat{\mathbf{s}}}\left( {\text{n}} \right)_{\text{t}}\) denotes the solution at the fixed point iteration ‘t’.

The Eq. (25) is a fixed-point equation can be further represented as

$${\mathbf{s}}\left( {\text{n}} \right) = \left( {{\mathbf{V}}^{\text{T}} \left( {\text{n}} \right){\mathbf{H}}\left( {\text{n}} \right){\mathbf{V}}\left( {\text{n}} \right)} \right)^{ - 1} {\mathbf{V}}^{\text{T}} \left( {\text{n}} \right){\mathbf{H}}\left( {\text{n}} \right){\mathbf{F}}\left( {\text{n}} \right)$$
(28)

where \({\mathbf{H}}\left( {\text{n}} \right) = \left[ {\begin{array}{*{20}c} {{\mathbf{H}}_{\text{x}} \left( {\text{n}} \right)} & 0 \\ 0 & {{\mathbf{H}}_{\text{y}} \left( {\text{n}} \right)} \\ \end{array} } \right],\)

with \({\mathbf{H}}_{{\text{x}}} \left( {\text{n}} \right) = {\text{diag}}\left( {{\text{J}}_{\sigma } \left( {{\text{e}}_{1} \left( {\text{n}} \right)} \right), \ldots \ldots \ldots {\text{J}}_{\sigma } \left( {{\text{e}}_{{\text{a}}} \left( {\text{n}} \right)} \right)} \right),\;{\mathbf{H}}_{{\text{y}}} \left( {\text{n}} \right) = {\text{diag}}\left( {{\text{J}}_{\sigma } \left( {{\text{e}}_{{{\text{a}} + 1}} \left( {\text{n}} \right)} \right), \ldots \ldots \ldots {\text{J}}_{\sigma } \left( {{\text{e}}_{{{\text{a}} + {\text{b}}}} \left( {\text{n}} \right)} \right)} \right)\)

Equation (28) can be further expressed as follows

$${\mathbf{s}}\left( {\text{n}} \right) = {\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right) + {\tilde{\mathbf{N}}}\left( {\text{n}} \right)\left( {{\mathbf{m}}\left( {\text{n}} \right) - \left( {\text{n}} \right){\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)} \right)$$
(29)

where,

$$\left. {\begin{array}{*{20}c} {{\bar{\mathbf{N}}}\left( {\text{n}} \right) = {\bar{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right)\left( {{\mathbf{B}}\left( {\text{n}} \right){\bar{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right) + {\bar{\mathbf{Q}}}\left( {\text{n}} \right)} \right)^{ - 1} } \\ { {\bar{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right) = {\mathbf{D}}_{\text{c}} \left( {{\text{n|n}} - 1} \right){\mathbf{H}}_{\text{x}}^{ - 1} \left( {\text{n}} \right){\mathbf{D}}_{\text{c}}^{\text{T}} \left( {{\text{n|n}} - 1} \right)} \\ {{\bar{\mathbf{Q}}}\left( {\text{n}} \right) = {\mathbf{D}}_{\text{q}} \left( {\text{n}} \right){\mathbf{H}}_{\text{y}}^{ - 1} \left( {\text{n}} \right){\mathbf{D}}_{\text{q}}^{\text{T}} \left( {\text{n}} \right)} \\ \end{array} } \right\}$$
(30)

4.2 Steps in computing the cross-correntropy Kalman filter

Of course, Eq. (29) is also a fixed-point equation of \({\mathbf{s}}\left( {\text{n}} \right)\) because \({\bar{\mathbf{N}}}\left( {\text{n}} \right))\) depends on \({\bar{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right)\) and \({\bar{\mathbf{Q}}}\left( {\text{n}} \right)\), both related to \({\mathbf{s}}\left( {\text{n}} \right)\) via \({\mathbf{H}}_{\text{x}} \left( {\text{n}} \right)\) and \({\mathbf{H}}_{\text{y}} \left( {\text{n}} \right)\), respectively. The optimal solution of Eq. (29) depends also on the prior estimate \({\hat{\mathbf{s}}}\left( {{\text{n}} - 1 | {\text{n}} - 1} \right)\),which can be calculated by Eq. (13) using the latest estimate \({\hat{\mathbf{s}}}\left( {{\text{n}} - 1 | {\text{n}} - 1} \right)\).

With the above derivations, we summarize the proposed CCKF algorithm as follows:

Step 1:

Choose a proper kernel bandwidth σ and a small positive number ε; Set an initial estimate \(\hat{\varvec{s}}\left( {0 |0} \right)\) and an initial covariance matrix \(\varvec{C}\left( {0 |0} \right)\); Let n = 1;

Step 2:

Use Eqs. (13) and (14) to obtain \({\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)\) and \({\mathbf{C}}\left( {{\text{n|n}} - 1} \right)\), and use Cholesky decomposition to obtain \({\mathbf{D}}_{\text{c}} \left( {{\text{n|n}} - 1} \right)\)

Step 3:

Let t = 1 and \({\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}} = {\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right)\), where \({\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}}\) denotes the estimated state at the fixed-point iteration t;

Step 4:

Use Eqs. (31) to (37) to Compute \({\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}}\)

$${\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}} = {\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right) + {\tilde{\mathbf{N}}}\left( {\text{n}} \right)({\text{m}}\left( {\text{n}} \right) - {\mathbf{B}}\left( {\text{n}} \right){\hat{\mathbf{s}}}\left( {{\text{n|n}} - 1} \right))$$
(31)

With

$${\tilde{\mathbf{N}}}\left( {\text{n}} \right) = {\tilde{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right)\left( {{\mathbf{B}}\left( {\text{n}} \right){\tilde{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right){\mathbf{B}}^{\text{T}} \left( {\text{n}} \right) + {\tilde{\mathbf{Q}}}\left( {\text{n}} \right)} \right) ^{ - 1}$$
(32)
$${\tilde{\mathbf{C}}}\left( {{\text{n|n}} - 1} \right) = {\mathbf{D}}_{\text{c}} \left( {{\text{n|n}} - 1} \right){\tilde{\mathbf{H}}}_{\text{x}}^{ - 1} \left( {\text{n}} \right){\mathbf{D}}_{\text{c}}^{\text{T}} \left( {{\text{n|n}} - 1} \right)$$
(33)
$${\tilde{\mathbf{Q}}}\left( {\text{n}} \right) = {\mathbf{D}}_{\text{q}} \left( {\text{n}} \right){\tilde{\mathbf{H}}}_{\text{y}}^{ - 1} \left( {\text{n}} \right){\mathbf{D}}_{\text{q}}^{\text{T}} \left( {\text{n}} \right)$$
(34)
$${\tilde{\mathbf{H}}}_{\text{x}} \left( {\text{n}} \right) = {\text{diag}}\left( {{\text{J}}_{\upsigma} \left( {{\tilde{\text{e}}}_{1} \left( {\text{n}} \right)} \right), \ldots \ldots \ldots {\text{J}}_{\upsigma} \left( {{\tilde{\text{e}}}_{\text{a}} \left( {\text{n}} \right)} \right)} \right)$$
(35)
$${\tilde{\mathbf{H}}}_{\text{b}} \left( {\text{n}} \right) = {\text{diag}}\left( {{\text{J}}_{\upsigma} \left( {{\tilde{\text{e}}}_{{{\text{a}} + 1}} \left( {\text{n}} \right)} \right), \ldots \ldots \ldots {\text{J}}_{\upsigma} \left( {{\tilde{\text{e}}}_{{{\text{a}} + {\text{b}}}} \left( {\text{n}} \right)} \right)} \right)$$
(36)
$${\tilde{\text{e}}}_{\text{i}} \left( {\text{n}} \right) = {\text{f}}_{\text{i}} \left( {\text{n}} \right) - {\mathbf{v}}_{\text{i}} \left( {\text{n}} \right){\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{{{\text{t}} - 1}}$$
(37)

Step 5: Compare the estimation of the current step and the estimation of the last step. If Eq. (38) holds, set \({\hat{\mathbf{s}}}\left( {\text{n|n}} \right) = {\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}}\) and continue to step (6). Otherwise, t + 1 → t, and go back to step (4).

$$\frac{{{\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{\text{t}} - {\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{{{\text{t}} - 1}} }}{{{\hat{\mathbf{s}}}\left( {\text{n|n}} \right)_{{{\text{t}} - 1}} }} \le \varepsilon$$
(38)

Step 6: Update the posterior covariance matrix by Eq. (39), \({\text{n}} + 1 \to {\text{n}}\) and go back to step (2).

$${\mathbf{C}}\left( {\text{n|n}} \right) = \left( {{\mathbf{I}} - {\tilde{\mathbf{N}}}\left( {\text{n}} \right){\mathbf{B}}\left( {\text{n}} \right)} \right){\mathbf{C}}\left( {{\text{n|n}} - 1} \right)\left( {{\mathbf{I}} - {\tilde{\mathbf{N}}}\left( {\text{n}} \right){\mathbf{B}}\left( {\text{n}} \right)} \right)^{\text{T}} + {\tilde{\mathbf{N}}}\left( {\text{n}} \right){\mathbf{Q}}\left( {\text{n}} \right){\tilde{\mathbf{N}}}^{\text{T}} \left( {\text{n}} \right)$$
(39)

The CCKF algorithm mainly involves Eqs. (13), (14), (31)–(37) and (39).

5 Simulation results & discussion

This section presents the simulation results obtained after the proposed method was utilized to estimate the position of a GPS receiver. The accuracy of the proposed method is compared against the accuracy of traditional Kalman filter. The raw GPS data, collected over C/A measurements from the dual frequency GPS receiver located at IISc, Bangalore (Lat/Lon: 13.01° N/77.56° E) are processed for Relativistic error and Satellite Clock biases. The data is sampled at the rate of 30 s. The data received on L1 (1575.42 MHz) frequency is only used for estimating the receiver position. The comparison of estimated receiver position, error in receiver position and smoothened positional error (w.r.t. X, Y, Z coordinates) logged over a day (approximately 22 h) are provided in the following figures for both the algorithms (KF & CCKF). Since this is a huge data set, estimated receiver position and error corresponding to X, Y, Z coordinates over a period of 10 epochs (randomly selected & collected for 30 s. each) is shown in Tables 1 and 2 respectively.

Table 1 Estimated receiver position (X, Y, Z coordinates) with KF and CCKF
Table 2 Error in receiver position for X, Y, Z coordinates with KF and CCKF

Figure 3 shows a comparison of the estimated receiver position with the true receiver position (Black solid line) for both algorithms (KF & CCKF). It can be clear that the estimated position with CCKF (Red Line) is closer to the true position. Figures 4 and 5 represents the estimated error curves whereas Figs. 6 and 7 represents the smoothened error curves over an hour due to both algorithms respectively (KF & CCKF). To ease graphical comparison, each figure also includes the corresponding mean value (dashed line) for both algorithms as a horizontal line. The comparison of the algorithms was carried out based on the following descriptive statistics calculated on the error curves: mean variance, standard deviation, maximum and minimum which are shown in Table 3.

Fig. 3
figure 3

Time vs. estimated receiver position with KF and CCKF

Fig. 4
figure 4

Time vs. estimated position error with KF

Fig. 5
figure 5

Time vs. estimated position error with CCKF

Fig. 6
figure 6

Time vs. smoothened position error with KF

Fig. 7
figure 7

Time vs. smoothened position error with CCKF

Table 3 Descriptive statistics of the error curves

Table 3 summarizes the corresponding descriptive statistics. The CCKF algorithm was observed to surpass the KF algorithm by providing high accuracy and low variance in position estimation. The CCKF showed a mean difference of position of \({\text{X}} = 11.24{\text{m}},\) \({\text{Y}} = 10.92\) m \({\text{Z}} = 1.94\) m and position variance difference of \({\text{var}}\left( {\text{X}} \right) = 17.85\) m, \({\text{var}}\left( {\text{Y}} \right) = 123.6\) m and \({\text{var}}\left( {\text{Z}} \right) = 10.38\) m over the KF algorithm. Also the GPS Statistical Accuracy Measures (SAM) for both the algorithms are calculated for the entire range of data (2640 epochs) and tabulated in Table 4. Various SAM (Statistics and its relationship to accuracy measure in GPS 2003; Sirish Kumar and Srilatha Indira Dutt 2019b) such as Circular Error Probability (CEP), Distance Root Mean Square (DRMS), Twice the Distance Root Mean Square (2DRMS),Spherical Error Probability (SEP), Mean Radial Spherical Error (MRSE), Spherical Accuracy Standard (SAS) are used in the evaluation of algorithms accuracy performance. Table 4 depicts the SAM of both the algorithms on IISC, Bangalore receiver and is given below.

Table 4 Comparison of statistical accuracy measures

It is obvious from the accuracy measures that the position estimated by the CCKF will be within 19.79 m from its true position with a probability of 0.99, where KF estimates the position within 29.10 m. In 2-D space, with the proposed CCKF algorithm, minimum of 33% improvement in accuracy is achieved over the traditional Kalman filter. Similarly, in 3-D space, minimum of 32% accuracy is achieved with proposed CCKF algorithm over the traditional Kalman filter. This shows the efficiency of the proposed algorithm over traditional KF. Note that the two parameters DRMS, 2DRMS are explained in terms of average squared error and the other two parameters CEP, SEP are defined directly from the position error distribution (the scatter). Thus, we can immediately associate these CEP & SEP with error probabilities. If we assume that the error distribution along any coordinate (X, Y, Z) is “normal” or Gaussian, then we can also derive probabilities associated with the DRMS and 2DRMS accuracy measures. (The normal or Gaussian distribution is the one to which the dispersion of the sum of a very large number of very small errors always converges). The two algorithms error probabilities corresponding to the X, Y, Z coordinates are depicted in Fig. 8.

Fig. 8
figure 8

Comparison of Gaussian distribution curve

Figure 8 shows the comparison of Gaussian distribution curve corresponding to the X Y, Z coordinates, (also known as the Normal distribution) is a probability distribution curve. Its bell-shaped curve is dependent on μ, the mean, and σ, the standard deviation (σ2 being the variance). The peak of the graph is always located at the mean and the area under the curve is always exactly equal to 1. 68% of all the values lie within one standard deviation of the mean as shown in Table 5.

Table 5 Comparison of error distribution statistics

Table 5 summarizes that the proposed algorithm achieved an error distribution with a higher peak and smaller dispersion corresponding to X, Y, Z coordinates when compared with the traditional Kalman filter. When GPS positions are logged over time, the positions are scattered over an area due to measurement errors. This dispersion of points is called a scatter plot, which GPS manufacturers use to characterize their equipments accuracy. The area within which the measurements or estimated parameters are likely to be is called the confidence region. Figure 9 shows the scatter plot of the horizontal point positions (i.e. X, Y) observed by the IISc, Bangalore GPS receiver for 22 h and its accuracy radii of CEP.

Fig. 9
figure 9

Horizontal position scatter plot with KF and CCKF

Figure 9 reveals that the CEP circle of CCKF is smaller than the CEP circle of KF and the receiver position is closer to the true receiver position, 50% of the time relative to the KF algorithm.

6 Conclusion

A new Kalman type filtering algorithm, called Cross Correntropy Kalman filter (CCKF), has been proposed in this paper. The CCKF is derived by using the correntropy criterion as the optimality criterion, instead of using the well-known minimum mean square error (MMSE) criterion. The propagation equations for the prior estimates of the state and covariance matrix in CCKF are the same as those in KF. However, different from the KF, the CCKF uses a novel fixed-point algorithm to update the posterior estimations. With a proper kernel bandwidth, the CCKF can outperform the KF significantly, especially when the underlying system is disturbed by some impulsive non-Gaussian noises. The proposed method was utilized to estimate the position of a GPS receiver located at IGS station:IISc, Bangolore (Lat/Lon: 13.01° N/77.56° E) and its performance was compared against traditional Kalman filter.

The estimated receiver position and error, along with its mean, standard deviation, and SAM obtained from the two algorithms i.e. KF and CCKF are assessed. In 2-D space, minimum of 33% improvement in accuracy and in 3-D space, minimum of 32% accuracy is achieved respectively with the proposed CCKF algorithm over the traditional Kalman filter. Hence from these results, it is concluded that the position estimated with CCKF is more accurate than KF. Interestingly, the mean position error recorded as a consequence of the CCKF and the KF algorithm is X = 24.10 m, Y = 15.33 m, Z = 4.28 m, and X = 35.34 m, Y = 26.25 m, and Z = 6.22 m. It is also evident that the CCKF results in estimates of the low variance position compared to the KF with a disparity in position deviation of \({\text{std}}\left( {\text{X}} \right) = 1.25\) m, \({\text{std}}\left( {\text{Y}} \right) = 5.63\) m and \({\text{std}}\left( {\text{Z}} \right) = 1.43\) m. The results show that the proposed method (CCKF) outperformed traditional Kalman filter and is suitable for real time defense applications like navigation of ships, landing of CAT I and II aircrafts etc. over the Indian subcontinent.