diff --git a/tex/chapters/eval.tex b/tex/chapters/eval.tex index c591577..ed63756 100644 --- a/tex/chapters/eval.tex +++ b/tex/chapters/eval.tex @@ -41,7 +41,7 @@ The comparison between a single RSSI measurement $\mRssi_i$ and the reference is \end{equation} \noindent where $\mu_{i,\mPosVec}$ denotes the (predicted) average signal strength and $\sigma_{i,\mPosVec}^2$ a corresponding standard deviation for the \docAPshort{} identified by $i$, regarding the location $\mPosVec$. -Within this work $\mu_{\mPosVec}$ is calculated by a modified version of the wall-attenuation-factor model as presented in \cite{Ebner-17}. Here, the prediction depends on the 3D distance $d$ from the \docAPshort{} and the number of floors $\Delta f$ between the \docAPshort{} and $\mPosVec$ of the particle-in-question: +Within this work $\mu_{\mPosVec}$ is calculated by a modified version of the wall-attenuation-factor model as presented in \cite{Ebner-17}. Here, the prediction depends on the 3D distance $d$ from the \docAPshort{} and the number of floors $\Delta f$ between the \docAPshort{} and $\mPosVec$ of the state-in-question: \begin{equation} \mu_{\mPosVec} = \mTXP - 10 \mPLE \log_{10}{\frac{\mMdlDist}{\mMdlDist_0}} + \Delta{f} \mWAF @@ -68,12 +68,13 @@ The target function to optimize the $6$ model parameters for one \docAPshort{} i (s_{\mPosVec} - \mu_{\mPosVec})^2 \enskip,\enskip\enskip \mu_{\mPosVec} = - \mTXP{} + 10 \mPLE{} \log_{10} \| \mPosVec-\mPosAPVec \| + \text{floors}(\mPosVec,\mPosAPVec) \mWAF{} + \mTXP{} + 10 \mPLE{} \log_{10} \| \mPosVec-\mPosAPVec \| + \Delta f \mWAF{} \enspace . \label{eq:optTarget} \end{equation} -\noindent Here, one reduces the squared error between reference measurements $s_{\mPosVec} \in \vec{s}$ with well-known location $\mPosVec$ and corresponding model predictions $\mu_{\mPosVec}$ (cf. eq. \eqref{eq:wallAtt}). +\noindent Here, one reduces the squared error between reference measurements $s_{\mPosVec} \in \vec{s}$ with well-known location $\mPosVec$ and corresponding model predictions $\mu_{\mPosVec}$ (cf. eq. \eqref{eq:wallAtt}). +The number of floors between $\mPosVec$ and $\mPosAPVec$ is again given by $\Delta f$. As discussed by \cite{Ebner-17}, optimizing all 6 parameters, especially the unknown \docAPshort{} position $\mPosAPVec$, usually results in optimizing a non-convex, discontinuous function. A promising way to deal with non-convex functions is using a genetic algorithm, which is inspired by the process of natural selection \cite{goldberg89}. @@ -107,17 +108,50 @@ Nevertheless, our method also allows to distribute beacons in the whole building To enable continuous floor changes we use a simple activity recognition based on the smartphone's barometer and accelerometer. The method distinguishes between the following: standing, walking, walking up or walking down. -\todo{fill me} +For each sensor we define two fixed-sized windows: $\vec{\omega}_\text{s}$ (short) and $\vec{\omega}_\text{l}$ (long). +As their naming suggests, the windows differ in size and thus in the number of raw sensor measurements they hold. +Both windows are implemented as real-time queues. +Therefore, if a new sensor measurement is added, the oldest entry will be removed. -All this is evaluated within $p(\vec{o}_t \mid \vec{q}_t)_\text{act}$ by providing a probability based on whether a particle is located at a stair, an elevator or the floor. -If the current activity $\mObsActivity$ is recognized as "standing", a particle located on the floor receives a probability given by $\kappa$, otherwise $1 - \kappa$. -The same applies to "walking up" and "walking down", here a particle located on one of the possible staircases or elevators receives $\kappa$ and those who remain on the floor $1 - \kappa$. -The probability $\kappa$ is chosen empirically. +To recognize the respective activities, we suggest a very simple threshold-based process. +Defining a threshold $t_\text{acc}$ for acceleration (m/s$^2$) and $t_\text{baro}$ for altitude (hPa). +A corresponding activity is chosen by + +\begin{equation} + \mObsActivity = + \begin{cases} + \text{standing} & \Delta \bar\omega_\text{acc} < t_\text{acc} \\ + \text{walking} & |\Delta \bar\omega_\text{baro}| < t_\text{baro} \\ + \text{walking down} & \Delta \bar\omega_\text{baro} > 0 \\ + \text{walking up} & \text{otherwise} + \end{cases} +\end{equation} + +\noindent where + +\begin{equation} + \Delta \bar\omega = \bar\omega_\text{l} - \bar\omega_\text{s} +\end{equation} +\noindent and $\bar\omega$ provides the arithmetic mean of the respective windows and thus represents a moving average. +We set $t_\text{acc} = $ \SI{0.015}{m/s$^2$} and $t_\text{baro} = $ \SI{0.042}{m/s$^2$}. +For both involved sensors we suggest to set the size of $\vec{\omega}_\text{s}$ between \SI{0.3}{\second} and \SI{0.6}{\second}. +Recognizing if the pedestrian is standing or walking requires less prior data, then climbing stairs. +Therefore, $\vec{\omega}_\text{l, acc}$ is recommended between \SI{1}{\second} and \SI{2}{\second}, while $\vec{\omega}_\text{l, baro}$ between \SI{3}{\second} and \SI{5}{\second}. +It should be noted, that the window size is a classic trade-off between flexibility and robustness. +The larger the window, the slower changes become noticeable and vice versa. +Of course, the above suggested values are depended upon the particular requirements and used sensors. +However, they should be valid for many modern commercially available smartphones. + +The activity is now evaluated using $p(\vec{o}_t \mid \vec{q}_t)_\text{act}$ by providing a probability based on whether the 3D location $\mPosVec$ of the state-in-question is on a staircase, in an elevator or on the floor. +If the current activity $\mObsActivity$ is recognized as "standing", a $\mPosVec$ located on the floor results in a probability given by $\kappa$, otherwise $1 - \kappa$. +The same applies to "walking up" and "walking down", here a $\mPosVec$ located on one of the possible staircases or elevators provides $\kappa$ and those who remain on the floor $1 - \kappa$. +The likelihood for $\kappa$ is chosen empirically. It is useful to find a reasonable value that is not too restrictive. In most cases, $\kappa = 0.75$ provides good results by remaining enough room for erroneous classifications. -A significant higher value like $\kappa = 0.99$ could cause the particle filter to be stuck on a staircase or to be unable to change floors. +A significant higher value like $\kappa = 0.99$ could cause the system to be stuck on a staircase or to be unable to change floors. +\commentByToni{Wir haben im related work schon von particeln gesprochen. hier in der eval nehm ich aber wieder viel state und state-in-question. wie wollen wir es machen?} \commentByToni{warum wir die große treeppe so schwer ist: wlan model zieht JEDE decke ab, nicht nur die sichtbaren, weil das model einfach so gebaut wurde. } diff --git a/tex/chapters/misc.tex b/tex/chapters/misc.tex index ddd3a14..36b52ba 100644 --- a/tex/chapters/misc.tex +++ b/tex/chapters/misc.tex @@ -10,6 +10,8 @@ \item bulli methode (gleich citen :)) \end{itemize} + + \subsection{Sample Impoverishment} \begin{itemize} \item einfache methode um das zu beheben. @@ -17,4 +19,6 @@ \end{itemize} +%fürs verständnis, diesen satz hier nicht vergessen. +as described in chapter \ref{sec:rse}, a particle is a weighted representation of one possible system state $\mStateVec$.... diff --git a/tex/chapters/system.tex b/tex/chapters/system.tex index 113522e..74993b0 100644 --- a/tex/chapters/system.tex +++ b/tex/chapters/system.tex @@ -17,11 +17,11 @@ The filtering equation to calculated the posterior is given by the recursion \label{equ:bayesInt} \end{equation} % -where $\mState$ is the hidden state and $\mObs_t$ provides the corresponding observation vector at time $t$. +where $\mStateVec_t$ is the hidden state and $\mObsVec_t$ provides the corresponding observation vector at time $t$. As realization of \eqref{equ:bayesInt} we use the well-known CONDENSATION particle filter \cite{Isard98:CCD}. Here, the transition is used as proposal distribution and a resampling step is utilized to handle the phenomenon of weight degeneracy. -The state $\mState$ is given by +The state $\mStateVec$ is given by % \begin{equation} \mStateVec = (x, y, z, \mStateHeading),\enskip @@ -29,6 +29,7 @@ The state $\mState$ is given by \end{equation} % where $x, y, z$ represent the position in 3D space and $\mStateHeading$ is the user's current (absolute) heading. +In context of particle filtering, a particle is thus a weighted representation of one possible state $\mStateVec$. The observation vector is defined as % \begin{equation}