\section{System Overview} The navigation system is based on our previous works, primarily on the approach presented in \cite{ebner-15}. For this, we have been awarded the best overall paper award at IPIN 2015 in Banff, Canada. Since then, we extended our approach by prior navigation knowledge using realistic human walking paths \cite{ebner-16} and smoothing methods \cite{fetzer-16}. Additionally, a self-developed map editor allows for creating advanced 3D maps and realistically shaped stairs. Compared to many other systems, we avoid any time-consuming fingerprinting and calibration processes and are able to start with a uniform distribution over the whole building. All calculations are computed in real time on a commercial smartphone, in most of our examples this is the Motorola Nexus 6 or the Samsung Galaxy S5. The system is implemented in C++ using the Qt framework and OpenCL. \begin{figure} \centering \includegraphics[width=\linewidth]{gfx/info_graphic} \label{fig:sysoverview} \caption{A broad overview of the localization and navigation system presented. The sensor measurements and calculations are all provided by the smartphone itself. The floorplan is known beforehand but extensively used every time step.} \end{figure}% An overview of all involved components and the sensor fusion procedure can be seen in fig. \ref{fig:sysoverview}. Here, the smartphone provides all necessary measurements and no additional device is needed. The readings of all those sensors are fused using recursive density estimation, directly on the phone: % \begin{equation} \arraycolsep=1.2pt \begin{array}{ll} &p(\mStateVec_{t} \mid \mObsVec_{1:t}) \propto\\ &\underbrace{p(\mObsVec_{t} \mid \mStateVec_{t})}_{\text{evaluation}} \int \underbrace{p(\mStateVec_{t} \mid \mStateVec_{t-1}, \mObsVec_{t-1})}_{\text{transition}} \underbrace{p(\mStateVec_{t-1} \mid \mObsVec_{1:t-1})d\vec{q}_{t-1}}_{\text{recursion}} \enspace, \end{array} \label{eq:recursiveDensity} \end{equation} % where $\mObsVec_{1:t} = \mObsVec_{1}, \mObsVec_{1}, ..., \mObsVec_{t}$ is a series of observations up to time $t$. The hidden state $\mStateVec$ is given by \begin{equation} \mStateVec = (x, y, z, \mStateHeading, \mStatePressure),\enskip x, y, z, \mStateHeading, \mStatePressure \in \R \enspace, \end{equation} % where $x, y, z$ represent the position in 3D space, $\mStateHeading$ the user's heading and $\mStatePressure$ the relative atmospheric pressure prediction in hectopascal (hPa). The recursive part of the density estimation contains all information up to time $t-1$. Furthermore, the state transition $p(\mStateVec_{t} \mid \mStateVec_{t-1}, \mObsVec_{t-1})$ models the pedestrian's movement, whereby the evaluation provides a likelihood for every sensor. Containing all relevant sensor measurements to evaluate the current state, the observation vector is defined as follows: % \begin{equation} \mObsVec = (\mRssiVec_\text{wifi}, \mRssiVec_\text{ib}, \mObsHeading, \mObsSteps, \mObsPressure) \enspace, \end{equation} % where $\mRssiVec_\text{wifi}$ and $\mRssiVec_\text{ib}$ contain the measurements of all nearby \docAP{}s (\docAPshort{}) and \docIBeacon{}s, respectively. Both serve as absolute positioning component. $\mObsHeading$ and $\mObsSteps$ describe the relative angular change and the number of steps detected for the pedestrian. If the smartphone provides a barometer, $\mObsPressure$ is used as an additional, relative verification for the current $z$-component of the pedestrian's location. % The recursive density estimation of eq. \eqref{eq:recursiveDensity} is implemented using a particle-filter with the state transition as proposal density. This ensures valid position estimations even if a sensor is defect or is not provided by the smartphone itself. \section{Prior Arrangements} System setup is very easily and no fingerprinting is required. \begin{figure}[h!] \centering% \includegraphics[trim=99 0 0 0, clip, width=8.2cm]{editor1.png}% \end{figure} \begin{itemize} \item Map building: Grobe Beschreibung, Funktionen und Moeglichkeiten des Map Builders. bildchen \item Adding Transmitters: geht schnell und ist total einfach \end{itemize} \input{chapters/components.tex} \input{chapters/performance.tex}