|
|
|
|
@@ -33,8 +33,10 @@
|
|
|
|
|
To reduce the system's memory footprint, we search for the largest connected region within the graph and
|
|
|
|
|
remove all nodes and edges that are not connected to this region.
|
|
|
|
|
|
|
|
|
|
New states $\mStateVec_{t}$ may now be sampled by starting at the vertex for $\fPos{\mStateVec_{t-1}}$ and
|
|
|
|
|
walking along adjacent nodes into a given walking-direction $\gHead$ until a distance $\gDist$ is
|
|
|
|
|
New states $\mStateVec_{t}$ may now be sampled by starting at the vertex for
|
|
|
|
|
position $\fPos{\mStateVec_{t-1}} = (x,y,z)^T$
|
|
|
|
|
\commentByFrank{eingefuehrt}
|
|
|
|
|
and walking along adjacent nodes into a given walking-direction $\gHead$ until a distance $\gDist$ is
|
|
|
|
|
reached \cite{Ebner-15}.
|
|
|
|
|
Both, heading and distance, are supplied by the current sensor readings $\mObsVec_{t}$
|
|
|
|
|
and thus reflect the pedestrian's real heading and walking speed including uncertainty.
|
|
|
|
|
@@ -45,12 +47,14 @@
|
|
|
|
|
\gDist &= \mObs_t^{\mObsSteps} \cdot \SI{0.7}{\meter} + \mathcal{N}(0, \sigma_{\gDist}^2)
|
|
|
|
|
.
|
|
|
|
|
\end{align}
|
|
|
|
|
\commentByFrank{fixed. war das falsche makro in (2) und dem satz darunter. das delta musste weg. der state hat ein absolutes heading}
|
|
|
|
|
%
|
|
|
|
|
During the random walk, each edge has its own probability $p(e)$
|
|
|
|
|
which e.g. depends on the edge's direction $\angle e$ and the
|
|
|
|
|
pedestrian's current heading $\gHead$.
|
|
|
|
|
Furthermore, $p(e)$ is used to incorporate prior path knowledge to
|
|
|
|
|
favour edges leading towards the pedestrian's desired target.
|
|
|
|
|
Furthermore, section \ref{sec:nav} uses $p(e)$ to incorporate prior path knowledge to
|
|
|
|
|
favour edges leading towards the pedestrian's desired target $\mTarget$.
|
|
|
|
|
\commentByFrank{fixed}
|
|
|
|
|
|
|
|
|
|
For each single movement on the graph, we calculate $p(e)$ for all edges
|
|
|
|
|
connected to a vertex $v$, and, hereafter, randomly draw the to-be-walked edge
|
|
|
|
|
@@ -73,6 +77,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\section{Navigational Knowledge}
|
|
|
|
|
\label{sec:nav}
|
|
|
|
|
|
|
|
|
|
Considering navigation, a pedestrian wants to reach a well-known destination which represents additional
|
|
|
|
|
prior knowledge. Most probably, the user will stick to the path presented by
|
|
|
|
|
@@ -85,10 +90,10 @@
|
|
|
|
|
|
|
|
|
|
As discussed in section \ref{sec:relatedWork}, simply applying a shortest-path algorithm such as Dijkstra or
|
|
|
|
|
A* using the previously created graph would obviously lead to non-realistic paths sticking to walls and
|
|
|
|
|
walking many diagonals. Pedestrian's however, will probably keep a small gap between themselves and
|
|
|
|
|
walking many diagonals. Pedestrians however, will probably keep a small gap between themselves and
|
|
|
|
|
nearby walls. To calculate paths that resemble this behaviour, an importance-factor is derived for
|
|
|
|
|
each vertex. Those will be used to modify the distance $\fDistance{u}{v}$ between two vertices
|
|
|
|
|
$u,v$, examined by the shortest-path algorithm.
|
|
|
|
|
each vertex. Those will be used to modify the weight $\fDistance{v}{v'}$ between two vertices
|
|
|
|
|
$v,v'$, examined by the shortest-path algorithm.
|
|
|
|
|
|
|
|
|
|
To downvote vertices near walls, we need to determine the distance of each vertex from its nearest wall.
|
|
|
|
|
We therefore derive an inverted version $G' = (V', E')$ of the graph $G$, just describing walls and
|
|
|
|
|
@@ -137,7 +142,8 @@
|
|
|
|
|
\varphi = \fPos{v_i}-\vec{c} \enskip.
|
|
|
|
|
\end{equation}
|
|
|
|
|
%
|
|
|
|
|
For $\mat{\Sigma}$, the two largest eigenvalues $\{\lambda_1, \lambda_2 \mid \lambda_1 > \lambda_2\}$
|
|
|
|
|
For $\mat{\Sigma}$, the two largest eigenvalues $\lambda_1, \lambda_2$ with $\lambda_1 > \lambda_2$
|
|
|
|
|
\commentByFrank{fixed}
|
|
|
|
|
are calculated. If their ratio $^{\lambda_1}/_{\lambda_2}$ is above a certain
|
|
|
|
|
threshold, the neighbourhood describes a flat ellipse and thus either a door or a straight wall.
|
|
|
|
|
%
|
|
|
|
|
@@ -180,7 +186,8 @@
|
|
|
|
|
door-regions higher values, depicted in fig. \ref{fig:importance}.
|
|
|
|
|
%
|
|
|
|
|
\begin{figure}
|
|
|
|
|
\includegraphics[width=\columnwidth]{floorplan_importance}
|
|
|
|
|
%\includegraphics[width=\columnwidth]{floorplan_importance}
|
|
|
|
|
\input{gfx/floorplan_importance}
|
|
|
|
|
\caption{The calculated importance-factor \refeq{eq:finalImp} for each vertex.
|
|
|
|
|
While the dark wall-elements denote a small importance, the yellow areas around doors and narrow
|
|
|
|
|
passages depict a high importance.}
|
|
|
|
|
@@ -247,15 +254,16 @@
|
|
|
|
|
%
|
|
|
|
|
This centre serves as the starting point for the shortest-path calculation.
|
|
|
|
|
As it is not necessarily part of the grid, its nearest-grid-neighbour is determined and used instead.
|
|
|
|
|
This vertex is located somewhere within the sample-set and already knows the way to the pedestrian's destination.
|
|
|
|
|
This vertex is located somewhere within the sample-set and already knows the way to the pedestrian's
|
|
|
|
|
destination $\mTarget$.
|
|
|
|
|
%
|
|
|
|
|
As new states $\mStateVec_{t}$ should approach the pedestrian's destination
|
|
|
|
|
we use a reference $\pathRef$ all states try to reach. This references must
|
|
|
|
|
be both, part of the shortest path and located somewhere outside of the sample-set.
|
|
|
|
|
be both part of the shortest path and located somewhere outside of the sample-set.
|
|
|
|
|
%
|
|
|
|
|
We thus calculate the standard deviation of the distance of all samples from the centre
|
|
|
|
|
$\pathCentroid$. After advancing the starting-vertex by three times this deviation
|
|
|
|
|
we get a new point $\pathRef$ that is: part of the shortest path, outside of the sample-set
|
|
|
|
|
we get the new point $\pathRef$ that is: part of the shortest path, outside of the sample-set
|
|
|
|
|
and closer (but not too close) to the desired destination.
|
|
|
|
|
%
|
|
|
|
|
Hereafter, the simple transition \refeq{eq:transSimple} is combined with a second probability,
|
|
|
|
|
@@ -274,7 +282,7 @@
|
|
|
|
|
0.1 & \text{else}
|
|
|
|
|
\end{cases}
|
|
|
|
|
\end{split}
|
|
|
|
|
.
|
|
|
|
|
\enskip .
|
|
|
|
|
\label{eq:transShortestPath}
|
|
|
|
|
\end{equation}
|
|
|
|
|
%
|
|
|
|
|
@@ -284,7 +292,7 @@
|
|
|
|
|
\subsubsection{Multipath}
|
|
|
|
|
|
|
|
|
|
The shortest-path algorithm mentioned in \ref{sec:pathEstimation} already calculated the distance
|
|
|
|
|
$\fDistance{v}{\dot{v}}$ % = \sum_{i=s}^{e-1} \| v_{i} - v_{i+1} \| $
|
|
|
|
|
$\fLength{v}{\dot{v}}$ % = \sum_{i=s}^{e-1} \| v_{i} - v_{i+1} \| $
|
|
|
|
|
for the path from $v$ to the pedestrian's destination $\dot{v}$.
|
|
|
|
|
We thus apply the same assumption as \refeq{eq:transShortestPath} and downvote edges
|
|
|
|
|
not decreasing the distance to the destination:
|
|
|
|
|
@@ -296,10 +304,11 @@
|
|
|
|
|
\mathcal{N} (\angle e \mid \gHead, \sigma_\text{dev}^2) \cdot \alpha \\
|
|
|
|
|
\alpha &=
|
|
|
|
|
\begin{cases}
|
|
|
|
|
0.9 & \fDistance{v'}{\dot{v}} < \fDistance{v}{\dot{v}} \\
|
|
|
|
|
0.9 & \fLength{v'}{\dot{v}} < \fLength{v}{\dot{v}} \\
|
|
|
|
|
0.1 & \text{else}
|
|
|
|
|
\end{cases}
|
|
|
|
|
\end{split}
|
|
|
|
|
\enskip .
|
|
|
|
|
\label{eq:transMultiPath}
|
|
|
|
|
\end{equation}
|
|
|
|
|
%
|
|
|
|
|
@@ -308,11 +317,13 @@
|
|
|
|
|
are covered and slight deviations from the shortest version are possible.
|
|
|
|
|
%
|
|
|
|
|
\begin{figure}
|
|
|
|
|
\includegraphics[width=\columnwidth, trim=4 8 4 4]{floorplan_dijkstra_heatmap}
|
|
|
|
|
\caption{Heat-Map of visited vertices after several walks using \refeq{eq:transMultiPath} with colours
|
|
|
|
|
from cold to hot. Both possible paths are covered and slight deviations are possible.
|
|
|
|
|
%\includegraphics[width=\columnwidth, trim=4 8 4 4]{floorplan_dijkstra_heatmap}
|
|
|
|
|
\input{gfx/floorplan_dijkstra_heatmap}
|
|
|
|
|
\caption{Heat-Map showing the number of visits per vertex after $30.000$ walks using \refeq{eq:transMultiPath}.
|
|
|
|
|
Both possible paths are covered and slight deviations are possible.
|
|
|
|
|
Additionally shows the shortest-path calculation without (dashed) and with (solid) importance-factors
|
|
|
|
|
used for edge-weight-adjustment.}
|
|
|
|
|
used for edge-weight-adjustment.
|
|
|
|
|
\commentByFrank{so besser?}}
|
|
|
|
|
\label{fig:multiHeatMap}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
|