add activity recognition

This commit is contained in:
toni
2018-05-17 16:55:39 +02:00
parent c6690db051
commit 50c7a1c75b
3 changed files with 50 additions and 11 deletions

View File

@@ -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. }

View File

@@ -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$....

View File

@@ -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}