next commit
This commit is contained in:
301
main.cpp
301
main.cpp
@@ -21,20 +21,23 @@
|
||||
#include "Settings.h"
|
||||
|
||||
#include "EvalCompareOpt.h"
|
||||
#include "EvalCompareOpt2.h"
|
||||
|
||||
#include "EvalApOpt.h"
|
||||
#include "EvalData.h"
|
||||
#include "EvalWiFi.h"
|
||||
#include "EvalWiFiSigStrength.h"
|
||||
#include "pf/EvalWalk.h"
|
||||
|
||||
#include "PlotErrFunc.h"
|
||||
#include "plots/PlotErrFunc.h"
|
||||
|
||||
// build plots for the paper
|
||||
void paperOutputs() {
|
||||
|
||||
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(Settings::fMap);
|
||||
|
||||
if (1==1){
|
||||
// show fingerprints as plot
|
||||
if (1==0){
|
||||
EvalWiFiSigStrength sig(Settings::fMap, Settings::fCalib);
|
||||
Plotty* p = new Plotty(map);
|
||||
p->writeCodeTo(Settings::fPathGFX + "compare-wifi-in-out.gp");
|
||||
@@ -52,22 +55,48 @@ void paperOutputs() {
|
||||
delete p;
|
||||
}
|
||||
|
||||
if (1==1) {
|
||||
// perform varios AP-param optimizations
|
||||
// generate error plot showing the performance of each
|
||||
// save the resulting wifi-models to XML for later re-use during the walk-eval <<<<<< !!!!
|
||||
if (1 == 1) {
|
||||
|
||||
const bool ignoreStaircases = false;
|
||||
const bool ignoreOutdoor = false;
|
||||
EvalCompareOptAllFixed allFixed(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor);
|
||||
// // use walks?
|
||||
// std::vector<std::pair<std::string, std::vector<int>>> calibWalks = {
|
||||
// std::make_pair(Settings::path1a, Settings::GroundTruth::path1),
|
||||
// std::make_pair(Settings::path1b, Settings::GroundTruth::path1),
|
||||
// std::make_pair(Settings::path2a, Settings::GroundTruth::path2),
|
||||
// std::make_pair(Settings::path2b, Settings::GroundTruth::path2),
|
||||
// };
|
||||
// EvalCompareOpt2 opt1(Settings::fMap, calibWalks);
|
||||
|
||||
K::Statistics<float> s1 = allFixed.fixedPosFixedParamsForAll(); //BREAK;
|
||||
K::Statistics<float> s2 = allFixed.fixedPosOptParamsForAll(); //BREAK;
|
||||
K::Statistics<float> s3 = allFixed.fixedPosOptParamsForEach(); //BREAK;
|
||||
K::Statistics<float> s4 = allFixed.optPosOptParamsForEach(); //BREAK;
|
||||
auto remove = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return fp.pos_m.z != 4;
|
||||
};
|
||||
|
||||
// use fingerprints?
|
||||
bool ignoreStaircases = false;
|
||||
bool ignoreOutdoor = false;
|
||||
bool ignoreIndoor = false;
|
||||
EvalCompareOpt2 opt1(Settings::fMap, Settings::fCalib, remove);
|
||||
|
||||
|
||||
EvalCompareOpt2::Result s1 = opt1.fixedPosFixedParamsForAll(); //BREAK;
|
||||
EvalCompareOpt2::Result s2 = opt1.fixedPosOptParamsForAll(); //BREAK;
|
||||
EvalCompareOpt2::Result s3 = opt1.fixedPosOptParamsForEach(); //BREAK;
|
||||
EvalCompareOpt2::Result s4 = opt1.optPosOptParamsForEach(); //BREAK;
|
||||
|
||||
|
||||
// save models to file
|
||||
s1.model.saveXML(Settings::wifiAllFixed);
|
||||
s2.model.saveXML(Settings::wifiAllOptPar);
|
||||
s3.model.saveXML(Settings::wifiEachOptPar);
|
||||
s4.model.saveXML(Settings::wifiEachOptParPos);
|
||||
|
||||
PlotErrFunc pef("\\small{error (dB)}", "\\small{fingerprints (\\%)}");
|
||||
pef.add("\\small{empiric}", s1);
|
||||
pef.add("\\small{real pos, opt params}", s2);
|
||||
pef.add("\\small{real pos, opt params [per AP]}", s3);
|
||||
pef.add("\\small{opt pos, opt params [per AP]}", s4);
|
||||
pef.add("\\small{empiric}", &s1.errSingle);
|
||||
pef.add("\\small{real pos, opt params}", &s2.errSingle);
|
||||
pef.add("\\small{real pos, opt params [per AP]}", &s3.errSingle);
|
||||
pef.add("\\small{opt pos, opt params [per AP]}", &s4.errSingle);
|
||||
|
||||
pef.getGP().setTerminal("epslatex", K::GnuplotSize(8.5, 5));
|
||||
pef.getGP().setOutput(Settings::fPathGFX + "wifi-opt-error-hist-methods.tex");
|
||||
@@ -77,25 +106,87 @@ void paperOutputs() {
|
||||
pef.getGP() << "set tmargin 0.4\n";
|
||||
pef.plot();
|
||||
|
||||
return;
|
||||
//sleep(1000);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// error histogram all pos, all params, between in/out/stair, in/out, in/stair, in
|
||||
if(1==1){
|
||||
EvalCompareOptAllFixed e1(Settings::fMap, Settings::fCalib, false, false);
|
||||
EvalCompareOptAllFixed e2(Settings::fMap, Settings::fCalib, true, false);
|
||||
EvalCompareOptAllFixed e3(Settings::fMap, Settings::fCalib, false, true);
|
||||
EvalCompareOptAllFixed e4(Settings::fMap, Settings::fCalib, true, true);
|
||||
// REPLACED BY EVAL OPT 2
|
||||
// // perform varios AP-param optimizations
|
||||
// // generate error plot showing the performance of each
|
||||
// // save the resulting wifi-models to XML for later re-use during the walk-eval <<<<<< !!!!
|
||||
// if (1 == 0) {
|
||||
|
||||
K::Statistics<float> s1 = e1.optPosOptParamsForEach();
|
||||
K::Statistics<float> s2 = e2.optPosOptParamsForEach();
|
||||
K::Statistics<float> s3 = e3.optPosOptParamsForEach();
|
||||
K::Statistics<float> s4 = e4.optPosOptParamsForEach();
|
||||
// bool ignoreStaircases = false;
|
||||
// bool ignoreOutdoor = false;
|
||||
// bool ignoreIndoor = false;
|
||||
|
||||
// // use walks?
|
||||
//// std::vector<std::pair<std::string, std::vector<int>>> calibWalks = {
|
||||
//// std::make_pair(Settings::path1a, Settings::GroundTruth::path1),
|
||||
//// std::make_pair(Settings::path1b, Settings::GroundTruth::path1),
|
||||
//// std::make_pair(Settings::path2a, Settings::GroundTruth::path2),
|
||||
//// std::make_pair(Settings::path2b, Settings::GroundTruth::path2),
|
||||
//// };
|
||||
//// EvalCompareOpt opt1(Settings::fMap, calibWalks);
|
||||
|
||||
// // use fingerprints?
|
||||
// EvalCompareOpt opt1(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
|
||||
// EvalCompareOpt::Result s1 = opt1.fixedPosFixedParamsForAll(); //BREAK;
|
||||
// EvalCompareOpt::Result s2 = opt1.fixedPosOptParamsForAll(); //BREAK;
|
||||
// EvalCompareOpt::Result s3 = opt1.fixedPosOptParamsForEach(); //BREAK;
|
||||
// EvalCompareOpt::Result s4 = opt1.optPosOptParamsForEach(); //BREAK;
|
||||
|
||||
// ignoreStaircases = true;
|
||||
// ignoreOutdoor = true;
|
||||
// EvalCompareOpt opt2(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
// EvalCompareOpt::Result s4b = opt2.optPosOptParamsForEach(); //BREAK;
|
||||
|
||||
// // save models to file
|
||||
// s1.model.saveXML(Settings::wifiAllFixed);
|
||||
// s2.model.saveXML(Settings::wifiAllOptPar);
|
||||
// s3.model.saveXML(Settings::wifiEachOptPar);
|
||||
// s4.model.saveXML(Settings::wifiEachOptParPos);
|
||||
// s4b.model.saveXML(Settings::wifiEachOptParPosNoStairNoOut);
|
||||
|
||||
// PlotErrFunc pef("\\small{error (dB)}", "\\small{fingerprints (\\%)}");
|
||||
// pef.add("\\small{empiric}", s1.errAbs);
|
||||
// pef.add("\\small{real pos, opt params}", s2.errAbs);
|
||||
// pef.add("\\small{real pos, opt params [per AP]}", s3.errAbs);
|
||||
// pef.add("\\small{opt pos, opt params [per AP]}", s4.errAbs);
|
||||
// pef.add("\\small{opt pos, opt params [per AP, no stair, no out]}", s4b.errAbs);
|
||||
|
||||
// pef.getGP().setTerminal("epslatex", K::GnuplotSize(8.5, 5));
|
||||
// pef.getGP().setOutput(Settings::fPathGFX + "wifi-opt-error-hist-methods.tex");
|
||||
// pef.writeCodeTo(Settings::fPathGFX + "wifi-opt-error-hist-methods.gp");
|
||||
// pef.getGP() << "set key right bottom width -4 samplen 0.5\n";
|
||||
// pef.getGP() << "set rmargin 0.4\n";
|
||||
// pef.getGP() << "set tmargin 0.4\n";
|
||||
// pef.plot();
|
||||
|
||||
// }
|
||||
|
||||
// error histogram all pos, all params, between in/out/stair, in/out, in/stair, in
|
||||
if(1==0){
|
||||
|
||||
EvalCompareOpt e1(Settings::fMap, Settings::fCalib, false, false, false);
|
||||
EvalCompareOpt e2(Settings::fMap, Settings::fCalib, true, false, false);
|
||||
EvalCompareOpt e3(Settings::fMap, Settings::fCalib, false, true, false);
|
||||
EvalCompareOpt e4(Settings::fMap, Settings::fCalib, true, true, false);
|
||||
|
||||
K::Statistics<float> s1 = e1.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s2 = e2.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s3 = e3.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s4 = e4.optPosOptParamsForEach().errAbs;
|
||||
|
||||
PlotErrFunc pef("\\small{error (dB)}", "\\small{fingerprints (\\%)}");
|
||||
pef.add("\\small{floor + stairs + out}", s1);
|
||||
pef.add("\\small{floor + out}", s2);
|
||||
pef.add("\\small{floor + stairs}", s3);
|
||||
pef.add("\\small{floor}", s4);
|
||||
pef.add("\\small{floor + stairs + out}", &s1);
|
||||
pef.add("\\small{floor + out}", &s2);
|
||||
pef.add("\\small{floor + stairs}", &s3);
|
||||
pef.add("\\small{floor}", &s4);
|
||||
|
||||
pef.getGP().setTerminal("epslatex", K::GnuplotSize(8.5, 5));
|
||||
pef.getGP().setOutput(Settings::fPathGFX + "wifi-opt-error-hist-stair-outdoor.tex");
|
||||
@@ -107,14 +198,106 @@ void paperOutputs() {
|
||||
|
||||
}
|
||||
|
||||
// wifi issue for path1
|
||||
if (1 == 0) {
|
||||
|
||||
Offline::FileReader reader(Settings::path1a);
|
||||
PlotWifiMeasurements plot;
|
||||
|
||||
for (int i = 0; i < 60; ++i) {
|
||||
const WiFiMeasurements mes = reader.getWiFiGroupedByTime().at(i).data;
|
||||
const WiFiMeasurements mes2 = Settings::WiFiModel::vg_eval.group(mes);
|
||||
plot.add(mes2);
|
||||
}
|
||||
|
||||
K::GnuplotObjectRectangle rect(
|
||||
K::GnuplotCoordinate2(0, K::GnuplotCoordinateSystem::FIRST, 0, K::GnuplotCoordinateSystem::GRAPH),
|
||||
K::GnuplotCoordinate2(10, K::GnuplotCoordinateSystem::FIRST, 1, K::GnuplotCoordinateSystem::GRAPH),
|
||||
K::GnuplotFill(K::GnuplotFillStyle::SOLID, K::GnuplotColor::fromRGB(128,128,128), 0.5),
|
||||
K::GnuplotStroke()
|
||||
);
|
||||
|
||||
plot.getPlot().setGrid(true);
|
||||
plot.getPlot().setLegend(false);
|
||||
plot.getPlot().getObjects().add(&rect);
|
||||
plot.plot();
|
||||
|
||||
sleep(100);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void testWAF() {
|
||||
|
||||
Floorplan::Ceilings ceilings;
|
||||
ceilings.addCeiling(3);
|
||||
ceilings.addCeiling(6);
|
||||
ceilings.addCeiling(9);
|
||||
ceilings.addCeiling(12);
|
||||
|
||||
K::Gnuplot gp;
|
||||
K::GnuplotPlot gplot;
|
||||
K::GnuplotPlotElementLines lines; gplot.add(&lines);
|
||||
|
||||
const Point3 posAP(0, 0, 8);
|
||||
|
||||
for (float z = 0; z < 15; z += 0.1) {
|
||||
|
||||
const Point3 posMe(0, 0, z);
|
||||
float factor = ceilings.numCeilingsBetweenFloat(posAP, posMe);
|
||||
lines.add({z, factor});
|
||||
|
||||
}
|
||||
|
||||
gp.draw(gplot);
|
||||
gp.flush();
|
||||
|
||||
sleep(1000);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main(void) {
|
||||
|
||||
// paperOutputs(); return 0;
|
||||
//testWAF();
|
||||
|
||||
if (1 == 1) {
|
||||
//paperOutputs(); // return 0;
|
||||
|
||||
// calib error in/out
|
||||
if (1 == 0) {
|
||||
|
||||
// outdoor only
|
||||
bool ignoreStaircases = true;
|
||||
bool ignoreOutdoor = false;
|
||||
bool ignoreIndoor = true;
|
||||
EvalCompareOpt opt1(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
EvalCompareOpt::Result s1 = opt1.optPosOptParamsForEach();
|
||||
std::cout << s1.errAbs.asString() << std::endl;
|
||||
|
||||
// stairs only
|
||||
ignoreStaircases = false;
|
||||
ignoreOutdoor = true;
|
||||
ignoreIndoor = true;
|
||||
EvalCompareOpt opt3(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
EvalCompareOpt::Result s3 = opt3.optPosOptParamsForEach();
|
||||
std::cout << s3.errAbs.asString() << std::endl;
|
||||
|
||||
// indoor only
|
||||
ignoreStaircases = true;
|
||||
ignoreOutdoor = true;
|
||||
ignoreIndoor = false;
|
||||
EvalCompareOpt opt2(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
EvalCompareOpt::Result s2 = opt2.optPosOptParamsForEach();
|
||||
std::cout << s2.errAbs.asString() << std::endl;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// walks
|
||||
if (1 == 0) {
|
||||
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(Settings::fMap);;
|
||||
EvalWalk walk(map);
|
||||
walk.walk1();
|
||||
@@ -139,12 +322,19 @@ int main(void) {
|
||||
|
||||
|
||||
// test wifi within data files
|
||||
if (1 == 0) {
|
||||
if (1 == 1) {
|
||||
EvalWiFi ew1(Settings::fMap, Settings::path1a, Settings::GroundTruth::path1);
|
||||
//EvalWiFi ew1(Settings::fMap, Settings::path2a, Settings::GroundTruth::path2);
|
||||
EvalWiFi ew1(Settings::fMap, Settings::path2a, Settings::GroundTruth::path2);
|
||||
//ew1.fixedParams(-40, 2.5, -8); BREAK;
|
||||
//ew1.fixedParams(-64.5905, 1.25988, -2.47863); BREAK;
|
||||
ew1.fixedParams(-59.4903,1.52411,-3.25077); BREAK;
|
||||
//ew1.fixedParams(-59.4903,1.52411,-3.25077); BREAK;
|
||||
//ew1.load(Settings::wifiEachOptParPos);
|
||||
ew1.load(Settings::wifiAllFixed, "empirc");
|
||||
ew1.load(Settings::wifiAllOptPar, "opt params all APs");
|
||||
ew1.load(Settings::wifiEachOptPar, "opt params each AP");
|
||||
ew1.load(Settings::wifiEachOptParPos, "everything opt");
|
||||
|
||||
sleep(1000);
|
||||
|
||||
}
|
||||
|
||||
@@ -161,22 +351,23 @@ int main(void) {
|
||||
|
||||
|
||||
// compare wifi opt methods
|
||||
if (1 == 1) {
|
||||
if (1 == 0) {
|
||||
|
||||
const bool ignoreStaircases = false;
|
||||
const bool ignoreOutdoor = false;
|
||||
EvalCompareOptAllFixed allFixed(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor);
|
||||
const bool ignoreIndoor = false;
|
||||
EvalCompareOpt opt(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
|
||||
K::Statistics<float> s1 = allFixed.fixedPosFixedParamsForAll(); //BREAK;
|
||||
K::Statistics<float> s2 = allFixed.fixedPosOptParamsForAll(); //BREAK;
|
||||
K::Statistics<float> s3 = allFixed.fixedPosOptParamsForEach(); //BREAK;
|
||||
K::Statistics<float> s4 = allFixed.optPosOptParamsForEach(); //BREAK;
|
||||
EvalCompareOpt::Result s1 = opt.fixedPosFixedParamsForAll(); //BREAK;
|
||||
EvalCompareOpt::Result s2 = opt.fixedPosOptParamsForAll(); //BREAK;
|
||||
EvalCompareOpt::Result s3 = opt.fixedPosOptParamsForEach(); //BREAK;
|
||||
EvalCompareOpt::Result s4 = opt.optPosOptParamsForEach(); //BREAK;
|
||||
|
||||
PlotErrFunc pef("error (dB)", "fingerprints (%)");
|
||||
pef.add("empiric", s1);
|
||||
pef.add("real pos, opt params [same for all]", s2);
|
||||
pef.add("real pos, opt params [for each]", s3);
|
||||
pef.add("opt pos, opt params [for each]", s4);
|
||||
pef.add("empiric", &s1.errAbs);
|
||||
pef.add("real pos, opt params [same for all]", &s2.errAbs);
|
||||
pef.add("real pos, opt params [for each]", &s3.errAbs);
|
||||
pef.add("opt pos, opt params [for each]", &s4.errAbs);
|
||||
pef.plot();
|
||||
|
||||
}
|
||||
@@ -184,21 +375,21 @@ int main(void) {
|
||||
// compare leaving out fingerprints
|
||||
if (1 == 0) {
|
||||
|
||||
EvalCompareOptAllFixed e1(Settings::fMap, Settings::fCalib, false, false);
|
||||
EvalCompareOptAllFixed e2(Settings::fMap, Settings::fCalib, true, false);
|
||||
EvalCompareOptAllFixed e3(Settings::fMap, Settings::fCalib, false, true);
|
||||
EvalCompareOptAllFixed e4(Settings::fMap, Settings::fCalib, true, true);
|
||||
EvalCompareOpt e1(Settings::fMap, Settings::fCalib, false, false, false);
|
||||
EvalCompareOpt e2(Settings::fMap, Settings::fCalib, true, false, false);
|
||||
EvalCompareOpt e3(Settings::fMap, Settings::fCalib, false, true, false);
|
||||
EvalCompareOpt e4(Settings::fMap, Settings::fCalib, true, true, false);
|
||||
|
||||
K::Statistics<float> s1 = e1.optPosOptParamsForEach();
|
||||
K::Statistics<float> s2 = e2.optPosOptParamsForEach();
|
||||
K::Statistics<float> s3 = e3.optPosOptParamsForEach();
|
||||
K::Statistics<float> s4 = e4.optPosOptParamsForEach();
|
||||
K::Statistics<float> s1 = e1.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s2 = e2.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s3 = e3.optPosOptParamsForEach().errAbs;
|
||||
K::Statistics<float> s4 = e4.optPosOptParamsForEach().errAbs;
|
||||
|
||||
PlotErrFunc pef("error (dB)", "fingerprints (%)");
|
||||
pef.add("floor + stairs + out", s1);
|
||||
pef.add("floor + out", s2);
|
||||
pef.add("floor + stairs", s3);
|
||||
pef.add("floor", s4);
|
||||
pef.add("floor + stairs + out", &s1);
|
||||
pef.add("floor + out", &s2);
|
||||
pef.add("floor + stairs", &s3);
|
||||
pef.add("floor", &s4);
|
||||
pef.plot();
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user