diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index b2fe97b..9c57830 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -50,9 +50,10 @@ FILE(GLOB SOURCES main.cpp mainTrilat.cpp mainProb.cpp + mainPlotting.cpp Eval.cpp FtmKalman.cpp - trilateration.cpp + trilateration.cpp ) diff --git a/code/Settings.h b/code/Settings.h index 1b61ed6..5c4f1b9 100644 --- a/code/Settings.h +++ b/code/Settings.h @@ -16,7 +16,7 @@ namespace Settings { const bool PlotToPng = false; const bool UseKalman = false; - const bool UseRSSI = false; + const bool UseRSSI = true; /** describes one dataset (map, training, parameter-estimation, ...) */ diff --git a/code/main.cpp b/code/main.cpp index f8b1030..77b5b94 100644 --- a/code/main.cpp +++ b/code/main.cpp @@ -333,7 +333,6 @@ static CombinedStats run(Settings::DataSetup setup, int walkIdx, std::str { plot.addCircle(10000 + nucConfig.second.ID, nucConfig.second.position.xy(), 0.1); } - plot.plot(); // particle-filter const int numParticles = 5000; @@ -716,6 +715,11 @@ int main(int argc, char** argv) std::cout << "Trilateration" << "\n"; return mainTrilat(argc, argv); } + else if (args.hasFlag("plot")) + { + std::cout << "Plotting" << "\n"; + return mainPlotting(argc, argv); + } CombinedStats statsAVG; CombinedStats statsMedian; diff --git a/code/main.h b/code/main.h index 09e4b6c..aebb91e 100644 --- a/code/main.h +++ b/code/main.h @@ -3,3 +3,5 @@ int mainTrilat(int argc, char** argv); int mainProp(int argc, char** argv); + +int mainPlotting(int argc, char** argv); diff --git a/code/mainTrilat.cpp b/code/mainTrilat.cpp index 43dc0f9..06e4c4e 100644 --- a/code/mainTrilat.cpp +++ b/code/mainTrilat.cpp @@ -111,15 +111,18 @@ static CombinedStats run(Settings::DataSetup setup, int walkIdx, std::str for (const Offline::Entry& e : fr.getEntries()) { - if (e.type != Offline::Sensor::WIFI_FTM) { + if (e.type != Offline::Sensor::WIFI_FTM && e.type != Offline::Sensor::GROUND_TRUTH) { continue; } // TIME const Timestamp ts = Timestamp::fromMS(e.ts); + if (e.type == Offline::Sensor::WIFI_FTM) + { auto wifiFtm = fr.getWifiFtm()[e.idx].data; obs.push_back(wifiFtm); + } if (ts - lastTimestamp >= Timestamp::fromMS(500)) { @@ -212,8 +215,7 @@ static CombinedStats run(Settings::DataSetup setup, int walkIdx, std::str plot.addLabel(ss.str(), Point3(70, i*5, 0), i); } } - - + } // Png Output //if (Settings::PlotToPng) @@ -231,7 +233,6 @@ static CombinedStats run(Settings::DataSetup setup, int walkIdx, std::str plot.plot(); std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } obs.clear(); lastTimestamp = ts; diff --git a/tex/bare_conf.tex b/tex/bare_conf.tex index 3066310..5aeccb0 100644 --- a/tex/bare_conf.tex +++ b/tex/bare_conf.tex @@ -16,7 +16,6 @@ \usepackage{color, colortbl} \usepackage{graphicx} -\usepackage{subcaption} \interdisplaylinepenalty=2500 @@ -29,6 +28,8 @@ \usepackage{array} \usepackage{multirow} \usepackage{xfrac} +\usepackage{mwe} +\usepackage{subfig} %\updates{yes} % If there is an update available, un-comment this line diff --git a/tex/chapters/2_relatedwork.tex b/tex/chapters/2_relatedwork.tex index 26010cc..70b06f6 100644 --- a/tex/chapters/2_relatedwork.tex +++ b/tex/chapters/2_relatedwork.tex @@ -19,4 +19,11 @@ \etal{Ibrahim} lays the required groundwork to use the still experimental FTM standard and verifies the general accuracy \cite{ibrahim2018verification}. \etal{Yu} present a system using FTM measurements and multisensor multi-pattern-based dead reckoning based on a Unscented Kalman filter sensor fusion \cite{yu2019robust}. -\etal{Xu} \cite{xu2019locating}. \ No newline at end of file +\etal{Xu} \cite{xu2019locating}. + +Compared to the above state of the art our work... +\begin{itemize} + \item szenario realistischer und nicht nur quadrate die man läuft + \item direkter vergleich mit RSSI + \item in der praxis erprobte verfahren darauf laufen lassen. +\end{itemize} diff --git a/tex/chapters/8_experiments.tex b/tex/chapters/8_experiments.tex index 13378a5..4023ead 100644 --- a/tex/chapters/8_experiments.tex +++ b/tex/chapters/8_experiments.tex @@ -1,6 +1,7 @@ \section{Experiments} -\subsection{Setup and Environment} +\subsection{Hardware Setup} + %\begin{itemize} % \item Pixel 2XL Android P liefert RSSI und FTM @@ -58,7 +59,7 @@ In contrast to regular stationary access points which are usually mounted on wal -\subsection{Ftm range meas performance} +\subsection{Verification FTM Performance in LOS Scenario} %\begin{itemize} % \item AP position strategy % \item DoP plot @@ -97,43 +98,72 @@ The geometry and properties of the internal antenna are unknown. % Erkenntnis 4: Unterschied zwischen Pixel 2 und 3 ist nicht erkennbar +\begin{figure}[ht] + +\begin{minipage}{.5\textwidth} +\centering +\subfloat[]{\label{main:a}\includegraphics[width=\textwidth]{DistMeasMean.png}} +\end{minipage}% +\begin{minipage}{.5\textwidth} +\centering +\subfloat[]{\label{main:b}\includegraphics[width=\textwidth]{DistMeasMeanPerPixel.png}} +\end{minipage}\par\medskip +\centering +\subfloat[CDF of error]{\label{main:c}\includegraphics[width=\textwidth]{DistMeasCDF.png}} + +\caption{my fig} +\label{fig:main} +\end{figure} + +\subsection{Range Measurements in NLOS Scenario} +Während der posionierung ist an gewissen stellen eine systematische abweichung zum gt aufgefallen dies trat immer an zwei stellen auf, daraus folgender die hypthese das es irgendwie an dieser gegebenheit liegen muss. als folge daraus ist dann eben entstanden das wir die brandschutztüren gesehen haben und dann eine experiment aufgebaut haben um die hypthese zu messen, inwiefern sich die türen oder besser gesagt wie sich unterschiedliche wandmateriellien, insbesondere wenn diese so extrem wie hier sind, auf die FTM Messungen auswirken. + +rssi grafik lassen wir weg (bst2rssi.png) und schreiben das nur im text. müssen ja nur den sprung von 7 auf 8 beschreiben. interessanter sind die FTM Plots mit der Streuung (bst2ftm.png) \begin{figure}[ht] -\begin{minipage}[t]{0.48\textwidth} - \centering - \includegraphics[width=1\textwidth]{DistMeasMean.png} - \caption{Mean distance per WiFi card} -\end{minipage} -\begin{minipage}[t]{0.48\textwidth} - \centering - \includegraphics[width=1\textwidth]{DistMeasMeanPerPixel.png} - \caption{Mean distance per Pixel} -\end{minipage} -\begin{minipage}[t]{1.0\textwidth} - \centering - \includegraphics[width=1\textwidth]{DistMeasCDF.png} - \caption{Dist. Meas CDF} -\end{minipage} + +\begin{minipage}{.5\textwidth} +\centering +\subfloat[]{\label{main:a}\includegraphics[width=\textwidth]{VersuchsaufbauBST1.png}} +\end{minipage}% +\begin{minipage}{.5\textwidth} +\centering +\subfloat[]{\label{main:b}\includegraphics[width=0.8\textwidth]{VersuchsaufbauBST2.png}} +\end{minipage}\par\medskip +\centering +\subfloat[CDF of error]{\label{main:c}\includegraphics[width=\textwidth]{bst1ftm.png}} +\par\medskip +\centering +\subfloat[CDF of error]{\label{main:c}\includegraphics[width=\textwidth]{bst2ftm.png}} + +\caption{die einzelnen aufbauten können wir in die grafiken der ergebnisse embedden rechts oben ins eck} +\label{fig:main} \end{figure} - -\subsection{Localization performance} +\subsection{Positioning Environment} \begin{itemize} - \item Location error per method (multilateration, prob, particle filter) - \item Wie gut geht der PF? Parameter und Szenarien - \item RSSI vs FTM; wo ist FTM besser wo schlechter?; Verhält es sich ähnlich? + \item Beschreibe Gebäude - inkl HLS Räume! + \item beschreibe ground truth pfade + \item access point positionen mit DOP analyse + \item wie sind wir gelaufen / testbedingungen... wie wurde GT gemessen usw. app etc pp. \end{itemize} + \subsection{Results for Multilateration} zunächst wird das einfachste und nahliegendste verfahren untersucht um die performance von ftm und rssi gegenüberzustellen. + +Figure 3 rote Bereiche - Heizung Lüftung Sanitär (HLS) Räume schirmen Radio Signale komplett ab! Wenn man dahinter steht, bekommt man gar nichts mehr vom AP mit. Wenn man sich nun die AP positionen ansieht, welche wir gewählt haben, fällt auf das wir Idioten sind. Anhand eine Triangulation Loc + Fehler Plots erklären. + + \begin{itemize} \item Parameter einführen und erklären \item Unterschied FTM und RSSI bei diesem Verfahren \item Positioning Error \item Wie sieht der geschätzte Pfad aus \item FTM ist nicht wie erwartet mega viel besser als RSSI. die simple literation glättet einfach gar nichts, weswegen... (hier begründung einfügen) + \item DOP Grafik -> später vom particel filter referenzieren. \end{itemize} wir bekommen hier also das gefühl, das ftm irgendwie besser sein muss, aber können es noch nicht wirklich nutzen. weshalb nun der probabilistische approach angesehen wird. @@ -167,7 +197,7 @@ der einsatz der probablistischen methode sieht weitaus besser azs als multilater \begin{figure}[ht] \centering \includegraphics[width=1\textwidth]{Path2_Walk0_FTM.png} -\caption{Path 2 FTM, Pixel 2 mean 4.94778 stdDev 2.49081 median 4.88544 count 249} +\caption{Path 2 FTM, Pixel 2 mean 4.94778 stdDev 2.49081 median 4.88544 count 249 } \end{figure} \begin{figure}[ht]