\section{Indoor Positioning System} \label{sec:system} Our smartphone-based indoor localization system estimates a pedestrian's current location and heading using recursive density estimation seen in \refeq{eq:recursiveDensity}. \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} The pedestrian's hidden state $\mStateVec$ is given by \begin{equation} \mStateVec = (x, y, z, \mStateHeading),\enskip x, y, z, \mStateHeading \in \R \enspace, \end{equation} % where $x, y, z$ represent its position in 3D space and $\mStateHeading$ his current (absolute) heading. The corresponding observation vector, given by the smartphone's sensors, is defined as % \begin{equation} \mObsVec = (\mRssiVecWiFi{}, \mObsSteps, \mObsHeadingRel, \mObsHeadingAbs, \mPressure, \mObsGPS) \enspace. \end{equation} % $\mRssiVecWiFi$ contains the signal strength measurements of all \docAP{}s (\docAPshort{}s) currently visible to the phone, $\mObsSteps$ describes the number of steps detected since the last filter-step, $\mObsHeadingRel$ the (relative) angular change since the last filter-step, $\mObsHeadingAbs$ the vague absolute heading as provided by the magnetometer, $\mPressure$ the ambient pressure in hPa and $\mObsGPS = ( \mObsGPSlat, \mObsGPSlon, \mObsGPSaccuracy)$ the current location (if available) given by the GPS. Assuming statistical independence, the state-evaluation density from \refeq{eq:recursiveDensity} can be written as % \begin{equation} p(\vec{o}_t \mid \vec{q}_t) = p(\vec{o}_t \mid \vec{q}_t)_\text{wifi}\enskip p(\vec{o}_t \mid \vec{q}_t)_\text{gps}\enskip p(\vec{o}_t \mid \vec{q}_t)_\text{abshead}\enskip p(\vec{o}_t \mid \vec{q}_t)_\text{activity}\enskip \enspace. \label{eq:evalDensity} \end{equation} % Besides the evaluation, a movement model, based on random walks on a graph, samples only those transitions (= pedestrian movements), that are allowed by the building's floorplan. %$p(\mStateVec_{t} \mid \mStateVec_{t-1}, \mObsVec_{t-1})$ The smartphone's accelerometer, gyroscope, magnetometer, GPS- and \docWIFI{}-module provide the observations for both, the transition and the following evaluation step to infer the hidden state, namely the pedestrian's location and heading \cite{Ebner2016OPN, Fetzer2016OMC}. Absolute location information is provided by $p(\vec{o}_t \mid \vec{q}_t)_\text{wifi}$ and $p(\vec{o}_t \mid \vec{q}_t)_\text{gps}$, if available. The vague absolute heading provided by the smartphone's magnetometer is included using a simple heuristic for $p(\vec{o}_t \mid \vec{q}_t)_\text{abshead}$. Finally, the barometer is used to distinguish between normal walking and climbing stairs within $p(\vec{o}_t \mid \vec{q}_t)_\text{activity}$. Furthermore, the smartphone's IMU is used to infer the number of steps and the relative turn angle the pedestrian has taken since the last filter-update. While those values could be used within the evaluation \refeq{eq:evalDensity} we apply them within the transition model to estimate the pedestrian's potential movement $p(\mStateVec_{t} \mid \mStateVec_{t-1}, \mObsVec_{t-1})$ within the building. Using real values to perform this movement-update instead of just scattering randomly along the floorplan followed by downvoting within the evaluation \refeq{eq:evalDensity} provides a more stable result. As this work focuses on \docWIFI{} optimization, not all parts of the localization system were discussed in detail. For missing explanations and further details on aforementioned practices, please refer to \cite{Ebner2016OPN}. % Compared to this reference, absolute heading and GPS have been added as additional sensors to further enhance the localization. As can be seen in \refeq{eq:evalAbsHead} and \refeq{eq:evalGPS}, their values are incorporated using a simple distribution that models each sensor's uncertainty. \begin{equation} p(\vec{o}_t \mid \vec{q}_t)_\text{abshead} = \begin{cases} 0.7 & | \mObsVec_{\mObsHeadingAbs} - \mStateVec_{\mStateHeading} | < \SI{120}{\degree} \\ 0.3 & \text{else} \end{cases} \label{eq:evalAbsHead} \end{equation} \begin{equation} p(\vec{o}_t \mid \vec{q}_t)_\text{gps} = \mathcal{N}( d \mid 0, \sigma^2 ), \enskip d = \text{distance}( (\mObsGPS_\text{lat}, \mObsGPS_\text{lon}), (\mStateVec_x, \mStateVec_y) ), \enskip \sigma = \mObsGPS_\text{accuracy} \label{eq:evalGPS} \end{equation} %\todo{neues resampling? je nach dem was sich noch in der eval zeigt} The GPS sensor should enhance scenarios where multiple, unconnected buildings are involved and the pedestrian is required to move outdoors to enter the next facility. Indoors the GPS will usually not provide viable location estimations and the system has to solely rely on the smartphone's \docWIFI{} observations. Therefore its crucial for this component to supply location estimations that are as accurate as possible, while the component itself must be easy to set-up and maintain. \todo{ueberleitung besser?}