From 8596732f43f934c6f10588f9c56e11739db8a88f Mon Sep 17 00:00:00 2001 From: kazu Date: Tue, 2 May 2017 13:34:13 +0200 Subject: [PATCH] current TeX --- tex/bare_conf.tex | 5 +- tex/chapters/system.tex | 29 ++++-- tex/chapters/work.tex | 196 +++++++++++++++++++++++++--------------- tex/egbib.bib | 54 +++++++++++ tex/misc/functions.tex | 1 + 5 files changed, 199 insertions(+), 86 deletions(-) diff --git a/tex/bare_conf.tex b/tex/bare_conf.tex index 3acb2fa..c4e0aad 100755 --- a/tex/bare_conf.tex +++ b/tex/bare_conf.tex @@ -39,7 +39,8 @@ \usepackage{color, colortbl} %\usepackage{cite} \usepackage{graphicx} - +\usepackage{subcaption} +%\usepackage{subfigure} \interdisplaylinepenalty=2500 \usepackage{array} @@ -89,7 +90,7 @@ % gfx include folder -\graphicspath{ {gfx/baro/},{gfx/graph/},{gfx/paths/},{gfx/eval/},{gfx/},{gfx/grid/}} +\graphicspath{ {gfx/paths/},{gfx/},{gfx2/}} % correct bad hyphenation here diff --git a/tex/chapters/system.tex b/tex/chapters/system.tex index 57292a2..ce8b4df 100755 --- a/tex/chapters/system.tex +++ b/tex/chapters/system.tex @@ -21,7 +21,7 @@ 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{Ebner-16, Fetzer-16}. + \cite{Ebner2016OPN, Fetzer2016OMC}. This hidden state $\mStateVec$ is given by @@ -38,13 +38,14 @@ The corresponding observation vector is defined as % \begin{equation} - \mObsVec = (\mRssiVecWiFi{}, \mObsSteps, \mObsHeadingRel, \mObsHeadingAbs, \mObsGPS) \enspace. + \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 smartphone, $\mObsSteps$ describes the number of steps detected since the last filter-step, $\mObsHeadingRel$ the (relative) angular change since the last filter-step, - $\mObsHeadingAbs$ the current, vague absolute heading and + $\mObsHeadingAbs$ the current, vague absolute heading, + $\mPressure$ the ambient pressure in hPa and $\mObsGPS = ( \mObsGPSlat, \mObsGPSlon, \mObsGPSaccuracy)$ the current location (if available) given by the GPS. @@ -53,14 +54,24 @@ \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} + 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} % + 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}$. + % The remaining observations, derived from aforementioned smartphone sensors, - namely: detected steps, relative- and absolute heading are + namely: detected steps, and relative heading are used within the transition model, where potential movements $p(\mStateVec_{t} \mid \mStateVec_{t-1}, \mObsVec_{t-1})$ are not only constrained by the buildings floorplan but also by @@ -68,17 +79,17 @@ As this work focuses on \docWIFI{} optimization, not all parts of the localization system are discussed in detail. - For missing explanations please refer to \cite{Ebner-16}. + For missing explanations please refer to \cite{Ebner2016OPN}. % - {\bf Since then}, absolute heading and GPS have been added as additional sensors + Compared to this reference, absolute heading and GPS have been added as additional sensors to further enhance the localization. Their values are incorporated by simply comparing the sensor readings against a distribution that models the sensor's uncertainty. %\todo{neues resampling? je nach dem was sich noch in der eval zeigt} As GPS will only work outdoors, e.g. when moving from one building into another, - the system's absolute position indoors is solely provided by the \docWIFI{} component. - Therefore its crucial for this component to provide location estimations + the system's absolute position indoors is solely provided by \docWIFI{}. + Therefore its crucial for this component to supply location estimations that are as accurate as possible, while ensuring fast setup and maintenance times. diff --git a/tex/chapters/work.tex b/tex/chapters/work.tex index abcdc7b..4eb2c66 100755 --- a/tex/chapters/work.tex +++ b/tex/chapters/work.tex @@ -1,8 +1,8 @@ \section{WiFi Location Estimation} \label{sec:optimization} - The \docWIFI{} sensor infers the pedestrian's current location based on a comparison between recent measurements - (the smartphone continuously scans for nearby \docAP{}s) and reference measurements or + The \docWIFI{} sensor infers the pedestrian's current location based on a comparison between live observations + (the smartphone continuously scans for nearby \docAP{}s) and fingerprints or signal strength predictions for well known locations: \begin{equation} @@ -22,15 +22,12 @@ In \refeq{eq:wifiProb}, $\mu_{i,\mPosVec}$ and $\sigma_{i,\mPosVec}$ denote the average signal strength and corresponding standard deviation for the \docAPshort{} identified by $i$, - that should be measurable given the location $\mPosVec = (x,y,z)^T$. Those two value can be determined using various - methods. Most common, as of today, seems fingerprinting, where hundreds of locations throughout the building - are scanned beforehand. The received \docAP{}s including their average signal strength and deviation - denote each location's fingerprint \cite{radar}. + that should be measurable given the location $\mPosVec = (x,y,z)^T$. Those two values can be determined using various + methods. Most common and accurate, as of today, is fingerprinting, where hundreds of locations throughout the building + are scanned beforehand. The received \docAP{}s including their (average) signal strength and deviation + denote each location's fingerprint. % - While allowing for highly accurate location estimations, given enough fingerprints, such a setup is costly, - as fingerprinting is a manual process. - % - We therefore use a model to predict the average signal strength for each location, + To prevent the time-consuming setup process, we use a model to predict the average signal strength for each location, based on the \docAPshort{}'s position $\mPosAPVec{} = (x,y,z)^T$ and a few additional parameters. @@ -65,22 +62,23 @@ Depending on the use case, this value describes the number and type of walls, ceilings, floors etc. between both positions. For obstacles, this requires an intersection-test of each obstacle with the line-of-sight, which is costly for larger buildings. For real-time use on a smartphone, a (discretized) model pre-computation might thus be necessary - \cite{competition}. Furthermore this requires a detailed floorplan, that includes material information - for walls, doors, floors and ceilings. + \cite{competition2016}. + %Furthermore this requires a detailed floorplan, that includes material information + %for walls, doors, floors and ceilings. Throughout this work, we thus use a tradeoff between both models, where walls are ignored and only floors/ceilings are considered. Assuming buildings with even floor levels, the number of floors/ceilings between two position can be determined - without costly intersection checks and thus allows for real-time use cases. + without costly intersection checks and thus allows for real-time use cases running on smartphones. \begin{equation} - x = \mTXP{} + 10 \mPLE{} + \log_{10} \frac{d}{d_0} + \numFloors{} \mWAF{} + \mGaussNoise{} + \mRssi = \mTXP{} + 10 \mPLE{} + \log_{10} \frac{d}{d_0} + \numFloors{} \mWAF{} + \mGaussNoise{} \label{eq:logNormShadowModel} \end{equation} - In \refeq{eq:logNormShadowModel}, those are included using a constant attenuation factor \mWAF{} - multiplied by the number of floors/ceilings \numFloors{} between sender and the location in question. + In \refeq{eq:logNormShadowModel}, a constant attenuation factor \mWAF{} is + multiplied by the number \numFloors{} of floors/ceilings between sender and the location in question. The attenuation \mWAF{} (per element) depends on the building's architecture and for common, - steel enforced concrete floors $\approx 8.0$ is a viable choice \cite{TODO}. + steel enforced concrete floors $\approx 8.0$ is a viable choice \cite{ElectromagneticPropagation}. @@ -100,65 +98,100 @@ \subsection{Model Parameter Optimization} - \begin{figure}[t!] - \input{gfx/wifiop_show_optfunc_params} - \caption{ - The average error (in \SI{}{\decibel}) between all reference measurements and corresponding model predictions - for one \docAPshort{} dependent on \docTXP{} \mTXP{} and \docEXP{} \mPLE{} - [known position $\mPosAPVec{}$, fixed \mWAF{}] denotes a convex function. - } - \label{fig:wifiOptFuncTXPEXP} - \end{figure} + %\begin{figure} + % \input{gfx/wifiop_show_optfunc_params} + % \caption{ + % The average error (in \SI{}{\decibel}) between all reference measurements and corresponding model predictions + % for one \docAPshort{} dependent on \docTXP{} \mTXP{} and \docEXP{} \mPLE{} + % [known position $\mPosAPVec{}$, fixed \mWAF{}] denotes a convex function. + % } + % \label{fig:wifiOptFuncTXPEXP} + %\end{figure} For systems that demand a higher accuracy, one can choose a compromise between fingerprinting and - pure empiric model parameters where (some) model parameters are optimized, + aforementioned pure empiric model parameters by optimizing those parameters based on a few reference measurements throughout the building. - Obviously, the more parameters are unknown ($\mPosAPVec{}, \mTXP{}, \mPLE{}, \mWAF{}$) the more - reference measurements are necessary to provide a stable optimization. + Obviously, the more parameters are staged for optimization ($\mPosAPVec{}, \mTXP{}, \mPLE{}, \mWAF{}$) the more + reference measurements are necessary to provide a stable result. Depending on the desired accuracy, setup time and whether the transmitter positions are known or unknown, several optimization strategies arise, where not all 6 parameters are optimized, but only some of them. - Just optimizing \mTXP{} and \mPLE{} with constant \mWAF{} and known transmitter position - usually means optimizing a convex function as can be seen in figure \ref{fig:wifiOptFuncTXPEXP}. - For such error functions, algorithms like gradient descent and simplex \cite{gradientDescent, downhillSimplex1, downhillSimplex2} - are well suited and will provide the global minima: - + The target function \refeq{eq:optTarget} optimizes the model-parameters for one \docAP{} by reducing the squared error between + reference measurements $s_{\mPosVec} \in \vec{s}$ with well-known location $\mPosVec$ and corresponding + model predictions $\mu_{\mPosVec}$. + \begin{equation} - argmin_{bla} blub() - TODO TODO TODO + \epsilon^* = + \argmin_{\mPosAPVec, \mTXP, \mPLE, \mWAF} + \sum_{s_{\mPosVec} \in \vec{s}} + (s_{\mPosVec} - \mu_{\mPosVec})^2 + \enskip,\enskip\enskip + \mu_{\mPosVec} = + \mTXP{} + 10 \mPLE{} + \log_{10} \| \mPosVec-\mPosAPVec \| + \text{floors}(\mPosVec,\mPosAPVec) \mWAF{} + \label{eq:optTarget} \end{equation} - - - + + Just optimizing \mTXP{} and \mPLE{} with constant \mWAF{} and known transmitter position + usually means optimizing a convex function, as can be seen in figure \ref{fig:wifiOptFuncTXPEXP}. + For such error functions, algorithms like gradient descent and simplex \cite{gradientDescent, downhillSimplex1, downhillSimplex2} + are well suited and will provide the global minima. + However, optimizing an unknown transmitter position usually means optimizing a non-convex, discontinuous - function, especially when the $z$-coordinate, that influences the number of attenuating floors/ceilings, + function, especially when the $z$-coordinate, that influences the number of attenuating floors / ceilings, is involved. While the latter can be mitigated by introducing a continuous function for the - number $n$ of floors/ceilings, like a sigmoid, the function is not necessarily convex. - As can be seen in figure \ref{fig:wifiOptFuncPosYZ}, there are two local minima and only one of - both also is a global one. - - \begin{figure}[t!] - \input{gfx/wifiop_show_optfunc_pos_yz} + number $n$, e.g. a sigmoid, the function is not necessarily convex. + Figure \ref{fig:wifiOptFuncPosYZ} depicts two local minima and only one of both also is a global one. + + \begin{figure*} + \centering + \begin{subfigure}{0.48\textwidth} + %\centering + \input{gfx/wifiop_show_optfunc_params} + \caption{ + Modifying \docTXP{} \mTXP{} and \docEXP{} \mPLE{} + [known position $\mPosAPVec{}$, fixed \mWAF{}] denotes a convex function. + } + \label{fig:wifiOptFuncTXPEXP} + \end{subfigure}% + \enskip\enskip + \begin{subfigure}{0.48\textwidth} + %\centering + \input{gfx/wifiop_show_optfunc_pos_yz} + \caption{ + Modifying $y$- and $z$-position [fixed $x$, \mTXP{}, \mPLE{} and \mWAF{}] + denotes a non-convex function with multiple local minima. + } + \label{fig:wifiOptFuncPosYZ} + \end{subfigure} \caption{ - The average error (in \SI{}{\decibel}) between reference measurements and model predictions - for one \docAPshort{} dependent on $y$- and $z$-position [fixed $x$, \mTXP{}, \mPLE{} and \mWAF{}] - usually denotes a non-convex function with multiple [here: two] local minima. + Average error (in \SI{}{\decibel}) between all reference measurements and corresponding model predictions + for one \docAPshort{}. } - \label{fig:wifiOptFuncPosYZ} - \end{figure} + \end{figure*} + + %\begin{figure} + % \input{gfx/wifiop_show_optfunc_pos_yz} + % \caption{ + % The average error (in \SI{}{\decibel}) between reference measurements and model predictions + % for one \docAPshort{} dependent on $y$- and $z$-position [fixed $x$, \mTXP{}, \mPLE{} and \mWAF{}] + % usually denotes a non-convex function with multiple [here: two] local minima. + % } + % \label{fig:wifiOptFuncPosYZ} + %\end{figure} Such functions demand for optimization algorithms, that are able to deal with non-convex functions, like genetic approaches. However, initial tests indicated that while being superior to simplex and similar algorithms, the results were not satisfactorily and the optimization often did not converge. As the Range of the six to-be-optimized parameters is known ($\mPosAPVec{}$ within the building, - \mTXP{}, \mPLE{}, \mWAF{} within a sane interval), we used some modifications. + \mTXP{}, \mPLE{}, \mWAF{} within a sane interval around empiric values), we used some modifications. The algorithms initial population is uniformly sampled from the known range. During each iteration the best \SI{25}{\percent} of the population are kept and the remaining entries are re-created by modifying the best entries with uniform random values within $\pm$\SI{10}{\percent} of the known range. To stabilize the result, the allowed modification range - (starting at \SI{10}{\percent}) is reduced over time, known as cooling \cite{todo}. + %(starting at \SI{10}{\percent}) + is reduced over time, often referred to as {\em cooling} \cite{Kirkpatrick83optimizationby}. \subsection{Modified Signal Strength Model} @@ -174,43 +207,56 @@ %the inferred location was more erroneous than before. As the used model tradeoff does not consider walls, it is expected to provide erroneous values - for regions that are heavily shrouded by e.g. steel-enforced concrete or metallised glass. + for regions that are heavily shrouded, e.g. by steel-enforced concrete or metallised glass. Instead of using only one optimized model per \docAP{}, we use several instances with different - parameters that are limited to some region within the building: + parameters that are limited to some region within the building. By reducing the area + that the model has to describe, we expect the limited number of model parameters to + provide better (local) results. - {\bf \optPerFloor{}} will use one model for each story, that is optimized using + {\em \optPerFloor{}} will use one model for each story, that is optimized using only the fingerprints that belong to the corresponding floor. During evaluation, - the $z$-value from $\mPosVec{}$ in \refeq{eq:wifiProb} is used to select the model + the $z$-value from $\mPosVec{}$ in \refeq{eq:wifiProb} is used to select the correct model for this location's signal strength estimation. - {\bf \optPerRegion{}} works similar, except that the model is limited to a predefined, - axis-aligned bounding box. This approach allows a distinction between in- and outdoor-regions - or locations that are expected to highly differ from their surroundings. + {\em \optPerRegion{}} works similar, except that each model is limited to a predefined, + axis-aligned bounding box. This approach allows for an even more refined distinction between + several areas like in- and outdoor-regions or locations that are expected to highly differ + from their surroundings. - \todo{AP wird in einer region nur dann beruecksichtigt, wenn mindestanzahl an messungen vorhanden ist!} + Especially the second model imposes a potential issue we need to address: + If an \docAPshort{} is seen only once or twice within such a bounding box, it is impossible + to optimize its parameters, just like a line can not be defined using one single point. + However, due to \refeq{eq:wifiProb}, we need each model to provide the same number of + \docAP{}s. Otherwise regions with less known transmitters would automatically be more + likely than others. We therefore use fixed model parameters, + \mTXP = \SI{-100}{\decibel{}m}, \mPLE = 0 and \mWAF = \SI{0}{\decibel}. This yields + a model that always returns \SI{-100}{\decibel{}m}, independent of the distance from the transmitter. + While this most probably is not the correct reading for all locations, it works + for most cases, as usual smartphones are unable to measure signals below this threshold. - \todo{das heißt aber, dass an unterschiedlichen stellen unterschiedlich viele APs verglichen werden. das geht ned. deshalb feste -100} + %\todo{AP wird in einer region nur dann beruecksichtigt, wenn mindestanzahl an messungen vorhanden ist!} + %\todo{das heißt aber, dass an unterschiedlichen stellen unterschiedlich viele APs verglichen werden. das geht ned. deshalb feste -100} \subsection{\docWIFI{} quality factor} - Evaluations within previous works showed, that there are many situations where the \docWIFI{} location estimation + Evaluations within previous works showed, that there are many situations where the overall \docWIFI{} location estimation is highly erroneous. Either when the signal strength prediction model does not match real world conditions or the received measurements are ambiguous and there is more than one location within the building that matches those readings. Both cases can occur e.g. in areas surrounded by - concrete walls where the model does not match the real world conditions as those walls are not considered, + concrete walls, where the model does not match the real world conditions as those walls are not considered, and the smartphone barely receives \docAPshort{}s due to the high attenuation. - If such a sensor error occurs only for a short time period, the recursive density estimation - \refeq{eq:recursiveDensity} is able to compensate those errors using other observations and the transition + If such a sensor error occurs only for a short time period, the recursive density estimation from + \refeq{eq:recursiveDensity} is able to compensate using other observations and the transition model. However, if the sensor-fault persists for a longer time period, such an error will slowly distort the posterior distribution. As our movement model depends on the actual floorplan, the density might get trapped e.g. within a room if the other sensors are unable to compensate for the \docWIFI{} error. - Thus, we try to determine the quality of received \docWIFI{} measurements, which allows for + Thus, we try to determine the quality of received measurements, which allows for temporarily disabling \docWIFI{}'s contribution within the evaluation \refeq{eq:evalDensity} - for situations where the quality is insufficient. + if the quality is insufficient. In \refeq{eq:wifiQuality} we use the average signal strength of all \docAP{}s seen within one measurement and scale this value to match a region of $[0, 1]$ depending on an upper- and lower bound. @@ -219,7 +265,7 @@ \begin{equation} \newcommand{\leMin}{l_\text{min}} \newcommand{\leMax}{l_\text{max}} - q(\mRssiVec) = + \text{quality}(\mRssiVec) = \max(0, \min( \frac{ @@ -237,21 +283,21 @@ \label{sec:vap} Assuming normal conditions, the received signal strength at one location will also (strongly) vary over time - due to environmental conditions like temperature, humidity, open/closed doors and RF interference. + due to environmental conditions like temperature, humidity, open / closed doors and RF interference. Fast variations can be addressed by averaging several consecutive measurements at the expense of a delay in time. To prevent this delay we use the fact, that many buildings use so called virtual access points where one physical hardware \docAP{} provides more than one virtual network to connect to. - They can usually be identified, as only the last digit of the MAC-address is altered among the virtual networks. + They can usually be identified, as only the last digit of the MAC address is altered among the virtual networks. % - As those virtual networks normally share the same frequency, they are unable to transmit at the same instant in time. + As those normally share the same frequency, they are unable to transmit at the same instant in time. When scanning for \docAPshort{}s one will thus receive several responses from the same hardware, all with a very small delay (micro- to milliseconds). Such measurements may be grouped using some aggregate - function like average, median or maximum. + function like average, median or maximum instead of using each single measurement. Furthermore, VAP grouping can be used to suppress unlikely observations: If a physical hardware is known - to provide six virtual networks, it is unlikely to only see one of those networks. This is likely due to - temporal effects and/or multipath signal propagation and the received signal strength will often be far from + to provide six virtual networks, it is unlikely for the smartphone to only see one of those networks. + This is due to temporal effects or multipath signal propagation and the received signal strength will often be far from the normal average. It thus makes sense to just omit such unlikely observations, focusing on the remaining, stable ones. diff --git a/tex/egbib.bib b/tex/egbib.bib index 65b5eb1..dce818e 100755 --- a/tex/egbib.bib +++ b/tex/egbib.bib @@ -2707,3 +2707,57 @@ volume = {13}, year = {1967} } + + +@inproceedings{Fetzer2016OMC, + author = {T. Fetzer and F. Ebner and L. K{\"o}ping and M. Grzegorzek and F. Deinzer}, + title = {{On Monte Carlo Smoothing in Multi Sensor Indoor Localisation}}, + booktitle = {Indoor Positioning and Indoor Navigation (IPIN), Int. Conf. on}, + editor = {}, + year = {2016}, + month = {October}, + publisher = {IEEE}, + pages = {}, + address = {Madrid, Spain}, + issn = {} +} + +@inproceedings{Ebner2016OPN, + author = {F. Ebner and T. Fetzer and M. Grzegorzek and F. Deinzer}, + title = {{On Prior Navigation Knowledge in Multi Sensor Indoor Localisation}}, + booktitle = {International Conference on Information Fusion (FUSION 2016)}, + editor = {}, + year = {2016}, + month = {July}, + publisher = {IEEE}, + address = {Heidelberg, Germany}, + pages = {}, + isbn = {} +} + +@article{competition2016, + TITLE = {{The Smartphone-Based Offline Indoor Location Competition at IPIN 2016: Analysis and Future Work}}, + AUTHOR = {Torres-Sospedra, Joaqu{\'i}n and Jim{\'e}nez, Antonio and Knauth, Stefan and Moreira, Adriano and Beer, Yair K and Fetzer, Toni and Ta, Viet-Cuong and Montoliu, Raul M and Seco, Fernando and Mendoza-Silva, Germ{\'a}n M and Belmonte, Oscar and Koukofikis, Athanasios and Nicolau, Maria João and Costa, Ant{\'o}nio and Meneses, Filipe M and Ebner, Frank and Deinzer, Frank and Vaufreydaz, Dominique and Dao, Trung-Kien and Castelli, Eric}, + URL = {https://hal.inria.fr/hal-01490744}, + JOURNAL = {{Sensors}}, + PUBLISHER = {{MDPI}}, + VOLUME = {557}, + PAGES = {17}, + YEAR = {2017}, + DOI = {10.3390/s17030557}, + KEYWORDS = {evaluation and benchmarking ; smartphone applications ; indoor localization technology ; indoor navigation}, + PDF = {https://hal.inria.fr/hal-01490744/file/sensors-17-00557.pdf}, + HAL_ID = {hal-01490744}, + HAL_VERSION = {v1}, +} + + +@ARTICLE{Kirkpatrick83optimizationby, + author = {S. Kirkpatrick and C. D. Gelatt and M. P. Vecchi}, + title = {Optimization by simulated annealing}, + journal = {SCIENCE}, + year = {1983}, + volume = {220}, + number = {4598}, + pages = {671--680} +} diff --git a/tex/misc/functions.tex b/tex/misc/functions.tex index 345fed8..514a7ec 100755 --- a/tex/misc/functions.tex +++ b/tex/misc/functions.tex @@ -49,6 +49,7 @@ + \newcommand{\fPos}[1]{\textbf{pos}(#1)} \newcommand{\fDistance}[2]{\delta(#1, #2)} \newcommand{\fWA}[1]{\text{wall}(#1)}