diff --git a/main.cpp b/main.cpp index ce76f7f..4bffdca 100644 --- a/main.cpp +++ b/main.cpp @@ -514,15 +514,19 @@ void plotEstAndRealApPosDistance(Floorplan::IndoorMap* map) { K::Statistics statsExp; K::Statistics statsWaf; K::Statistics statsPosErr; + int numAPs = 0; + int numWrongZ = 0; for (const AccessPoint& ap : mdl.getAllAPs()) { + // param range const WiFiModelLogDistCeiling::APEntry params = mdl.getAP(ap.getMAC()); statsTxp.add(params.txp); statsExp.add(params.exp); statsWaf.add(params.waf); + // position error const Point3 mdlPos = params.position_m; const auto& it = FloorplanHelper::getAP(map, ap.getMAC()); @@ -531,9 +535,17 @@ void plotEstAndRealApPosDistance(Floorplan::IndoorMap* map) { const Point3 realPos = fap->getPos(floor); + const float posErr = mdlPos.getDistance(realPos); statsPosErr.add(posErr); + // wrong z? + if (mdlPos.z < floor->atHeight || mdlPos.z > (floor->atHeight+floor->height)) { + ++numWrongZ; + } + + ++numAPs; + } PlotErrFunc pef("", "\\docAP{}s (%)"); @@ -553,6 +565,7 @@ void plotEstAndRealApPosDistance(Floorplan::IndoorMap* map) { std::cout << "EXP:\t" << statsExp.asString() << std::endl; std::cout << "WAF:\t" << statsWaf.asString() << std::endl; std::cout << "Pos:\t" << statsPosErr.asString() << std::endl; + std::cout << "WrongZ:\t" << numWrongZ << " (" << (numWrongZ*100.0f/numAPs) << "%) "<< std::endl; int i = 0; (void) i; diff --git a/tex/chapters/experiments.tex b/tex/chapters/experiments.tex index feb9b3f..4d66858 100644 --- a/tex/chapters/experiments.tex +++ b/tex/chapters/experiments.tex @@ -21,6 +21,8 @@ % -------------------------------- optimization -------------------------------- % + \subsection{Model optimization} + As the signal strength prediction model is the heart of the absolute positioning component described in \ref{sec:system} we start with the model parameter estimation (see \ref{sec:optimization}) for \mTXP, \mPLE and \mWAF based on some reference measurements and compare the results @@ -51,55 +53,7 @@ % visible APs: % cnt(121) min(2.000000) max(22.000000) range(20.000000) med(8.000000) avg(9.322314) stdDev(4.386709) - As mentioned in section \ref{sec:optimization}, we will look at various optimization strategies: - - {\bf\noOptEmpiric{}} uses the same three empiric parameters \mTXP{}, \mPLE{}, \mWAF{} for each \docAPshort{} in combination - with its position, which is well known from the floorplan. - - {\bf\optParamsAllAP{}} is the same as above, except that the three parameters are optimized - using the reference measurements. - - {\bf\optParamsEachAP{}} optimizes the three parameters per \docAP{} instead of using the same - parameters for all. - - {\bf\optParamsPosEachAP{}} does not need any prior knowledge and will optimize all six parameters - (3D position, \mTXP, \mPLE, \mWAF) based on the reference measurements. - - {\bf\optPerFloor{}} and {\bf\optPerRegion{}} are just like \optParamsPosEachAP{} except that - there are several sub-models that are optimized for one floor / region instead of the whole building. - - Figure \ref{fig:wifiModelError} shows the optimization results for all strategies, which are as expected: - The estimation error is indirectly proportional to the number of optimized parameters. - However, even with \optPerRegion{} the maximal error is relatively high due to some locations that do - not fit the model at all. Looking at the optimization results for \mTXP{}, \mPLE{} and \mWAF{} supports - this finding. While the median for those values based on all optimized transmitters is totally sane - (-42, 2.4, 6.0), the minimum and maximum values are clearly outside of the physically possible range. - - - \begin{figure} - \input{gfx/wifi_model_error_0_95.tex} - \input{gfx/wifi_model_error_95_100.tex} - \label{fig:wifiModelError} - \caption{ - Comparison between different optimization strategies by examining the error (in \decibel) at each reference measurement. - The higher the number of variable parameters, the better the model resembles real world conditions. - } - \end{figure} - - - %TXP: cnt(34) min(-67.698959) max(4.299183) range(71.998146) med(-41.961170) avg(-41.659286) stdDev(17.742294) - %EXP: cnt(34) min(0.932817) max(4.699000) range(3.766183) med(2.380410) avg(2.546959) stdDev(1.074687) - %WAF: cnt(34) min(-27.764957) max(5.217187) range(32.982143) med(-5.921916) avg(-7.579522) stdDev(5.840527) - %Pos: cnt(34) min(3.032438) max(26.767128) range(23.734690) med(7.342710) avg(8.571227) stdDev(4.801449) - - Looking at figure \ref{fig:wifiIndoorOutdoor} indicates the strong attenuation imposed by the metallised - windows installed within our building. Even though the transmitter is only \SI{5}{\meter} away from the reference - measurement, the windows attenuate the signal as much as \SI{50}{\meter} of corridor. - While \optPerRegion{} is able to overcome some of those situations, it requires a profound prior knowledge - when selecting the regions that model should work with. - %Such issues can only be fixed using more appropriate models that consider walls and other obstacles. - - \begin{figure} + \begin{figure}[b] \centering \input{gfx/compare-wifi-in-out.tex} \label{fig:wifiIndoorOutdoor} @@ -109,31 +63,81 @@ the metallised windows (dashed outline) attenuate the signal by over \SI{30}{\decibel} (lower rectangle). } \end{figure} - - BESCHREIBEN + Figure \ref{fig:wifiIndoorOutdoor} depicts the to-be-expected issues by examining the signal strength + values of the reference measurements for one \docAP{}. + Even though the transmitter is only \SI{5}{\meter} away from the reference + measurement (small box), the metallised windows attenuate the signal as much as \SI{50}{\meter} + of corridor (wide box). The model described in section \ref{sec:sigStrengthModel} will not be able + to match such situations, due to the lack of obstacle information. + % + We will thus look at various optimization strategies and the error between + the resulting estimation model and our reference measurements: + + {\em\noOptEmpiric{}} uses the same three empiric parameters \mTXP{}, \mPLE{}, \mWAF{} for each \docAPshort{} in combination + with its position, which is well known from the floorplan. + + {\em\optParamsAllAP{}} is the same as above, except that the three parameters are optimized + using the reference measurements. + + {\em\optParamsEachAP{}} optimizes the three parameters per \docAP{} instead of using the same + parameters for all. + + {\em\optParamsPosEachAP{}} does not need any prior knowledge and will optimize all six parameters + (3D position, \mTXP, \mPLE, \mWAF) based on the reference measurements. + + {\em\optPerFloor{}} and {\em\optPerRegion{}} are just like \optParamsPosEachAP{} except that + there are several sub-models that are optimized for one floor / region instead of the whole building. + + Figure \ref{fig:wifiModelError} shows the optimization results for all strategies, which are as expected: + The estimation error is indirectly proportional to the number of optimized parameters. + However, even with {\em \optPerRegion{}} the maximal error is relatively high due to some locations that do + not fit the model at all. Looking at the optimization results for \mTXP{}, \mPLE{} and \mWAF{} supports + this finding. While the median for those values based on all optimized transmitters is totally sane + (\SI{-42}{\decibel{}m}, \SI{2.4}, \SI{-6.0}{\decibel}), the minimum and maximum values are clearly outside of the physically possible range. + + The same holds for the estimated transmitter position when using {\em \optParamsPosEachAP{}}: The median + distance between estimated and real position is $\sim$\SI{8}{\meter} and the maximum $\sim$\SI{27}{\meter}. + For \SI{68}{\percent} of all installed transmitters, the estimated floor-number matched the real location. \begin{figure} - \centering - \input{gfx/wifiOptApPosDifference.tex} - \caption{UNNÖTIG?} + \input{gfx/wifi_model_error_0_95.tex} + %\input{gfx/wifi_model_error_95_100.tex} + \label{fig:wifiModelError} + \caption{ + Comparison between different optimization strategies by examining the error (in \decibel) at each reference measurement. + The higher the number of variable parameters, the better the model resembles real world conditions. + } \end{figure} - + % statds: + %TXP: cnt(34) min(-67.698959) max(4.299183) range(71.998146) med(-41.961170) avg(-41.659286) stdDev(17.742294) + %EXP: cnt(34) min(0.932817) max(4.699000) range(3.766183) med(2.380410) avg(2.546959) stdDev(1.074687) + %WAF: cnt(34) min(-27.764957) max(5.217187) range(32.982143) med(-5.921916) avg(-7.579522) stdDev(5.840527) + %Pos: cnt(34) min(3.032438) max(26.767128) range(23.734690) med(7.342710) avg(8.571227) stdDev(4.801449) + + While {\em \optPerRegion{}} is able to overcome the indoor vs. outdoor issues depicted in + figure \ref{fig:wifiIndoorOutdoor} e.g. by using a separate bounding box just for the outdoor area, + it obviously requires a profound prior knowledge when selecting the individual regions for the sub-model. + %Such issues can only be fixed using more appropriate models that consider walls and other obstacles. + + % das ist wohl zu viel + %\begin{figure} + % \centering + % \input{gfx/wifiOptApPosDifference.tex} + % \caption{zu viel, oder?} + %\end{figure} + % -------------------------------- number of fingerprints -------------------------------- % - - wie viele fingerprints sind genug? + + As we try to minimize the system's setup time as much as possible, we need to determine + the amount of necessary reference measurements for the optimization to produce viable model parameters. + Depending on the number of to-be-optimized model parameters, more measurements are required. + This especially holds true for {\em \optPerRegion{}} where each region needs at least some measurements + to determine transmitter positions and parameters. - Haengt vom modell ab - - bei den einfachen modellen aendert sich erstmal nicht viel. man hat ja viele testdaten für ein modell mit wenigen parametern. - je mehr variable wird, z.B. position, und das ganze pro AP und nicht füer alle, desto wichtiger wird, dass die fingerprints passen. - - neuralgische schwachpunkte wie betonierte treppenhäuser kann man weglassen, dadurch wird der rest etwas besser, - die treppenhäuser ansich aber natürlich nochmal schlechter. siehe \ref{fig:wifiNumFingerprints} - - \begin{figure} + \begin{figure}[b] \input{gfx/wifi_model_error_num_fingerprints_method_5_0_90.tex} \input{gfx/wifi_model_error_num_fingerprints_method_5_90_100.tex} \label{fig:wifiNumFingerprints}% @@ -141,13 +145,27 @@ number of fingerprints }% \end{figure} - - + + Figure \ref{fig:wifiNumFingerprints} depicts the impact of reducing the number of fingerprints + for the {\em \optPerRegion{}} strategy. Only using 60 of the 121 fingerprints yields only a slightly + increasing model error and still provides good results. While using only \SI{25}{\percent} of the reference + measurements increases the error rapidly, \SI{75}{\percent} of all considered errors are still better + than using just empiric values without any reference measurements. + + Additionally we examined the impact of skipping reference measurements for difficult locations + like aforementioned staircases, surrounded by concrete. While this slightly decreases the + estimation error for all other positions, the error within those locations is dramatically + increasing (see lower half of figure \ref{fig:wifiNumFingerprints}). It is thus highly recommended + to include such locations. + + % -------------------------------- wifi walk error -------------------------------- % - Using aforementioned model setups and the measurements $\mRssiVec$ determined by scanning for nearby \docAPshort{}s, + \subsection{Location estimation error} + + Using the optimized model setups and the measurements $\mRssiVec$ determined by scanning for nearby \docAPshort{}s, we can directly perform a location estimation by rewriting \refeq{eq:wifiProb}: \begin{equation} @@ -180,7 +198,7 @@ using linear interpolation between adjacent markers. % walked paths - \begin{figure} + \begin{figure}[t] { \centering \input{gfx/all_walks.tex} @@ -196,7 +214,7 @@ for each \docWIFI{} measurement within the recorded paths (3756 \docAPshort{} scans in total) against the corresponding ground-truth, which indicates the absolute 3D error in meter. - \begin{figure} + \begin{figure}[b] \input{gfx/modelPerformance_meter.tex} \label{fig:modelPerformance} \caption{ @@ -217,7 +235,7 @@ % -------------------------------- plots indicating walk issues -------------------------------- % - \begin{figure} + \begin{figure}[t] \input{gfx/wifiMultimodality.tex} \label{fig:wifiMultimodality} \caption{ diff --git a/tex/chapters/work.tex b/tex/chapters/work.tex index c5ccc5c..e79adc4 100644 --- a/tex/chapters/work.tex +++ b/tex/chapters/work.tex @@ -35,6 +35,7 @@ \subsection{Signal Strength Prediction Model} + \label{sec:sigStrengthModel} \begin{equation} \mRssi = \mTXP{} + 10 \mPLE{} + \log_{10} \frac{d}{d_0} + \mGaussNoise{} @@ -97,6 +98,16 @@ \subsection{Model Parameter Optimization} + \begin{figure}[t!] + \input{gfx/wifiop_show_optfunc_params} + \label{fig:wifiOptFuncTXPEXP} + \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. + } + \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, based on a few reference measurements throughout the building. @@ -115,15 +126,7 @@ TODO TODO TODO \end{equation} - \begin{figure} - \input{gfx/wifiop_show_optfunc_params} - \label{fig:wifiOptFuncTXPEXP} - \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. - } - \end{figure} + 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, @@ -133,7 +136,7 @@ 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} + \begin{figure}[t!] \input{gfx/wifiop_show_optfunc_pos_yz} \label{fig:wifiOptFuncPosYZ} \caption{