
\documentclass[10pt]{beamer}
\usetheme{umbc2}
\useinnertheme{umbcboxes}
\setbeamercolor{umbcboxes}{bg=violet!12,fg=black}

\usepackage{longtable}
\usepackage{tabu}
\usepackage{subeqnar}

\newcommand{\ul}{\underline}
\newcommand{\be}{\begin{equation}}
\newcommand{\ee}{\end{equation}}
\newcommand{\bdm}{\begin{displaymath}}
\newcommand{\edm}{\end{displaymath}}
\newcommand{\bea}{\begin{eqnarray}}
\newcommand{\eea}{\end{eqnarray}}
\newcommand{\bsea}{\begin{subeqnarray*}}
\newcommand{\esea}{\end{subeqnarray*}}
\newcommand{\mb}[1]{\mbox{#1}}
\newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
\newcommand{\bm}[1]{\mbox{\bf #1}}
\newcommand{\bmm}[1]{\mbox{\boldmath$#1$\unboldmath}}
\newcommand{\bmell}{\bmm\ell}
\newcommand{\hateps}{\widehat{\bmm\varepsilon}}
\newcommand{\graybox}[1]{\psboxit{box .9 setgray fill}{\fbox{#1}}}
\newcommand{\mdeg}[1]{\mbox{$#1^{\mbox{\scriptsize o}}$}}
\newcommand{\dd}{\mbox{\footnotesize{$\nabla \! \Delta$}}}
\newcommand{\p}{\partial\,}
\renewcommand{\d}{\mbox{d}}
\newcommand{\dspfrac}{\displaystyle\frac}
\newcommand{\nl}{\\[4mm]}

\title{Processing GNSS Data in Real-Time}

\author{Leo\v{s} Mervart}

\institute{TU Prague}

\date{Frankfurt, January 2014}

% \AtBeginSection[]
% {
%   \begin{frame}
%     \frametitle{Table of Contents}
%     \tableofcontents[currentsection]
%   \end{frame}
% }

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \titlepage
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Medieval Times of GNSS (personal memories)}

\begin{description}
\item[1991] Prof. Gerhard Beutler became the director of the Astronomical Institute, University of
  Berne. The so-called Bernese GPS Software started to be used for (post-processing) analyzes of
  GNSS data.
\item[1992] LM started his PhD study at AIUB.
\item[1992] Center for Orbit Determination in Europe (consortium of AIUB, Swisstopo, BKG, IGN, and
  IAPG/TUM) established. Roughly at that time LM met Dr. Georg Weber for the first time.
\item[1993] International GPS Service formally recognized by the IAG.
\item[1994] IGS began providing GPS orbits and other products routinely (January, 1).
\item[1995] GPS declared fully operational.
\end{description}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{CODE-Related Works in 1990's}

\begin{itemize}
\item The Bernese GPS Software was the primary tool for CODE analyzes (Fortran~77).
\item IGS reference network was sparse.
\item Real-time data transmission limited (Internet was still young, TCP/IP widely accepted 1989).
\item CPU power of then computers was limited (VAX/VMS OS used at AIUB).
\end{itemize}

In 1990's high precision GPS analyzes were almost exclusively performed in post-processing mode.
The typical precise application of GPS at that time was the processing of a network of static
GPS-only receivers for the estimation of station coordinates.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Tempora mutantur (and maybe ``nos mutamur in illis'')}

\includegraphics[width=0.7\textwidth,angle=0]{pp_vs_rt.png}

\vspace*{-2cm}
\hspace*{6cm}
\includegraphics[width=0.4\textwidth,angle=0]{ea_ztd_21h.png}


\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{O tempora! O mores!}

\begin{itemize}
\item people want more and more \ldots
\item everybody wants everything immediately \ldots
\item \hspace*{2cm} and, of course, free of charge \ldots
\end{itemize}
\vspace*{5mm}
In GNSS-world it means:
\begin{itemize}
\item There are many new kinds of GNSS applications - positioning is becoming just one of many
  purposes of GNSS usage.
\item Many results of GNSS processing are required in real-time (or, at least, with very small
  delay).
\item GPS is not the only positioning system. Other GNSS are being established (for practical but
  also for political reasons).
\item People are used that many GNSS services are available free of charge (but the development and
  maintenance has to be funded). 
\end{itemize}

\begin{block}{But \ldots}
\end{block}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Nihil novi sub sole}

Each GNSS-application is based on processing code and/or phase observations
\vspace*{-3mm}
  \begin{eqnarray*}
  P^i & = & \varrho^i + c\;\delta - c\;\delta^i + T^i + I^i + b_P              \\
  L^i & = & \varrho^i + c\;\delta - c\;\delta^i + T^i - I^i + b^i
  \end{eqnarray*}
  where
  \begin{tabbing}
  $P^i$, $L^i$ ~~~~~~~ \= are the code and phase measurements, \\ 
  $\varrho^i$          \> is the travel distance between the satellite 
                          and the receiver,                               \\
  $\delta$, $\delta^i$ \> are the receiver and satellite clock errors,    \\
  $I^i$                \> is the ionospheric delay,                       \\
  $T^i$                \> is the tropospheric delay,                      \\
  $b_P$                \> is the code bias, and                           \\
  $b^i$                \> is the phase bias (including initial
                          phase ambiguity).
  \end{tabbing}
Observation equations reveal what information can be gained from processing GNSS data:
\begin{itemize}
\item geometry (receiver positions, satellite orbits), and
\item state of atmosphere (both dispersive and non-dispersive part)
\end{itemize}
The observation equations also show that, in principle, GNSS is an
\textcolor{blue!90}{interferometric} technique -- precise results are actually always relative.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Challenges of Real-Time GNSS Application}
\begin{itemize}
\item Suitable algorithms for the parameter adjustment have to be used (filter techniques instead
  of classical least-squares).
\item Reliable data links have to been established (between rover station and a reference station,
  between receivers and processing center, or between processing center and DGPS correction
  provider).
\item Software tools for handling real-time data (Fortran is not the best language for that).
\item Fast CPUs.
\end{itemize}

As said above -- GNSS is an interferometric technique. Processing of a single station cannot give
precise results. However, data of reference station(s) can be replaced by the so-called corrections
(DGPS corrections, precise-point positioning etc.) These techniques are particularly suited for
real-time applications because the amount of data being transferred can be considerably reduced.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Algorithms -- Kalman Filter}

\begin{small}

State vectors $\bmm{x}$ at two subsequent epochs are
related to each other by the following linear equation:
\bdm
\bmm{x}(n) = \bmm{\Phi}\; \bmm{x}(n-1) + \bmm{\Gamma}\;\bmm{w}(n)~,
\edm
where $\Phi$ and $\Gamma$ are known matrices and {\em white noise} $\bmm{w}(n)$ is a random
vector with the following statistical properties:
\bsea
E(\bmm{w})                  & = & \bmm{0}                           \\
E(\bmm{w}(n)\;\bmm{w}^T(m)) & = & \bmm{0} ~~ \mbox{for $m \neq n$}  \\
E(\bmm{w}(n)\;\bmm{w^T}(n)) & = & \bm{Q}_s(n) ~.
\esea

Observations $\bmm{l}(n)$ and the state vector $\bmm{x}(n)$ are related to
each other by the linearized {\em observation equations} of form
\bdm \label{eq:KF:obseqn}
 \bmm{l}(n) = \bm{A}\;\bmm{x}(n) + \bmm{v}(n) ~ ,
\edm
where $\bm{A}$ is a known matrix (the so-called {\em first-design matrix}) and
$\bmm{v}(n)$ is a vector of random errors with the following properties:
\bsea\label{eq:KF:resid}
E(\bmm{v})                  & = & \bmm{0} \\
E(\bmm{v}(n)\;\bmm{v}^T(m)) & = & \bmm{0} ~~ \mbox{for $m \neq n$}  \\
E(\bmm{v}(n)\;\bmm{v^T}(n)) & = & \bm{Q}_l(n) ~.
\esea

\end{small}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Classical KF Form}

Minimum Mean Square Error (MMSE) estimate $\widehat{\bmm{x}}(n)$ of vector
$\bmm{x}(n)$ meets the condition
$E\left((\bmm{x} - \widehat{\bmm{x}})(\bmm{x} - \widehat{\bmm{x}})^T\right) =
\mbox{min}$ and is given by
\begin{subeqnarray}\label{eq:KF:prediction}
 \widehat{\bmm{x}}^-(n) & = & \bmm{\Phi} \widehat{\bmm{x}}(n-1)         \\
 \bm{Q}^-(n)            & = & \bmm{\Phi} \bm{Q}(n-1) \bmm{\Phi}^T + 
                          \bmm{\Gamma} \bm{Q}_s(n) \bmm{\Gamma}^T   
\end{subeqnarray}
\begin{subeqnarray}\label{eq:KF:update}
 \widehat{\bmm{x}}(n)   & = & \widehat{\bmm{x}}^-(n) + 
                              \bm{K}\left(\bmm{l} - 
                              \bm{A}\widehat{\bmm{x}}(n-1)\right) \\
 \bm{Q}(n)              & = & \bm{Q}^-(n) - \bm{K}\bm{A}\bm{Q}^-(n) ~,
\end{subeqnarray}
where
\bdm \label{eq:KF:KandH}
 \bm{K} = \bm{Q}^-(n)\bm{A}^T\bm{H}^{-1}, \quad
 \bm{H} = \bm{Q}_l(n) + \bm{A}\bm{Q}^-(n)\bm{A}^T ~.
\edm
Equations (\ref{eq:KF:prediction}) are called {\em prediction}, 
equations (\ref{eq:KF:update}) are called {\em update} step of Kalman filter.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Square-Root Filter} \label{sec:SRF}
\begin{small}
Algorithms based on equations (\ref{eq:KF:prediction}) and
(\ref{eq:KF:update}) may suffer from numerical instabilities that are primarily
caused by the subtraction in (\ref{eq:KF:update}b). This deficiency may be
overcome by the so-called {\em square-root} formulation of the Kalman filter
that is based on the so-called {\em QR-Decomposition}. Assuming the 
Cholesky decompositions
\be \label{eq:SRF:defsym}
  \bm{Q}(n)   = \bm{S}^{T} \bm{S}  , \quad
  \bm{Q}_l(n) = \bm{S}^T_l \bm{S}_l,  \quad
  \bm{Q}^-(n) = \bm{S}^{-T}\bm{S}^- 
\ee
we can create the following block matrix and its QR-Decomposition:
\be \label{eq:SRF:main}
 \left(\begin{array}{ll} 
   \bm{S}_l         & \bm{0} \\
  \bm{S}^-\bm{A}^T  & \bm{S}^-
 \end{array}\right)
=
 N \left(\begin{array}{cc} 
    \bm{X}     & \bm{Y} \\
    \bm{0}     & \bm{Z}
   \end{array}\right) ~ .
\ee
It can be easily verified that 
\bsea\label{eq:SRF:HK}
 \bm{H}    & = & \bm{X}^T\bm{X}   \\
 \bm{K}^T  & = & \bm{X}^{-1}\bm{Y}\\
 \bm{S}    & = & \bm{Z}           \\
 \bm{Q}(n) & = & \bm{Z}^T\bm{Z} ~ .
\esea
State vector $\widehat{\bmm{x}}(n)$ is computed in a usual way using the
equation (\ref{eq:KF:update}a).
\end{small}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Data Transfer -- NTRIP}

In order to be useful data have to be provided in a well-defined \textcolor{blue}{format}.
RTCM (Radio Technical Commission for Maritime Services) messages are widely used for GNSS data in
real-time. 

\vspace*{5mm}

In addition to a format the so-called \textcolor{blue}{protocol} has to be defined. Using a given
protocol the data user communicates with the data provider.

For GNSS data, the so-called \textcolor{blue}{NTRIP} streaming protocol is used.
\begin{itemize}
\item NTRIP stands for Networked Transport of RTCM via Internet Protocol.
\item NTRIP is in principle a layer on top of TCP/IP.
\item NTRIP has been developed at BKG (together with TU Dortmund).
\item NTRIP is capable of handling hundreds of data streams simultaneously delivering the data
to thousands of users.
\item NTRIP is world-wide accepted (great success of BKG).
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{NTRIP}

Efficiency of data transfer using NTRIP is achieved thanks to the GNSS Internet Radio /
IP-Streaming architecture:

\begin{center}
\includegraphics[width=0.7\textwidth,angle=0]{ntrip.png}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{NTRIP Users}

\includegraphics[width=0.5\textwidth,angle=0]{numberRegisteredUsers_1.png}
\includegraphics[width=0.5\textwidth,angle=0]{activeClients_month_1.png}
\begin{center}
\includegraphics[width=0.5\textwidth,angle=0]{casterTransfer_1.png}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{BKG Ntrip Client (BNC)}

An important reason why NTRIP has been widely accepted is that BKG provided high-quality public
license software tools for its usage. One of these tools is the so-called \textcolor{blue}{BKG
Ntrip Client}.

  \begin{itemize}
  \item BNC source consists currently of approximately 50.000 lines of code 
  \item development started 2005 (LM and Georg Weber)
  \item BNC uses a few third-party pieces of software (e.g. RTCM decoders/encoders)
  \item BNC has a good documentation (thanks Georg Weber)
  \end{itemize}

  \begin{block}{BNC is intended to be}
  \begin{itemize}
  \item user-friendly
  \item cross-platform
  \item easily modifiable (by students, GNSS beginners)
  \item useful (at least a little bit ...)
  \end{itemize}
  \end{block}

  \begin{block}{BNC is not only an NTRIP client \ldots}
  \end{block}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{BNC Basic Usage}
\includegraphics[width=0.6\textwidth,angle=0]{screenshot12.png}

\vspace*{-4cm}
\hspace*{4cm}
\includegraphics[width=0.5\textwidth,angle=0]{screenshot24.png}
\end {frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Data QC in BNC}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{bnc_qc2.png}
  \end{center}
\end {frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Data QC in BNC}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{bnc_qc1.png}
  \end{center}
\end {frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Precise Point Positioning with PPP}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{ppp1.png}
  \end{center}
\end {frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Principles of Precise Point Positioning}
\framesubtitle{Observation Equations}

The PPP is based on the processing of the ionosphere-free linear combination of phase
observations
\be
L^{ij}_3 = \varrho^{ij} - c\delta^{ij} + T^{ij} + \bar{N}^{ij}_3 ~,
\ee 
where the ambiguity term is given by
\be
\bar{N}^{ij}_3 =  N^{ij}_3 - l^{ij}_3 
              = \frac{c\;f_2}{f^2_1-f^2_2}\;(n^{ij}_1-n^{ij}_2) + \lambda_3\;n^{ij}_1 - l^{ij}_3 
\ee
and (optionally) the ionosphere-free linear combination of code observations
\be
P^{ij}_3 = \varrho^{ij} - c\delta^{ij} + T^{ij} + p^{ij}_3 ~,
\ee
where the code bias $p^{ij}_3$ is the linear combination of biases
$p^{ij}_1,p^{ij}_2$
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Principles of PPP Service}

The server has to provide the orbit corrections and the satellite clock corrections
$c\delta^{ij}$. That is sufficient for a client processing phase observations only. 

Using the code observations on the client-side is not mandatory. After an initial convergence
period (tens of minutes) there is almost no difference between a phase-only client and the client
that uses also the code observations. However, correct utilization of accurate code observations
improves the positioning results during the convergence period.

Client which processes code observations either
\begin{enumerate}
\item has to know the value $p^{ij}_3$ (the value must be provided by the server -- the most
  correct approach), or
\item has to estimate terms $p^{ij}_3$, or
\item neglect the bias (de-weight the code observations -- not fully correct).
\end{enumerate}
Options (2) and (3) mean that the benefit of using the code observations on the client-side (in
addition to phase observations) is minor only. 

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{PPP Options in BNC}
  \begin{itemize}
  \item single station, SPP or PPP
  \item real-time or post-processing
  \item processing of code and phase ionosphere-free combinations, GPS,
    Glonass, and Galileo
  \end{itemize}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{ppp_opt1.png} \\[2mm]
    \includegraphics[width=0.9\textwidth,angle=0]{ppp_opt2.png}
  \end{center}
\end {frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP of Moving Receiver by BNC}
  \begin{center}
    \includegraphics[width=0.6\textwidth,angle=0]{screenshot32.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}

\includegraphics[width=0.8\textwidth,angle=0]{igs_map.png}

\vspace*{-2cm}

\hspace*{2cm}
\includegraphics[width=0.8\textwidth,angle=0]{bnc_rtnet_flow.png}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{bnc_feed.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Server-Side -- RTNet (www.gps-solutions.com)}
\includegraphics[width=0.9\textwidth,angle=0]{GPSS_home.png}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Server-Side -- RTNet (www.gps-solutions.com)}
\includegraphics[width=0.9\textwidth,angle=0]{rtnet_menu.png}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{ac_results.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{ac_results2.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Combination using Kalman filtering}
  The combination is performed in two steps
  \begin{itemize}
  \item[1.] The satellite clock corrections that refer to different broadcast
    messages (different IODs) are modified in such a way that they all refer
    to common broadcast clock value (common IOD is that of the selected
    ``master'' analysis center).
  \item[2.] The corrections are used as pseudo-observations for Kalman filter
    using the following model (observation equation):
    \begin{displaymath}
    c_a^s = c^s + o_a + o_a^s
    \end{displaymath}
    where
    \begin{tabbing}
    $c_a^s$ ~~ \= is the clock correction for satellite s estimated by \\
               \> the analysis center a, \\
    $c^s$      \> is the resulting (combined) clock correction for 
                  satellite s, \\
    $o_a$      \> is the AC-specific offset 
                  (common for all satellites), and \\
    $o_a^s$      \> is the satellite and AC-specific offset.
    \end{tabbing}
  \end{itemize}
  The three types of unknown parameters $c^s$, $o_a$, $o_a^s$ differ in their
  stochastic properties: the parameters $c^s$ and $o_a$ are considered to be
  epoch-specific while the satellite and AC-specific offset $o_a^s$ is assumed
  to be a static parameter.
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{combination_1.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{combination_2.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{combination_3.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{tropo1.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{tropo2.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{PPP -- Server-Side}
  \begin{center}
    \includegraphics[width=0.9\textwidth,angle=0]{tropo3.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Principle of our PPP-RTK Algorithm}
  For a dual-band GPS receiver, the observation equations may read as
  \begin{eqnarray*}
  P^i & = & \varrho^i + c\;\delta - c\;\delta^i + T^i + b_P              \\
  L^i & = & \varrho^i + c\;\delta - c\;\delta^i + T^i + b^i
  \end{eqnarray*}
  where
  \begin{tabbing}
  $P^i$, $L^i$ ~~~~~~~ \= are the ionosphere-free code and phase measurements, \\ 
  $\varrho^i$          \> is the travel distance between the satellite 
                          and the receiver,                               \\
  $\delta$, $\delta^i$ \> are the receiver and satellite clock errors,    \\
  $T^i$                \> is the tropospheric delay,                      \\
  $b_P$                \> is the code bias, and                           \\
  $b^i$                \> is the phase bias (including initial
                          phase ambiguity).
  \end{tabbing}
  The single-difference bias $b^{ij} = b^i - b^j$ is given by
  \begin{displaymath}
  b^{ij} = \displaystyle\frac{\lambda_5-\lambda_3}{2}\;(n_5^{ij} + b_5^{ij})
              + \lambda_3\;(n_1^{ij} + b_1^{ij}) 
  \end{displaymath}
   where
  \begin{tabbing}
  $n_1^{ij}$, $n_5^{ij}$ ~~~~ \= are the narrow-lane and wide-lane integer ambiguities \\
  $b_1^{ij}$                 \> is the narrow-lane (receiver-independent) SD bias \\
  $b_5^{ij}$                 \> is the wide-lane (receiver-independent) SD bias
  \end{tabbing}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Principle of our PPP-RTK Algorithm (cont.)}
  Receiver-independent single-difference biases $b_1^{ij}$ and $b_5^{ij}$ have 
  to be estimated on the server-side.
  \begin{itemize}
  \item Narrow-lane bias $b_1^{ij}$ may be combined with satellite clock
    corrections $\Longrightarrow$ \textbf{modified satellite clock corrections.}
  \item Wide-lane bias have to be transmitted from the server to the client
    (this bias is stable in time and can thus be transmitted in lower rate).
  \end{itemize}

  On the client-side the biases $b_1^{ij}$ and $b_5^{ij}$ are used as known
  quantities. It allows fixing the integer ambiguities $n_5^{ij}$ and
  $n_1^{ij}$. The technique is called Precise Point Positioning with Ambiguity
  Resolution (PPP~AR) or PPP~RTK, or zero-difference ambiguity
  fixing (the latter term not fully correct because the ambiguities are
  actually being fixed on single-difference level).
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Performance}
  \begin{center}
    \includegraphics[width=0.75\textwidth]{kir0.png}
  \end{center}
  \vspace*{-5mm}
  \begin{block}{Standard deviations (N,E,U)}
  \vspace*{3mm}
  \begin{small}
  \hspace*{2cm}
  \begin{tabular}{l|ccc|ccc}
  \mbox{} & \multicolumn{3}{c|}{10-60 min} & \multicolumn{3}{c}{30-60 min} \\
  float & 0.034 & 0.026 & 0.026         & 0.010 & 0.009 & 0.011  \\
  fix   & 0.007 & 0.003 & 0.016         & 0.007 & 0.003 & 0.012
  \end{tabular}
  \end{small}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Challenges}
  PPP~RTK works and provides mm-accuracy results, what is this symposium
  about?

  \pause
  There are still both principal and technical problems and challenges:
  \begin{itemize}
  \item Principal problems:
    \begin{itemize}
    \item Convergence time: PPP~RTK in the form outlined above provides
      accuracy similar (or even slightly better) to RTK but the convergence
      time is longer.
    \item There is a degradation in accuracy with the age of corrections.
    \item Glonass ambiguity resolution: is it possible to resolve Glonass
      ambiguities? (yes, it is possible but it implicates introducing new
      parameters - does it really improve the results?)
    \item ...
    \end{itemize}
  \item Technical problems:
    \begin{itemize}
    \item Availability of data in real time (reference network, high-precision
          satellite orbits).
    \item Very high CPU requirements on the server-side.
    \item Solution robustness on the server-side 
          (problems with reliable DD ambiguity resolution). 
    \item ...
    \end{itemize}
  \end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Challenges (cont.)}
  \begin{block}{Longer convergence time}
  In case of a standard RTK the very short convergence time is being achieved
  thanks to the combined DD ambiguity resolution on both $L_1$ and $L_2$ when
  the differential ionospheric bias can either be neglected (short baselines)
  or its influence is mitigated (stochastic ionosphere estimation with
  constraints).

  On the contrary, the outlined PPP~RTK algorithm is in principle based on
  processing single (ionosphere-free) linear combination and resolving only
  one set of (narrow-lane) initial phase ambiguities.
  \end{block}
  \begin{block}{Possible solutions}
  \begin{itemize}
  \item third carrier
  \item multiple GNSS (Glonass ambiguity resolution?)
  \item processing original carriers (instead of ionosphere-free linear
    combination) and modeling the ionosphere?
  \item ?
  \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Challenges (cont.)}
  \begin{block}{Age of corrections 0 s}
  \begin{center}
    \includegraphics[width=0.6\textwidth]{age1.png}
  \end{center}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Challenges (cont.)}
  \begin{block}{Age of corrections up to 35 s}
  \begin{center}
    \includegraphics[width=0.6\textwidth]{age2.png}
  \end{center}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Real-Time Data Availability}
  \framesubtitle{IGS network: very good global coverage:}
  \vspace*{-5.5cm}
  \begin{center}
    \includegraphics[width=0.9\textwidth]{map.pdf}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Real-Time Data Availability (cont.)}
  \begin{tabular}{cc}
  \includegraphics[width=0.4\textwidth]{100A_lat.png} &
  \includegraphics[width=0.4\textwidth]{101A_lat.png} \\
  \includegraphics[width=0.4\textwidth]{102A_lat.png} &
  \includegraphics[width=0.4\textwidth]{104A_lat.png}
  \end{tabular}

  Gaps in reference network data may degrade the PPP~RTK server performance
  considerably!
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Technical issues}
  \begin{block}{CPU-requirements on the server-side}
  Processing a global reference network is a very CPU-intensive
  task. Numerically stable forms of the Kalman filter (square-root, UDU
  factorization etc.) require very fast hardware. 

  Possible solutions:
  \begin{itemize}
  \item Processing optimization (estimating various kinds of parameters in 
        different rates)
  \item Parallel processing 
  \item Advanced hardware (GPS Solutions uses GPU-accelerated library)
  \end{itemize}
  \end{block}
  \begin{block}{Reliable DD ambiguity resolution on the server-side}
  Reliable double-difference ambiguity resolution on the server-side remains
  the crucial issue of the PPP~RTK technique.
  \end{block}
  \begin{block}{Dissemination of PPP~RTK corrections}
  \begin{itemize}
  \item data links
  \item formats (standardization?)
  \item optimization of correction rates (bandwidth)
  \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Satellite orbits}

  Predicted part of the IGS ultra-rapid orbits (available in real-time) is
  sometimes not sufficient for the processing of a global reference network
  (with narrow-lane ambiguity resolution). We have been forced to implement
  the real-time orbit determination capability in our main processing tool
  RTNet (Real-Time Network software).
  \begin{center}
    \includegraphics[width=0.75\textwidth]{rtnet_pod.png}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Regional versus global PPP~RTK services} 
  Currently we are routinely running both regional and global PPP~RTK service
  demonstrators in real-time (some of the results will be shown below).
  \begin{itemize}
  \item in principal there is no difference between a global and regional
    service as far as the data processing, algorithms etc. is concerned
  \item global PPP~RTK service has at least the following two advantages
     \begin{itemize}
     \item[1.] a single correction stream can serve all users
     \item[2.] all satellites are tracked permanently (helps ambiguity 
               resolution)
     \end{itemize}
  \item global PPP~RTK service is much more challenging (data availability,
    CPU-requirements on the server-side, DD ambiguity resolution on long
    baselines, the highest requirements for the accuracy of the satellite
    orbits)
  \end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Services monitoring} 
  Reliable, production-quality PPP~RTK service requires sophisticated
  monitoring tools.
  \begin{tabular}{cc}
  \includegraphics[width=0.6\textwidth]{monitor1.png} & \\[-1.5cm]
  & \hspace*{-3cm} \includegraphics[width=0.6\textwidth]{monitor2.png}
  \end{tabular}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Results}
  \begin{center}
    \includegraphics[width=0.9\textwidth]{tsunami.pdf}
  \end{center}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Results (cont.)}
  \begin{center}
    \includegraphics[width=0.9\textwidth]{nrcan.png}
  \end{center}
\end{frame}

\end{document}
