% !TEX root = ../toptesi-scudo-example.tex
% !TEX encoding = UTF-8 Unicode
%*****************************************************************
%*********************** Fifth chapter ***************************
%*****************************************************************

%%%%% CHAPTER 5. Collaborative GNSS Methodology and Application %%%%%
\chapter{Collaborative GNSS Methodology and Application}\label{Collaborative_GNSS_Methodology_and_Application}

% ********************** Define Graphics Path ********************
    \graphicspath{{Chapter7/}}

\par The chapter presents the work carried out towards the thesis in the field of collaborative and cooperative GNSS. The first section briefly explains a study in deformation monitoring using two GNSS receivers in a master-rover scenario with deflections at the rover side analysed. Thereafter GNSS raw measurements based collaborative ranging between two android smartphones is presented. Finally, the proof of concept application of this collaborative ranging towards positioning is presented in the last section.

\section{Fast Deformation Monitoring}\label{Fast_Deformation_Monitoring}

\par The priliminary work on GNSS cooperative positioning started with an experimental study proposing the use of two GNSS receivers as master and rover respectively to detect fast structural deformations. Single differenced observations of C/A code and L1 GPS carrier phase are differenced in time to obtain positions and velocities of a rover receiver and the performance of these observations in deformation detection is seen. 

\par A relative positioning approach through iterative Least Squares is explored, in order to detect fast changes in position and velocity of a GNSS receiver installed over a landslide. Both displacements and deformation phenomena are analyzed considering a single difference approach also differenced in time. The rover positions were determined using pseudorange and phase observables with respect to a master receiver and successive epochs whereas the velocity measurements were determined by only the carrier phase observables differenced similarly. One of the peculiarities of the work is to constrain the system considering the baseline between master and rover receivers and their relative velocities, in order to improve the precision and accuracy of the results. The performance of this approach is compared with the performance using a NRTK network; moreover, the performances regarding detection of displacement and deformation is seen. With mass market master-rover receivers, it can be seen that 100\% of the deformations at the rover can be detected by monitoring the relative velocities of the receivers, however with a false alarm rate of 20\%. Detailed results and methodology of the work are available at \cite{gogoi2018fast}.

\par The goal of the work was to check the feasibility of this approach using a least squares post processed method. However the work also highlights the benefits of GNSS CP in applications as critical as landslide monitoring.


\section{GNSS Collaborative Ranging}\label{GNSS_Collaborative_Ranging}

\par The opportunity of implementing collaborative solutions based on raw pseudorange processing for positioning and navigation is attractive in ready-to-network devices like smartphones also considering the computational power of the current hardware setups. Considering the smartphone as an agent in the context of cooperative positioning literature, a double difference inter agent-ranging approach \cite{6240332,liu2014improving} has been implemented in this work which induces the cancellation of common satellite and receiver clock errors affecting the smartphone pseudorange measurements. For such an approach, the feasibility of a low latency communication channel between the devices, dealing with the quality of the raw measurements and real time synchronisation of the devices at an early processing stage are the main challenges to be addressed. This work firstly presents the operational framework for two Xiaomi$^\text{\textregistered}$ Mi8 smartphones equipped with the chipset Broadcom$^\text{\textregistered}$ BCM47755 within the context of collaborative exchange of measurements between them and then the results of an inter-agent cooperative ranging algorithm based on double differencing.

\subsection{Methodology}\label{sec:methodology_collaborative_ranging}

\par The methodology details the procedure followed for implementation of the work using the Android raw GNSS measurements provided through the Android's Application Programming Interface (API) 24 for a set of devices equipped with Android 7 (Nougat) or later releases. The White Paper on using GNSS Raw Measurements on Android devices \cite{gsa2018using} released by the European Global Navigation Satellite Systems Agency (GSA) in early 2018 defined the raw measurements better for practical use and hence it has been referenced multiple times.

\par Considering the ubiquitous availability of wireless connections in smart cities (e.g. public Wi-Fi access points, cellular infrastructure), the addressed scenario considers the possibility to have a pair of Android devices sharing data connectivity for the exchange of data, as depicted in Figure \ref{fig:scheme}.


\begin{figure}[h!]
\centering
\includegraphics[width=0.75\columnwidth,trim={0.0cm 0.0cm 0.0cm 0.0cm},clip]{Immagine1.eps}
\caption{{Scheme of GNSS-based smartphone inter-agent ranging.}}
\label{fig:scheme}
\end{figure} 

\subsubsection{Data exchange}

\par A communication channel is provided through IEEE 802.11b Wi-Fi connection exploiting a client-server service to which two smartphones are connected and registered throughout a predefined access point. Once an update of the measurements is reached by one of the two smartphones, it is sent to the server where it can be forwarded to any listening user. A transmitted packet of raw measurements information is offered by each smartphone and it is structured as in Figure \ref{fig:protocol}. 

\begin{figure}[h!]
\centering
\includegraphics[width=\columnwidth,trim={0.5cm 0.0cm 0.0cm 0.0cm},clip]{protocol.eps}
\caption{{High-level packet format for the exchange of raw measurements for cooperative positioning applications.}}
\label{fig:protocol}
\end{figure} 

\par It is conceived as a multi-cast packet in which the user ID is a unique identifier for the sender. A position estimate and the associated uncertainty is also considered for potential integration algorithms including the collaborative measurement or the knowledge of neighbours locations themselves. The main payload field, named \textit{raw measurements}, contains the satellite-to-agent estimated ranges and the Doppler measurements (provided by the GNSS unit of the smartphone) that can be used by neighbours for the steps described hereafter. Raw pseudorange measurements, identified by the letter $\rho$ as shown in Figure \ref{fig:scheme}, are computed by estimating the time of travel of transmitted signal, according to \cite{gsa2018using}. Such an information is provided as raw data by the Google$^\text{\textregistered}$ Android API. The Doppler measurements identified by the letter $\phi$ are instead typically provided by the Frequency-locked Loop at the acquisition stage of the receiver \cite{kaplan2017understanding}.

\subsubsection{Synchronization of Measurements}
\par Two separate measurements can be aligned with a satellite signal Time of Week (ToW) transmission information, however the actual pseudorange and subsequent raw measurements are not retrieved at a common GNSS or Global Positioning System (GPS) time of both the receivers.
The time-consistency of the asynchronous measurements is hence achieved by exploiting a Doppler-based compensation technique \cite{wang2018pedestrian} which facilitate the merger of asynchronous pseudorange measurements into double-difference based ranging measurements following

\begin{equation}
\label{eq:dopCompensation}
\rho(t+\Delta t) = \rho(t) + \Delta t \cdot \lambda \cdot \phi(t)
\end{equation}

where $\lambda$ is the carrier wavelength according to the investigated signals and constellations. The Doppler measurement of a given satellite observed at time $t$ provides an estimate of the pseudorange change rate and can therefore be used to predict the pseudorange in $t+\Delta t$. The correction holds if the relative movement between receiver and satellite is constant and it can be assumed true dealing with static or moderate dynamic of the receiver. The choice of $\Delta t$ is operated according to the pseudorange estimation method (common receiving time or common transmitting time) \cite{pini2012estimation}. Several solutions for the computation of the range starting from Double Difference have been explored in literature. As an example of application, a plain double difference ranging has been used as reported in the following \cite{privat2018innovative}.

\par The pseudorange generation method used by the android chipset is the common reception time method where all pseudoranges in an epoch and in subsequent epochs are calculated relative to the very first satellite signal to arrive at the first epoch of observation. Theoretically using the raw smartphone clock measurements \texttt{BiasNanos} (receiver clock's sub-nanosecond bias), \texttt{DriftNanosPerSecond} (receiver clock drift) and \texttt{TimeOffsetNanos} (Time offset at which the measurement was taken in nanoseconds), the accurate GPS time of pseudorange measurement can be computed and hence synchronisation can be achieved. The definitions of these measurements are stated in \cite{gsa2018using}. However, all three measurements are currently unavailable with the BCM47755 chipset for the Xiaomi Mi 8 phone and the alternative was either the use of the clock bias output of a Position, Velocity and Time (PVT) solution for each phone or take use of the \texttt{FullBiasNanos} raw measurement provided by the phone. The latter is the direct bias measurement given at each epoch by the smartphone after it has estimated the GPS time through the cellular network and/or the internal PVT solution within the android software \cite{gsa2018using}. Using it negates the need for a PVT computation for the phones saving valuable processing time and computational power. Thus this allows for the formation of the $\Delta t$ parameter (as in equation (1)) between the two receivers to be used in a Doppler based adjustion technique.

\subsubsection{Relative Range measurements by Double Differencing}

\par When a good synchronization of the measurements is provided, single differences among pseudorange measurements allow to remove the clock biases of the satellite constellation. As a further step, double differences cancel out the user clock bias thus leading to accurate range computation using GNSS observable data only. The use of differential GNSS can rely also on the availability of multi-constellation environments. A single difference can be defined between two GNSS users tracking a common satellite, as
\begin{equation}
\label{eq:singleDiff}
s_{ab}^j(t)=\rho_{a}^j(t)-\rho_{b}^j(t)-\Delta\rho_{ab}(t)+  \Delta b_{ab}(t) + \Delta \epsilon_{ab}(t)
\end{equation}

where $\Delta b_{ab}$ indicates the bias difference due the users clock offsets and $\Delta\epsilon_{ab}$ includes all the non-common noise related to each satellite-receiver pair. 

\par When the same couple of satellite $i$ and $j$ is visible to both the receivers, a double difference measurement can be obtained as difference of two single differences

\begin{equation}
\label{eq:doubleDiff}
\begin{split}
d_{ab}^j(t) &= s_{ab}^j(t)-s_{ab}^i(t) \\
 & = \left[ \vec{e}^i - \vec{e}^j \right] \cdot \vec{r}_{ab}(t)+ \left[ \Delta\epsilon_{ab}^i - \Delta\epsilon_{ab}^j \right].
\end{split}
\end{equation}

\par On identifying a satellite as a reference, the computation of the range vector, $\vec{r}_{ab}$, can be obtained by solving

\begin{equation}
\label{eq:ddranging}
\mathbf{d}_{ab}=\mathbf{H} \vec{r}_{ab}+\epsilon
\end{equation}

where $\mathbf{d}_{ab}$ is a column vector of double differences w.r.t. the shared satellites and $\mathbf{H}$ is defined with respect to the reference satellite by differentiation of the steering vectors $\vec{e}$, as follows

\begin{equation}
\label{eq:hmatrix}
\mathbf{H}=\left[ \begin{matrix}
\left[ \vec{e}^1(t)-\vec{e}^0(t) \right]^T \\
\left[ \vec{e}^2(t)-\vec{e}^0(t) \right]^T \\
\vdots           \\
\left[ \vec{e}^{S-1}(t)-\vec{e}^0(t) \right]^T \\
\end{matrix} \right].
\end{equation}

\par The range measurement is hence obtained in a Weighted Least Squares (WLS) solution as the norm of the displacement vector $\vec{r}_{ab}$, as

\begin{equation}
\label{eq:lms4dd}
\vec{r}_{ab}=\left(\mathbf{H}^T\mathbf{R}_d\mathbf{H}\right)^{-1} \mathbf{H}^T \mathbf{R}_d \mathbf{d}_{ab}
\end{equation}

where $\mathbf{R}_d$ is the error covariance matrix associated to the range measurements, whose terms can be retrieved directly through the Android API.
Inter-agent ranges are expected to be sufficiently uncorrelated with the measurements used for the further PVT computation so that they can bring further information about the users positions, still according to geometry and quality of the initial estimated position \cite{8373543}. 

\par The example in Figure \ref{fig:staticIFENSim2} shows the comparison of range estimates obtained at each epoch by means of double differencing of simulated raw measurements according to the methodology in Section \ref{sec:methodology_collaborative_ranging}, computed between two static GNSS software receivers with a zero baseline. One is a non-weighted asynchronous Double Difference Range (DDR) and the other being the  Doppler compensated Weighted Double Difference Range (DDR-W). The measurement noise variance for the simulations is the nominal standard deviation of 6.7 meters (m) as mentioned in \cite{kaplan2017understanding}. 

\begin{figure}[h!]
\centering
\includegraphics[width=0.98\columnwidth,trim={0.3cm 0.0cm 0.3cm 0.0cm},clip]{staticIFENSim2.eps} %original width 1
\caption{{Range bias compensation in DDR between two static receivers by means of raw Doppler measurements with simulated GNSS signals (no multipath, 6 GPS satellites).}}
\label{fig:staticIFENSim2}
\end{figure} 

It can be noticed that while the benefit induced by the weighting strategy is limited to a small standard deviation reduction, the compensation of the time misalignment through raw Doppler measurements is fundamental to mitigate the bias in the inter-agent range computation.

%xxxxxxxx
\subsection{Experimental Setup and Results}\label{sec:expResults_Coll_Ranging}

\par This section presents a collection of relevant results about the quality of the inter-agent measurements. According to the nomenclature in GNSS literature, the two experiments are classified w.r.t. the length of the true displacement vector, also known as baseline.

\subsubsection{Short Baseline Static Test}
\par 10-minute static datasets were collected in the campus of the Politecnico Di Torino (45.062099$^\circ$ N, 7.663334$^\circ$ E), Torino, Italy, with two Xiaomi Mi 8 devices 20 meters apart, on the 22nd of February 2019 in a sub-urban sky condition. Android raw measurements were collected through the communication network IEEE 802.11b Wi-Fi connection and processed through an internal version of the open source MATLAB 'gps-measurement-tools' software \cite{gCoGnss}. The Xiaomi Mi 8 offers the option to turn off the 'duty cycle' of the device through its developer mode and that was an added consideration during the data collection. Duty cycle is a power saving function of most smart devices where commonly, the hardware clock is switched off for a fraction of every second resulting mainly in carrier phase tracking discontinuity \cite{gsa2018using}. Although multi-frequency, multi-constellation measurements were recorded, only GPS L1 (1575.42 MHz) signal measurements were processed for initial validation. The use of GPS only does not imply a lack of generality since the same procedure can be applied to the other constellations. Furthermore,  multi-constellation implementation is also possible once the user clock
bias with respect to each constellation has been removed (i.e. a solution has been obtained).

\begin{figure}[h!]
\centering
\includegraphics[width=1\columnwidth,trim={0.3cm 0.0cm 0.3cm 0.0cm},clip]{satellitesunfilteredplot.eps}
\caption{{20 m baseline test with DDR and PVT-R comparison.}}
\label{fig:unfiltered}
\end{figure} 

\begin{figure}[h!]
\centering
\includegraphics[width=1\columnwidth,trim={0.3cm 0.0cm 0.3cm 0.0cm},clip]{satellitesfilteredplot.eps}
\caption{{20 m baseline test with DDR, DDR-W and PVT-R comparison.}}
\label{fig:filtered}
\end{figure} 

\par The unreliable quality of smartphone raw measurements is a hindrance due to poor antenna performance, hence a 'real-time' satellite filtering strategy as well as a weighted solution was adapted based on the parameter ReceivedSvTimeUncertaintyNanos \cite{developerandroid}. Three different relative ranges between the phones were compared; DDR and DDR-W (both Doppler compensated) and the Euclidean Range (PVT-R) calculated after standalone-PVT solution computation of the receivers individually. For the standalone solution, some satellites were excluded for a fair comparison with the filtering strategy.

\par Figure \ref{fig:unfiltered} shows the basic comparison of the ranges without taking into consideration the quality of the pseudoranges and it is seen that both the ranges are noisy with the PVT-R being slightly better. On filtering out poor measurements, significant improvement to the DDR and DDR-W ranges is seen in Figure \ref{fig:filtered} and it is in general better than the PVT-range, barring a few outliers which the weighted solution fails to take account of. The mean GDOP value was around 2 and 2.5 before and after filtering respectively. This observation is consistent with the other dataset measurements and in dataset 3 (5-minute observation), the improvement in the mean error is 4-5 times higher. Table I presents a comparison of the quality of the GNSS-based ranges in the different datasets with respect to the standard deviation ($\sigma$) and mean error ($\mu$). There is still a significant bias and noise present in the measurements due to the uncorrelated noise being quadrupled after double differencing, as shown in \cite{de2013zero}, but this relatively superior range output produced taking advantage of Android raw measurements only without the PVT computational burden opens an interesting application of cooperation among Android smartphones.

\begin{table}
\centering
\caption{Comparison of the quality of GNSS-based ranges}
\begin{tabular}{c|c|c|c|c}
\toprule
\toprule
\multirow{2}{*}{\begin{tabular}[c]{@{}c@{}}\textbf{Test with two} \\ \textbf{Xiaomi Mi-8 devices} \end{tabular}} &                           & \multicolumn{3}{l}{\textbf{600 s interval}}  \\


                                                                                              &                           & PVT-R & DDR  & DDR-W                    \\
\midrule  
\midrule                                                                                              
                                                                                              
\multirow{2}{*}{DATASET 1}                                                                    & $\sigma$ (m) & 19.4  & 12.2 & 12.1                     \\
                                                                                              & $\mu$ (m)    & 10.5  & 9.9  & 7.6                      \\\midrule
\multirow{2}{*}{DATASET 2}                                                                    & $\sigma$ (m) & 9.5   & 8.7  & 8.6                      \\
                                                                                              & $\mu$ (m)    & 8.4   & 5.4  & 5.4                      \\\midrule
\multirow{2}{*}{DATASET 3}                                                                    & $\sigma$ (m) & 18.2  & 10.4 & 10.2                     \\ 
                                                                                              & $\mu$ (m)    & 24.7  & 6.3  & 5.8\\
                                                                                                   \bottomrule               
\end{tabular}
\end{table}

\subsubsection{Zero Baseline Static Test}
\par Following this, the presented strategy was also applied to a simple zero-baseline test performed on the rooftop (open sky condition) of the Politecnico Di Torino campus, Torino, Italy (45.063780$^\circ$ N, 7.662003$^\circ$ E) by placing two Xiaomi Mi 8 Pro phones next to each other on the 15th of March, 2019. 

\par In addition to filtering of the satellites, the Doppler compensated pseudoranges for DDR and DDR-W were further smoothed based on their Doppler ranges \cite{5507202} and there was a significant quality enhancement with the near complete removal of a bias seen in the PVT-R as seen in Figure \ref{fig:zerobaseline}. The mean error and standard deviation of the latter was 6.6 m and 3.1 m respectively. In comparison for the DDR and DDR-W, the mean errors were 1.5 m and 1.4 m respectively with the standard deviations being 1.2 meters for both. The mean GDOP value was around 2.5 during the test with an average of 5 satellites considered after filtering out the poor measurements. The smoothing strategy has not been implemented to be robust yet for urban or sub-urban sky conditions, hence further development has to be done.

\begin{figure}[h!]
\centering
\includegraphics[width=1\columnwidth,trim={0.3cm 0.0cm 0.3cm 0.0cm},clip]{ZeroBaselineFig.eps}
\caption{{DDR and DDR-W applied on smoothed pseudorange measurements, compared to PVT-R.}}
\label{fig:zerobaseline}
\end{figure} 


\section{Proof of Concept - Cooperative DGNSS} \label{Proof_of_Concept}

This work aims at defining a new UAV-UGV collaborative positioning paradigm by assessing the feasibility of a DGNSS-based cooperative strategy presented in \cite{Minetto:2019:GCP:3331054.3331552} for connected GNSS receivers. A proof of concept of this technology has been developed on Google Android\textsuperscript{\texttrademark} smartphones which natively support both GNSS navigation and data connectivity in 4G/LTE.


\subsection{Proposed framework} \label{sec:ProposedFramework}

\begin{figure}[h!]
%\begin{figure*}[!htbp] 
    \centering
  \subfloat[\label{fig:DD}]{%
       \includegraphics[width=0.49\linewidth,trim={9cm 5cm 9cm 6cm},clip]{coopBasics.pdf}}
  \subfloat[\label{fig:DD2}]{%
        \includegraphics[width=0.49\linewidth,trim={5cm 3cm 5cm 3cm},clip]{DD.pdf}}
  \caption{{Range-based CP concept and pictorial scheme representing its implementation through Double Differences applied to GNSS pseudorange measurements to determine the inter-receiver distance and support DGNSS cooperative positioning and navigation.}}
  \label{fig:scenario} 
\end{figure}
%\end{figure*}

%\begin{figure}[h!]
%\centering
%\includegraphics[width=0.65\columnwidth,trim={5cm 3cm 5cm 3cm},clip]{Figure/DD.pdf}
%\caption{{\small Pictorial scheme representing Double Difference applied to GNSS pseudorange measurements to determine the inter-receiver distance by merging independent observables from two receivers.}}
%\label{fig:DD}
%\end{figure} 


\par The architecture of the proposed collaborative framework is designed to overcome the limitations of direct communication strategies such as Direct Short Range Communications (DSRC) and Wi-Fi direct. It is indeed designed to exploit commercial cellular networks to support the functional exchange of data among the agents. As shown in Figure \ref{fig:labSetup2}, two smartphones were exploited to allow network communication and navigation capabilities to the UAV and UGV respectively exploiting on board Broadcom GNSS chipset and 4G network connectivity.

\begin{figure}[h!]
\centering
\includegraphics[width=0.65\columnwidth,trim={0cm 0cm 0cm 0cm},clip]{system.png}
\caption{{High-level block scheme of the experimental setup.}}
\label{fig:labSetup2}
\end{figure} 
 
\par Furthermore, the network interface has been used by the UAV to transmit raw pseudorange measurements to the UGV to perform collaborative ranging, thus enabling the rover to perform collaborative positioning without the need of additional sensors to achieve the required accuracy for the application.

\par Section \ref{GNSS_Collaborative_Ranging} opened the investigation to the DGNSS-CP based on the inter-device range from GNSS raw measurements between two Android devices within a communication framework \cite{gogoiVTC2019}. The availability of cooperative algorithms applied to the GNSS pushed researchers to design new frameworks to cope with the limitations of traditional approaches. The DGNSS-CP framework investigated in this work supports the exchange of raw GNSS measurements among multiple receivers interconnected by 4G/LTE or Wi-Fi 802.11x connectivity executed through an Android application. The measurements are hence synchronized through a Doppler compensation technique \cite{de2013zero} and the inter-agent distance is computed through a differential GNSS approach.

\par The DGNSS-CP framework exploited in this work acts according to the following steps for each PVT epoch, $t_k$

\begin{enumerate}
\item The UAV sends to the UGV its set of raw pseudorange measurements ${\bm{\rho}_\text{UAV}(t_k)}$ and the estimated position $\hat{\mathbf{x}}_\text{UAV}(t_k)$ with an associated timestamp $t_k$. This is achieved through the 4G/LTE connection of the two Android devices.
\item The UGV aligns the external set of measurements retrieved from the UAV  ${\bm{\rho}_\text{UAV}(t_k)}$, to the closest set of GNSS raw measurements locally dumped by exploiting a raw measurement output for the timestamp and the Doppler compensation technique through the Android application.
\item The UGV combines the local and external pseudorange measurements to determine the inter-agent distance between the UAV and UGV through the GNSS double differencing methodology presented in \cite{minetto2018theoretical}.
\item The UGV integrates such inter-agent distance  w.r.t. the position of the UAV (consistent) along with local pseudorange measurements within its navigation algorithm. This is done by first considering the inter-agent distance as an added measurement in the generic standalone measurement vector of satellite-to-receiver pseudoranges and then using the Extended Kalman Filter (EKF) algorithm \cite{misra2006global} for the navigation solution.
\end{enumerate}

\par In a harsh environment, the position estimation of UGV can be generally improved by the additional information carried by the set of pseudorange measurements shared by other receivers and it is not expected to show any particular drift \cite{8926529}. These benefits are mostly due to an improved geometry (reduced dilution of precision) of the ranging information \cite{8926529,7112186} and multipath error cancellation when GNSS signals collected by collaborating agents experience similar reflected paths.

\par Technical details concerning the implementation of the framework can be found in \cite{8891571,minetto2018tight,Minetto:2019:GCP:3331054.3331552} and in the technical documentation of the proof-of-concept realized in the framework of the ESA project HANSEL.


\subsection{Experimental setup and performance metrics} \label{sec:setup_and_metrics}

\par In order to test the feasibility of the proposed approach, an UAV and an UGV were deployed in an open test field in Turin, Italy near to a reference location coordinates of 45.0430N, 7.5395E. The test field, shown in Figure \ref{fig:scenario}, has been selected to verify the performance of the algorithm in open sky conditions. In such condition the accuracy improvement due to cooperation is expected to be limited and in parallel, the availability of a 4G/LTE satisfying signal coverage could be limited. Two Xiaomi Mi8 Pro smartphones equipped with Android 9, were chosen as a testbed hardware of the proposed technologies. 

%later on separate this figure into two. Because they are too small otherwise.
\begin{figure}[h!]
%\begin{figure*}[!htbp] 
    \centering
  \subfloat[\label{fig:res}]{%
       \includegraphics[width=0.49\linewidth,trim={0cm 0cm 0cm 0cm},clip]{UAV_UGV.jpg}}
  \subfloat[\label{fig:res2}]{%
        \includegraphics[width=0.43\linewidth,trim={0cm 0cm 0cm 0cm},clip]{Immagine9.png}}
  \caption{{GNSS fixes of UAV and UGV in follow-me configuration shown in Google Earth (\ref{fig:res}) and in real scenario (\ref{fig:res2}).}}
  \label{fig:scenario} 
%\end{figure*}
\end{figure}

\begin{figure}[h!]
%\begin{figure*}[!htbp] 
    \centering
  \subfloat[\label{fig:settings1}]{%
       \includegraphics[width=0.33\linewidth,trim={0cm 0cm 0cm 0cm},clip]{Immagine5.png}}
  \subfloat[\label{fig:settings2}]{%
        \includegraphics[width=0.33\linewidth,trim={0cm 0cm 0cm 0cm},clip]{Immagine7.png}}
          \subfloat[\label{fig:settings3}]{%
        \includegraphics[width=0.33\linewidth,trim={0cm 0cm 0cm 0cm},clip]{Immagine6.png}}
  \caption{{Hardware setup for UAV and UGV during on-field experiments.}}
  \label{fig:scenario} 
%\end{figure*}
\end{figure}

%\begin{figure}[h!]
%\centering
%\includegraphics[width=0.5\columnwidth,trim={0cm 0cm 0cm 0cm},clip]{Figure/UAV_UGV.jpg}
%\caption{{\small GNSS fixes of UAV and UGV in follow-me configuration shown in Google Earth.}}
%\label{fig:scenario}
%\end{figure} 

\par The devices were stably mounted on the rover and on the drone through specific supports, as shown in Figure \ref{fig:settings1} and Figure \ref{fig:settings2}. A proprietary Android\textsuperscript{\texttrademark} application was run on the smartphones to collect GNSS raw data during the tests and compute both the standalone GNSS and the cooperative positioning solution according to the framework discussed in Section \ref{sec:ProposedFramework}. The latter is achieved by receiving and integrating run-time UAV satellite pseudoranges and then computing the collaborative differential range according to the tight-integration approach presented in \cite{minetto2018tight,8891571}.

\par It is worth remarking that the cooperation was allowed bidirectionally to ensure the availability of CP solutions to both the agents. This is off-course unnecessary in a real implementation but it is helpful to highlight the unidirectional effectiveness of the paradigm within this specific application, as it will be detailed in Section \ref{sec:resultsPOC}.

\par The reference position was provided by the Google Fused Location Provider considering that at the moment, it uses measurements of GPS (when it’s available), cell-tower signal strength and Wi-Fi Received Signal Strength (RSS), and fuses them with the onboard proprioceptive sensors: inertial navigation from the accelerometer, gyro and compass \cite{van2018achieve}. 


\subsubsection{Experiments}

\par Three class of tests were performed to test the paradigm:

\begin{itemize}
    \item \textbf{Follow-me mode}: The UAV was manually and remotely controlled to follow the UGV along its path/trajectory. The distance was kept roughly constant (about $10$ m) between the agents. This test was conceived to exploit UAV specifically to improve navigation capabilities of the UGV and was inspired to the Martian helicopter support mission \cite{balaram2018mars} .
    \item \textbf{Independent hovering}: Operators independently drove the UAV and the UGV on different paths/trajectories. This test emulates an occasional collaboration for positioning and navigation purposes when the agents are performing independent tasks.
    \item \textbf{Partially-obstructed LoS}: This specific scenario was intended to demonstrate a different CP profitability when obstacles occlude the LoS towards GNSS satellites for the ground vehicle. In this case, the UGV was driven underneath a shack where laptops and accessories were temporary stored, while the UAV was kept hovering the area at about $20$ meters height. 
\end{itemize}

\subsubsection{Performance metrics}

\par RMS error is typically used to evaluate the positioning error but in real experiments we deal with a single positioning solution per each time instant, $t_k$. Therefore, the positioning error can be simply evaluated as the Euclidean distance of the estimated position from the reference position provided by the Google Fused Location Provider in 3D (considering spatial accuracy)

\begin{equation}
\label{eq:3DpositionError}
\xi_{\text{3D},k} = \sqrt{(\Delta E^2_k + \Delta N^2_k + \Delta U^2_k)}
\end{equation}

and in 2D (considering horizontal accuracy)

\begin{equation}
\label{eq:2DpositionError}
\xi_{\text{2D},k} = \sqrt{(\Delta E^2_k + \Delta N^2_k)}
\end{equation}

where the squared terms in \eqref{eq:2DpositionError} and \eqref{eq:3DpositionError} are the difference of each component in a ENU reference frame \cite{misra2006global}. It is helpful to recall that ENU coordinates are obtained from linear transformation of ECEF coordinates so that \eqref{eq:3DpositionError} can be equivalently computed in ECEF.

\par A \textit{Mean CP error }(2-D,3-D), defined as $\mathcal{E}_{\text{CP}}$ (m) can be computes through the mean positioning errors of CP w.r.t. Google Fusion Location Provider over the time epochs in which CP is profitable. 

\begin{equation}
\label{eq:meanErrorWhenProfitable}
\mathcal{E}_{\text{CP}} = \frac{1}{W}\sum_{w=1}^W \xi_k
\end{equation}

where $W=\sum p_k$ counts the overall amount of profitable epochs, formally $\forall k | p_k=1$.
In order to define a \textit{profitable epoch} the flag, $p_k$, assumes values according to the following conditions

\[   \left\{
\begin{array}{ll}
      p_k=0 & \xi_{\text{SA},k}-\xi_{\text{CP},k}<-T_{H} \\
      p_k=1 & \xi_{\text{SA},k}-\xi_{\text{CP},k}>+T_{H} \\
\end{array} 
\right. \]

where $T_{H}$ is a threshold used to perform a conservative classification of profitable/unprofitable epochs. A further conditions defined according to $T_H$ and named \textit{hysteresis}, identifies a region of non-significant improvement/worsening in accuracy.

%\item \textbf{Mean 3D RMSE GPS}: 3D Root Mean Square Error w.r.t. Google Fusion Location Provider when \gls{CP} is profitable
%Same metric as for 2D (Horizontal RMSE) over horizontal coordinates in \gls{ENU}/\gls{NED} frame 

\par Regarding standalone GNSS positioning, $\mathcal{E}_{\text{SA}}$ (m) equivalent to $\mathcal{E}_{\text{CP}}$ is evaluated for the GNSS standalone solution.


\subsection{Results}\label{sec:resultsPOC}

%\paragraph{COVID-19 Disclaimer}

\par The tests showed that the network-based transmission of the data was suitable for a real time integration of the exchanged measurements. Auxiliary UAV$\to$UGV range measurements computed by the UGV through the pseudorange and Doppler measurements provided by the UAV, were successfully integrated. Results are limited to the number of effective epochs during which the two systems were able to cooperate. Limiting conditions such as network latency and poor signal coverage of the 4G/LTE cellular network on the test field indeed reduced the cooperation between UAV and UGV.

\begin{figure}[!htbp]
\centering
\includegraphics[width=0.99\columnwidth,trim={0cm 0cm 0cm 0cm},clip]{UAV_UGVtest_new.eps}%original width 0.6
\caption{{Barplots showing the reduction in the positioning error of the UGV provided by profitable Cooperative Positioning (CP) for each class of experiments, Follow-me mode (left), Independent hovering (center) and Partially-obstructed LoS(right).}}
\label{fig:result}
\end{figure} 

%\begin{figure*}[!htbp] 
\begin{figure*}[hbt!] 
    \centering
  \subfloat[\label{fig:cdfUGV}]{%
       \includegraphics[width=0.48\linewidth,trim={0cm 0cm 0cm 0cm},clip]{CDF_UGV.eps}}
  \subfloat[\label{fig:cdfUAV}]{%
        \includegraphics[width=0.48\linewidth,trim={0cm 0cm 0cm 0cm},clip]{CDF_UAV.eps}}
  \caption{{Example of comparison of the CDFs computed through the post-processing of GNSS-only positioning solutions for UGV (\ref{fig:cdfUGV}) and UAV (\ref{fig:cdfUAV}) for the Follow-me mode.}}
  \label{fig:cdfs} 
\end{figure*}

\par The right barplot in Figure \ref{fig:result} highlights a higher accuracy improvement when satellite visibility, thus GDOP is reduced for the UGV which was travelling underneath a covered area of the field (in correspondence of the shack visible in the right side of Figure \ref{fig:res}.

\par Additional range measurements obtained along with the estimated position of the UAV allowed to reduce the positioning error of the GNSS-standalone solution up to the 48\% in 3D and 58\% in 2D, as shown in the right plot of Figure \ref{fig:result} for the Follow-me mode. It is to be noted that there was no improvement in the 2D positioning solution for the Independent hovering and Partially-pbstructed LoS modes. Looking at the Cumulative Density Functions (CDFs) of the first test (Follow-me mode) in Figure \ref{fig:cdfs}, we notice the sharp behaviour of the curves due to the low statistics collected. Despite this, it can be noticed that for the fixes computed by the UGV with an error in the range of $20$-$30$ m (area highlighted in grey), the DGNSS-CP provided a visible improvement. As expected, cooperation was not beneficial for the UAV which experienced already satisfying GNSS performance.


\vspace{\baselineskip}
%
%\begin{center}\Large\bfseries
%Good luck and have fun!
%\end{center}
