0.3.0
Loading...
Searching...
No Matches
Single Point Positioning using Kalman Filtering

Algorithm - Extended Kalman Filter

  • Prediction

    \begin{equation} \label{eq:eq-SppKF-KfAlgorithm-prediction}
\begin{aligned}
  \hat{\boldsymbol{x}}_{n \mid n-1} &=\boldsymbol{\Phi}_{n-1 \mid n-1} \cdot \hat{\boldsymbol{x}}_{n-1 \mid n-1} \\
  \boldsymbol{P}_{n \mid n-1} &=\boldsymbol{\Phi}_{n-1 \mid n-1} \boldsymbol{P}_{n-1 \mid n-1} \boldsymbol{\Phi}_{n-1 \mid n-1}^{T}+\boldsymbol{Q}
\end{aligned}
\end{equation}

  • Kalman Gain

    \begin{equation} \label{eq:eq-SppKF-KfAlgorithm-gain}
\boldsymbol{K}_{n}=\boldsymbol{P}_{n \mid n-1} \boldsymbol{H}_{n}^{T}\left(\boldsymbol{H}_{n} \boldsymbol{P}_{n \mid n-1} \boldsymbol{H}_{n}^{T}+\boldsymbol{R}_{n}\right)^{-1}
\end{equation}

  • Update

    \begin{equation} \label{eq:eq-SppKF-KfAlgorithm-update}
\begin{aligned}
  \hat{\boldsymbol{x}}_{n \mid n}&=\hat{\boldsymbol{x}}_{n \mid n-1}+\boldsymbol{K}_{n}\left(\Delta \boldsymbol{y}_{n}-\boldsymbol{H}_{n} \left(\hat{\boldsymbol{x}}_{n \mid n-1} - \hat{\boldsymbol{x}}_{n-1 \mid n-1}\right)\right) \\
  \boldsymbol{P}_{n \mid n}&=\left(\boldsymbol{I}-\boldsymbol{K}_{n} \boldsymbol{H}_{n}\right) \boldsymbol{P}_{n \mid n-1}
\end{aligned}
\end{equation}

Unknowns

Pseudorange and Doppler observations are processed together.

\begin{equation} \label{eq:eq-SppKF-unknowns}
\mathbf{x}^e =
  \begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
    \matrix (m)[matrix of math nodes,left delimiter={[},right delimiter={]},
                nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em] {
      \mathbf{r}^e \\
      \mathbf{v}^e \\
      dt_R \\
      d\dotup{t}_R \\
      dt_{ISB}^{S_2 \rightarrow S_1} \\
      d\dotup{t}_{ISB}^{S_2 \rightarrow S_1} \\
      \vdots \\
      dt_{ISB}^{S_o \rightarrow S_1} \\
      d\dotup{t}_{ISB}^{S_o \rightarrow S_1} \\
    };
    \draw [dash dot] (-0.75,1.9) -- (0.75,1.9);

  \end{tikzpicture}
  =
  \begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
    \matrix (m)[matrix of math nodes,left delimiter={[},right delimiter={]},
                nodes={rectangle,text width=20em,align=center},row sep=0.3em, column sep=0.4em] {
      \text{Position [m]} \\
      \text{Velocity [m/s]} \\
      \text{Receiver clock error [m]} \\
      \text{Receiver clock drift [m/s]} \\
      \text{Inter-system clock error (System 2 to 1) [m]} \\
      \text{Inter-system clock drift (System 2 to 1)  [m/s]} \\
      \vdots \\
      \text{Inter-system clock error (System o to 1) [m]} \\
      \text{Inter-system clock drift (System o to 1)  [m/s]} \\
    };
    \draw [dash dot] (-3.75,1.9) -- (3.75,1.9);

  \end{tikzpicture}
\end{equation}

Process Model

System Model

\begin{equation} \label{eq:eq-SppKF-processModel-systemModel}
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
  \matrix (m)[matrix of math nodes,left delimiter={(},right delimiter={)},nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em]
  {
    \boldsymbol{v}^e \\
    \boldsymbol{a}^e \\
    d\dotup{t}_R \\
    d\ddot{t}_R \\
    d\dotup{t}_{ISB}^{S_2 \rightarrow S_1} \\
    d\dotup{t}_{ISB}^{S_2 \rightarrow S_1} \\
    \vdots \\
    d\dotup{t}_{ISB}^{S_o \rightarrow S_1} \\
    d\dotup{t}_{ISB}^{S_o \rightarrow S_1} \\
  };
  \draw[decorate,transform canvas={yshift=.5em},thick] (m-1-1.north west) -- node[above=2pt] {$\boldsymbol{\dotup{x}}^e$} (m-1-1.north east);
  \draw [dash dot] (-0.75,1.9) -- (0.75,1.9);

\end{tikzpicture}
=
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
  \matrix (m)[matrix of math nodes,left delimiter={(},right delimiter={)},
              nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em]
  {
    \mathbf{0}_3     & \mathbf{I}_3     & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \dots  & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} \\
    \mathbf{0}_3     & \mathbf{0}_3     & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \dots  & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         1        &         0        &         0        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         1        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         0        &         0        \\
    \vdots      &      \vdots      &      \vdots      &      \vdots      &      \vdots      &      \vdots      & \ddots &      \vdots      &      \vdots      \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         0        &         1        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         0        &         0        \\
  };
  \draw[decorate,transform canvas={yshift=.5em},thick] (m-1-1.north west) -- node[above=2pt] {$\mathbf{F}$} (m-1-9.north east);
  \draw [dash dot] (-5.75,1.9) -- (5.75,1.9);
  \draw [dash dot] (-3.2,3.1) -- (-3.2,-3.2);

\end{tikzpicture}
\cdot
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
  \matrix (m)[matrix of math nodes,left delimiter={(},right delimiter={)},
              nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em]
  {
    \mathbf{r}^e \\
    \mathbf{v}^e \\
    dt_R \\
    d\dotup{t}_R \\
    dt_{ISB}^{S_2 \rightarrow S_1} \\
    d\dotup{t}_{ISB}^{S_2 \rightarrow S_1} \\
    \vdots \\
    dt_{ISB}^{S_o \rightarrow S_1} \\
    d\dotup{t}_{ISB}^{S_o \rightarrow S_1} \\
  };
  \draw[decorate,transform canvas={yshift=.5em},thick] (m-1-1.north west) -- node[above=2pt] {$\mathbf{x}^e$} (m-1-1.north east);
  \draw [dash dot] (-0.75,1.9) -- (0.75,1.9);

\end{tikzpicture}
+
\mathbf{G} \cdot \boldsymbol{w}
\end{equation}

([17] Groves, ch. 9.4.2.2, eq. 9.148, p. 415)

State transition matrix

Higher order terms are zero, so the exact solution is

\begin{equation} \label{eq:eq-SppKF-processModel-stateTransitionMatrix}
\mathbf{\Phi} = \text{exp}(\mathbf{F} \tau_s) = \mathbf{I} + \mathbf{F}\tau_s
\end{equation}

([17] Groves, ch. 9.4.2.2, eq. 9.150, p. 416)

Process noise covariance matrix

Clock modeling

  • Phase drift $ \sigma_{c\phi} $ (random walk) and Frequency drift $ \sigma_{cf} $ (integrated random walk)

    \begin{equation} \label{eq:eq-SppKF-processModel-processNoise-clock}
S_{c f}^a = \frac{\sigma^2\left(\delta \dotup{\rho}_c^a\left(t+\tau_s\right)-\delta \dotup{\rho}_c^a(t)\right)}{\tau_s} \quad S_{c \phi}^a = \frac{\sigma^2\left(\delta \rho_c^a\left(t+tau_s\right)-\delta \rho_c^a(t)-\delta \dotup{\rho}_c^a(t) \tau_s\right)}{\tau_s}
\end{equation}

  • Typical values for a TCXO are $ S_{cf} \approx 0.04 \text{ m}^2 \text{s}^{-3} $ and $ S_{c\phi} \approx 0.01 \text{ m}^2 \text{s}^{-1} $

Velocity change due to user motion (Variances)
$  \mathbf{S}_a^n
  =
  \begin{bmatrix}
    S_{aH} & 0 & 0 \\
    0 & S_{aH} & 0 \\
    0 & 0 & S_{aV} \\
  \end{bmatrix}
$

\begin{equation} \label{eq:eq-SppKF-processModel-processNoise-userMotion}
\begin{aligned}
& S_{a H}=\frac{\sigma^2\left(v_{e b, N}^n\left(t+\tau_s\right)-v_{e b, N}^n(t)\right)}{\tau_s}=\frac{\sigma^2\left(v_{e b, E}^n\left(t+\tau_s\right)-v_{e b, E}^n(t)\right)}{\tau_s} \\
& S_{a V}=\frac{\sigma^2\left(v_{e b, D}^n\left(t+\tau_s\right)-v_{e b, D}^n(t)\right)}{\tau_s}
\end{aligned}
\end{equation}

  • Suitable values for $ S_{aH} $ are around
    • $ 1 \text{ m}^2 \text{s}^{-3} $ for a pedestrian or ship,
    • $ 10 \text{ m}^2 \text{s}^{-3} $ for a car,
    • $ 100 \text{ m}^2 \text{s}^{-3} $ for a military aircraft.
  • The vertical acceleration PSD $ S_{aV} $ is usually smaller

([17] Groves, ch. 9.4.2.2, p. 416-418)

Van Loan method

Noise input matrix

\begin{equation} \label{eq:eq-SppKF-processModel-processNoise-vanLoan-noiseInput}
\mathbf{G}
=
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
  \matrix (m)[matrix of math nodes,left delimiter={[},right delimiter={]},
              nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em]
  {
    \mathbf{0}_3     & \mathbf{0}_3     & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \dots  & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} \\
    \mathbf{0}_3     & \mathbf{C}_n^e   & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \dots  & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         1        &         0        &         0        &         0        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         1        &         0        &         0        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         1        &         0        & \dots  &         0        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         1        & \dots  &         0        &         0        \\
         \vdots      &      \vdots      &      \vdots      &      \vdots      &      \vdots      &      \vdots      & \ddots &      \vdots      &      \vdots      \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         1        &         0        \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &         0        &         0        &         0        &         0        & \dots  &         0        &         1        \\
  };
  \draw [dash dot] (-5.75,1.8) -- (5.75,1.8);
  \draw [dash dot] (-3.2,3.1) -- (-3.2,-3.1);

\end{tikzpicture}
\end{equation}

Noise scale matrix

\begin{equation} \label{eq:eq-SppKF-processModel-processNoise-vanLoan-noiseScale}
\mathbf{W}
=
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,decoration=brace]
  \matrix (m)[matrix of math nodes,left delimiter={[},right delimiter={]},
              nodes={rectangle,text width=2.5em,align=center},row sep=0.3em, column sep=0.4em]
  {
    \mathbf{0}_3     & \mathbf{0}_3       & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} &               \mathbf{0}_{3,1}              &             \mathbf{0}_{3,1}             & \dots  &               \mathbf{0}_{3,1}              &              \mathbf{0}_{3,1}            \\
    \mathbf{0}_3     & \mathbf{S}_{a}^{n} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} &               \mathbf{0}_{3,1}              &             \mathbf{0}_{3,1}             & \dots  &               \mathbf{0}_{3,1}              &              \mathbf{0}_{3,1}            \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   & \sigma_{c\phi}^2 &         0        &                       0                     &                     0                    & \dots  &                       0                     &                      0                   \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   &         0        &   \sigma_{cf}^2  &                       0                     &                     0                    & \dots  &                       0                     &                      0                   \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   &         0        &         0        & {\sigma_{ISB,\phi}^{S_2 \rightarrow S_1}}^2 &                     0                    & \dots  &                       0                     &                      0                   \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   &         0        &         0        &                       0                     & {\sigma_{ISB,f}^{S_2 \rightarrow S_1}}^2 & \dots  &                       0                     &                      0                   \\
         \vdots      &      \vdots        &      \vdots      &      \vdots      &                    \vdots                   &                  \vdots                  & \ddots &                    \vdots                   &                   \vdots                 \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   &         0        &         0        &                       0                     &                     0                    & \dots  & {\sigma_{ISB,\phi}^{S_o \rightarrow S_1}}^2 &                      0                   \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3}   &         0        &         0        &                       0                     &                     0                    & \dots  &                       0                     & {\sigma_{ISB,f}^{S_o \rightarrow S_1}}^2 \\
  };
  \draw [dash dot] (-5.75,2.25) -- (5.75,2.25);
  \draw [dash dot] (-3.2,3.65) -- (-3.2,-3.65);

\end{tikzpicture}
\end{equation}

Van Loan algorithm

  1. Form a $ 2n \times 2n $ matrix called $ \mathbf{A} $ ( $ n $ is the dimension of $ \mathbf{x} $ and $ \mathbf{W} $ is the power spectral density of the noise $ W(t) $)

    \begin{equation} \label{eq:ep-SppKF-processNoise-vanLoan-A}
  \mathbf{A} = \begin{bmatrix} -\mathbf{F} & \mathbf{G} \mathbf{W} \mathbf{G}^T \\
                                \mathbf{0} &            \mathbf{F}^T          \end{bmatrix} \Delta t
\end{equation}

  2. Calculate the exponential of $ \mathbf{A} $

    \begin{equation} \label{eq:eq-SppKF-processNoise-vanLoan-expA}
\mathbf{B} = \text{expm}(\mathbf{A})
= \left[ \begin{array}{c:c}
    \dots      & \mathbf{\Phi}^{-1} \mathbf{Q} \\[2mm]
    \hdashline
    \mathbf{0} & \mathbf{\Phi}^T
  \end{array} \right]
= \left[ \begin{array}{c:c}
    \mathbf{B}_{11} & \mathbf{B}_{12} \\[2mm]
    \hdashline
    \mathbf{B}_{21} & \mathbf{B}_{22}
  \end{array} \right]
\end{equation}

  3. Calculate the state transition matrix $ \mathbf{\Phi} $ as

    \begin{equation} \label{eq:eq-SppKF-processNoise-vanLoan-Phi}
  \mathbf{\Phi} = \mathbf{B}_{22}^T
\end{equation}

  4. Calculate the process noise covariance matrix $ \mathbf{Q} $ as

    \begin{equation} \label{eq:eq-SppKF-processNoise-vanLoan-Q}
  \mathbf{Q} = \mathbf{\Phi} \mathbf{B}_{12}
\end{equation}

Uses GUI input values for $ S_{aH} $, $ S_{cf} $ and $ S_{c\phi} $.

Groves

\begin{equation} \label{eq:eq-SppKF-processModel-processNoise-groves}
\mathbf{Q} =
\left[\begin{array}{cc:cc}
  \frac{1}{3} S_a^\gamma \tau_s^3 & \frac{1}{2} S_a^\gamma \tau_s^2 & 0_{3,1} & 0_{3,1} \\
  \frac{1}{2} S_a^\gamma \tau_s^2 & S_a^\gamma \tau_s & 0_{3,1} & 0_{3,1} \\
  \hdashline
  0_{1,3} & 0_{1,3} & S_{c \phi}^a \tau_s+\frac{1}{3} S_{c f}^a \tau_s^3 & \frac{1}{2} S_{c f}^a \tau_s^2 \\
  0_{1,3} & 0_{1,3} & \frac{1}{2} S_{c f}^a \tau_s^2 & S_{c f}^a \tau_s
  \end{array}\right]
\end{equation}

Uses calculated values for $ S_{aH} $, $ S_{cf} $ and $ S_{c\phi} $.

([17] Groves, ch. 9.4.2.2, eq. 9.152, p. 417-418)

The inter-system errors and drifts are assumed constant. Note: Groves does not estimate an inter-system drift ([17] Groves, Appendix G.8, p. G-23 - G-24), but we do for all models.

Measurement Model

Measurement innovation

See Measurement innovation

Measurement sensitivity matrix

See Design matrix / Measurement sensitivity matrix

In detail for Kalman Filtering

\begin{equation} \label{eq:eq-SppKF-measurementModel-sensitivityMatrix}
\begin{aligned}
\mathbf{H}_k
&=
\left[\begin{array}{cccccccccc}
  \frac{-x^s+x_r}{\rho_s^s} & \frac{-y^s+y_r}{\rho_s^s} & \frac{-z^s+z_r}{\rho_r^s} & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
  \frac{-x^s+x_r}{\rho_r^s} & \frac{-y^s+y_r}{\rho_r^s} & \frac{-z^s+z_r}{\rho_r^s} & 0 & 0 & 0 & 1 & 0 & 1 & 0 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots \\
  \hdashline
  -\frac{\mathbf{v}_x^s-\mathbf{v}_{r, x}}{\rho_r^s} & -\frac{\mathbf{v}_y^s-\mathbf{v}_{r, y}}{\rho_r^s} & -\frac{\mathbf{v}_z^s-\mathbf{v}_{r, z}}{\rho_r^s} & -\frac{x^s-x_r}{\rho_r^s} & -\frac{y^s-y_r}{\rho_r^s} & -\frac{z^s-z_r}{\rho_r^s} & 0 & 1 & 0 & 0 \\
  -\frac{\mathbf{v}_x^s-\mathbf{v}_{r, x}^s}{\rho_r^s} & -\frac{\mathbf{v}_y^s-\mathbf{v}_{r, y}^s}{\rho_r^s} & -\frac{\mathbf{v}_z^s-\mathbf{v}_{r_r}^s}{\rho_r^s} & -\frac{x^s-x_r}{\rho_r^s} & -\frac{y^s-y_r}{\rho_r^s} & -\frac{z^s-z_r}{\rho_r^s} & 0 & 1 & 0 & 1 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots
\end{array}\right] \\
&=
\left[\begin{array}{cccccccccc}
  -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
  -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 0 & 0 & 1 & 0 & 1 & 0 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots \\
  \hdashline
  -\frac{\mathbf{v}_x^s-\mathbf{v}_{r, x}}{\rho_r^s} & -\frac{\mathbf{v}_y^s-\mathbf{v}_{r, y}}{\rho_r^s} & -\frac{\mathbf{v}_z^s-\mathbf{v}_{r, z}}{\rho_r^s} & -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 1 & 0 & 0 \\
  -\frac{\mathbf{v}_x^s-\mathbf{v}_{r, x}^s}{\rho_r^s} & -\frac{\mathbf{v}_y^s-\mathbf{v}_{r, y}^s}{\rho_r^s} & -\frac{\mathbf{v}_z^s-\mathbf{v}_{r_r}^s}{\rho_r^s} & -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 1 & 0 & 1 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots
\end{array}\right] \\
&\approx
\left[\begin{array}{cccccccccc}
  -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
  -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 0 & 0 & 1 & 0 & 1 & 0 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots \\
  \hdashline
  0 & 0 & 0 & -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 1 & 0 & 0 \\
  0 & 0 & 0 & -u_{rs,x} & -u_{rs,y} & -u_{rs,z} & 0 & 1 & 0 & 1 \\
  \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots
\end{array}\right]
\end{aligned}
\end{equation}

([17] Groves, ch. 9.4.2.2, eq. 9.163, p. 420)

Measurement noise covariance matrix

See NAV::GnssMeasurementErrorModel

Initialization

  • State $ x $: from Single Point Positioning solution using weighted Least-squares estimation
  • Covariance matrix of state $ P $:
    • if more observations than unknowns: SPP solution using LSE
    • otherwise: GUI input

Inter system time difference reference system change

Case 1: New Sat System with higher priority found (GPS > GAL > GLO > ...)

Old state:

  • Observed GAL $ S_2 $, GLO $ S_3 $ and BDS $ S_4 $
  • Reference system: GAL $ S_2 $ New state:
  • Additionally observed GPS $ S_1 $
  • Reference system: GAL $ S_2 $ -> GPS $ S_1 $

First we need to wait one epoch, in order to estimate the new inter system differences $ { dt_{ISB}^{S_1 \rightarrow S_2}} $ and $ { d\dotup{t}_{ISB}^{S_1 \rightarrow S_2}} $ Then we can transform the state with a matrix $ \mathbf{D} $ with $ \mathbf{x}_{\text{new}} = \mathbf{D} \cdot \mathbf{x}_{\text{old}} $

\begin{equation}\begin{bmatrix}
    { \mathbf{r}_{r} } \\
    { \mathbf{v}_{r} } \\
    { dt_r} \\
    { d\dotup{t}_r} \\ \hdashline
    { dt_{ISB}^{S_3 \rightarrow S_1}} = { dt^{S_3}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_3 \rightarrow S_1}} = { d\dotup{t}^{S_3}} - { d\dotup{t}^{S_1}} \\
    { dt_{ISB}^{S_4 \rightarrow S_1}} = { dt^{S_4}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_4 \rightarrow S_1}} = { d\dotup{t}^{S_4}} - { d\dotup{t}^{S_1}} \\
    { dt_{ISB}^{S_2 \rightarrow S_1}} = { dt^{S_2}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_2 \rightarrow S_1}} = { d\dotup{t}^{S_2}} - { d\dotup{t}^{S_1}} \\ \hdashline
    { dt_{IFB}^{F_2 \rightarrow F_1}}
\end{bmatrix}_{\text{new}}
=
\overbrace{
  \left[\begin{array}{cccc:cccccc:c}
    \mathbf{I}_3     & \mathbf{0}_3     &   0   &   0   & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} &  0 \\
    \mathbf{0}_3     & \mathbf{I}_3     &   0   &   0   & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} &  0 \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   1   &   0   & 0 & 0 & 0 &  0 & -1 &  0 &  0 \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   1   & 0 & 0 & 0 &  0 &  0 & -1 &  0 \\[0.1em] \hdashline
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 1 & 0 & 0 &  0 & -1 &  0 &  0 \\[0.3em]
  \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 1 & 0 &  0 &  0 & -1 &  0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 0 & 1 &  0 & -1 &  0 &  0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 0 & 0 &  1 &  0 & -1 &  0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 0 & 0 &  0 & -1 &  0 &  0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 0 & 0 &  0 &  0 & -1 &  0 \\[0.3em] \hdashline
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & 0 & 0 & 0 &  0 &  0 &  0 &  1 \\[0.3em]
  \end{array}\right]
}^{\mathbf{D}}
\cdot
\begin{bmatrix}
    { \mathbf{r}_{r} } \\
    { \mathbf{v}_{r} } \\
    { dt_r} \\
    { d\dotup{t}_r} \\ \hdashline
    { dt_{ISB}^{S_3 \rightarrow S_2}} = { dt^{S_3}} - { dt^{S_2}} \\
    { d\dotup{t}_{ISB}^{S_3 \rightarrow S_2}} = { d\dotup{t}^{S_3}} - { d\dotup{t}^{S_2}} \\
    { dt_{ISB}^{S_4 \rightarrow S_2}} = { dt^{S_4}} - { dt^{S_2}} \\
    { d\dotup{t}_{ISB}^{S_4 \rightarrow S_2}} = { d\dotup{t}^{S_4}} - { d\dotup{t}^{S_2}} \\
    { dt_{ISB}^{S_1 \rightarrow S_2}} = { dt^{S_1}} - { dt^{S_2}} \\
    { d\dotup{t}_{ISB}^{S_1 \rightarrow S_2}} = { d\dotup{t}^{S_1}} - { d\dotup{t}^{S_2}} \\ \hdashline
    { dt_{IFB}^{F_2 \rightarrow F_1}}
\end{bmatrix}_{\text{old}}
\end{equation}

Case 2: No observation for reference system within an epoch

Old state:

  • Observed GPS $ S_1 $, GAL $ S_2 $, GLO $ S_3 $ and BDS $ S_4 $
  • Reference system: GPS $ S_1 $ New state:
  • No observations for GPS $ S_1 $
  • Reference system: GPS $ S_1 $ -> GAL $ S_2 $

We can transform the state with a matrix $ \mathbf{D} $ with $ \mathbf{x}_{\text{new}} = \mathbf{D} \cdot \mathbf{x}_{\text{old}} $

\begin{equation}\begin{bmatrix}
    { \mathbf{r}_{r} } \\
    { \mathbf{v}_{r} } \\
    { dt_r} \\
    { d\dotup{t}_r} \\ \hdashline
    \cancel{{ dt_{ISB}^{S_2 \rightarrow S_2}} = 0} \\
    \cancel{{ d\dotup{t}_{ISB}^{S_2 \rightarrow S_2}} = 0} \\
    { dt_{ISB}^{S_3 \rightarrow S_2}} = { dt^{S_3}} - { dt^{S_2}} \\
    { d\dotup{t}_{ISB}^{S_3 \rightarrow S_2}} = { d\dotup{t}^{S_3}} - { d\dotup{t}^{S_2}} \\
    { dt_{ISB}^{S_4 \rightarrow S_2}} = { dt^{S_4}} - { dt^{S_2}} \\
    { d\dotup{t}_{ISB}^{S_4 \rightarrow S_2}} = { d\dotup{t}^{S_4}} - { d\dotup{t}^{S_2}} \\\hdashline
    { dt_{IFB}^{F_2 \rightarrow F_1}}
\end{bmatrix}_{\text{new}}
=
\overbrace{
  \left[\begin{array}{cccc:cccccc:c}
    \mathbf{I}_3     & \mathbf{0}_3     &   0   &   0   & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & 0 \\
    \mathbf{0}_3     & \mathbf{I}_3     &   0   &   0   & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & \mathbf{0}_{3,1} & 0 \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   1   &   0   &  0 &  0 & 0 &  0 & 0 & 0 & 0 \\
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   1   &  0 &  0 & 0 &  0 & 0 & 0 & 0 \\[0.1em] \hdashline
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   &  0 &  0 & 0 &  0 & 0 & 0 & 0 \\[0.3em]
  \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   &  0 &  0 & 0 &  0 & 0 & 0 & 0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & -1 &  0 & 1 &  0 & 0 & 0 & 0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   &  0 & -1 & 0 &  1 & 0 & 0 & 0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   & -1 &  0 & 0 &  0 & 1 & 0 & 0 \\[0.3em]
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   &  0 & -1 & 0 &  0 & 0 & 1 & 0 \\[0.3em] \hdashline
    \mathbf{0}_{1,3} & \mathbf{0}_{1,3} &   0   &   0   &  0 &  0 & 0 &  0 & 0 & 0 & 1 \\[0.3em]
  \end{array}\right]
}^{\mathbf{D}}
\cdot
\begin{bmatrix}
    { \mathbf{r}_{r} } \\
    { \mathbf{v}_{r} } \\
    { dt_r} \\
    { d\dotup{t}_r} \\ \hdashline
    { dt_{ISB}^{S_2 \rightarrow S_1}} = { dt^{S_2}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_2 \rightarrow S_1}} = { d\dotup{t}^{S_2}} - { d\dotup{t}^{S_1}} \\
    { dt_{ISB}^{S_3 \rightarrow S_1}} = { dt^{S_3}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_3 \rightarrow S_1}} = { d\dotup{t}^{S_3}} - { d\dotup{t}^{S_1}} \\
    { dt_{ISB}^{S_4 \rightarrow S_1}} = { dt^{S_4}} - { dt^{S_1}} \\
    { d\dotup{t}_{ISB}^{S_4 \rightarrow S_1}} = { d\dotup{t}^{S_4}} - { d\dotup{t}^{S_1}} \\\hdashline
    { dt_{IFB}^{F_2 \rightarrow F_1}}
\end{bmatrix}_{\text{old}}
\end{equation}

Error propagation

After a transformation, the covariance matrix has also to be adapted by error propagation

\begin{equation}\mathbf{P}_{\text{new}} = \mathbf{D} \cdot \mathbf{P}_{\text{old}} \cdot \mathbf{D}^T
\end{equation}