many eval things
moved obsolete code TeX work
This commit is contained in:
205
main.cpp
205
main.cpp
@@ -4,6 +4,7 @@
|
||||
#include "Indoor/sensors/radio/setup/WiFiFingerprint.h"
|
||||
#include "Indoor/sensors/radio/setup/WiFiFingerprints.h"
|
||||
#include "Indoor/sensors/radio/setup/WiFiOptimizer.h"
|
||||
#include "Indoor/sensors/radio/model/WiFiModels.h"
|
||||
|
||||
#include "Indoor/sensors/radio/VAPGrouper.h"
|
||||
|
||||
@@ -28,6 +29,9 @@
|
||||
#include "EvalWiFi.h"
|
||||
#include "EvalWiFiSigStrength.h"
|
||||
#include "pf/EvalWalk.h"
|
||||
#include "EvalWifiOptResult.h"
|
||||
#include "wifi/EvalWiFiConvex.h"
|
||||
|
||||
|
||||
#include "plots/PlotErrFunc.h"
|
||||
|
||||
@@ -36,6 +40,18 @@ void paperOutputs() {
|
||||
|
||||
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(Settings::fMap);
|
||||
|
||||
|
||||
// show optimization behaviour
|
||||
if (1 == 1) {
|
||||
|
||||
EvalWiFiConvex eval(map, Settings::fCalib);
|
||||
eval.showParams();
|
||||
//eval.showPos();
|
||||
eval.showPosZ();
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// show fingerprints as plot
|
||||
if (1==0){
|
||||
EvalWiFiSigStrength sig(Settings::fMap, Settings::fCalib);
|
||||
@@ -69,28 +85,62 @@ void paperOutputs() {
|
||||
// };
|
||||
// EvalCompareOpt2 opt1(Settings::fMap, calibWalks);
|
||||
|
||||
auto remove = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return fp.pos_m.z != 4;
|
||||
auto removeNone = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return false;
|
||||
};
|
||||
|
||||
auto only0th = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return std::abs(fp.pos_m.z - (1.3)) > 0.1;
|
||||
};
|
||||
|
||||
auto only1st = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return std::abs(fp.pos_m.z - (4+1.3)) > 0.1;
|
||||
};
|
||||
|
||||
auto only2nd = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return std::abs(fp.pos_m.z - (4+3.4+1.3)) > 0.1;
|
||||
};
|
||||
|
||||
auto only3rd = [] (const WiFiFingerprint& fp) -> bool {
|
||||
return std::abs(fp.pos_m.z - (4+3.4+3.4+1.3)) > 0.1;
|
||||
};
|
||||
|
||||
// use fingerprints?
|
||||
bool ignoreStaircases = false;
|
||||
bool ignoreOutdoor = false;
|
||||
bool ignoreIndoor = false;
|
||||
EvalCompareOpt2 opt1(Settings::fMap, Settings::fCalib, remove);
|
||||
|
||||
EvalCompareOpt2 opt1(Settings::fMap, Settings::fCalib, removeNone);
|
||||
|
||||
// optimize using all floors
|
||||
EvalCompareOpt2::Result s1 = opt1.fixedPosFixedParamsForAll(); //BREAK;
|
||||
EvalCompareOpt2::Result s2 = opt1.fixedPosOptParamsForAll(); //BREAK;
|
||||
EvalCompareOpt2::Result s3 = opt1.fixedPosOptParamsForEach(); //BREAK;
|
||||
EvalCompareOpt2::Result s4 = opt1.optPosOptParamsForEach(); //BREAK;
|
||||
|
||||
// optimize only for the 0th floor
|
||||
EvalCompareOpt2 opt_f0(Settings::fMap, Settings::fCalib, only0th);
|
||||
EvalCompareOpt2::Result sf0 = opt_f0.optPosOptParamsForEach();
|
||||
EvalCompareOpt2 opt_f1(Settings::fMap, Settings::fCalib, only1st);
|
||||
EvalCompareOpt2::Result sf1 = opt_f1.optPosOptParamsForEach();
|
||||
EvalCompareOpt2 opt_f2(Settings::fMap, Settings::fCalib, only2nd);
|
||||
EvalCompareOpt2::Result sf2 = opt_f2.optPosOptParamsForEach();
|
||||
EvalCompareOpt2 opt_f3(Settings::fMap, Settings::fCalib, only3rd);
|
||||
EvalCompareOpt2::Result sf3 = opt_f3.optPosOptParamsForEach();
|
||||
|
||||
// save models to file
|
||||
s1.model.saveXML(Settings::wifiAllFixed);
|
||||
s2.model.saveXML(Settings::wifiAllOptPar);
|
||||
s3.model.saveXML(Settings::wifiEachOptPar);
|
||||
s4.model.saveXML(Settings::wifiEachOptParPos);
|
||||
sf0.model.saveXML(Settings::wifiEachOptParPos_only0th);
|
||||
sf1.model.saveXML(Settings::wifiEachOptParPos_only1st);
|
||||
sf2.model.saveXML(Settings::wifiEachOptParPos_only2nd);
|
||||
sf3.model.saveXML(Settings::wifiEachOptParPos_only3rd);
|
||||
|
||||
// fancy combined model
|
||||
WiFiModelPerFloor wmpf(map);
|
||||
wmpf.add(&sf0.model, map->floors[0]);
|
||||
wmpf.add(&sf1.model, map->floors[1]);
|
||||
wmpf.add(&sf2.model, map->floors[2]);
|
||||
wmpf.add(&sf3.model, map->floors[3]);
|
||||
wmpf.saveXML(Settings::wifiEachOptParPos_multimodel);
|
||||
|
||||
PlotErrFunc pef("\\small{error (dB)}", "\\small{fingerprints (\\%)}");
|
||||
pef.add("\\small{empiric}", &s1.errSingle);
|
||||
@@ -106,68 +156,39 @@ void paperOutputs() {
|
||||
pef.getGP() << "set tmargin 0.4\n";
|
||||
pef.plot();
|
||||
|
||||
return;
|
||||
int i = 0; (void) i;
|
||||
//return;
|
||||
//sleep(1000);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 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) {
|
||||
/** plot wifi eval results */
|
||||
if (1 == 1) {
|
||||
|
||||
// bool ignoreStaircases = false;
|
||||
// bool ignoreOutdoor = false;
|
||||
// bool ignoreIndoor = false;
|
||||
WiFiFingerprints fps;
|
||||
fps.load(Settings::fCalib);
|
||||
|
||||
// // 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);
|
||||
EvalWiFiOptResult eval1(Settings::fMap);
|
||||
eval1.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos, fps);
|
||||
|
||||
// // use fingerprints?
|
||||
// EvalCompareOpt opt1(Settings::fMap, Settings::fCalib, ignoreStaircases, ignoreOutdoor, ignoreIndoor);
|
||||
EvalWiFiOptResult eval2(Settings::fMap);
|
||||
eval2.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiAllFixed, fps);
|
||||
|
||||
// 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;
|
||||
EvalWiFiOptResult evalfloor(Settings::fMap);
|
||||
evalfloor.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos_only0th, fps);
|
||||
evalfloor.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos_only1st, fps);
|
||||
evalfloor.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos_only2nd, fps);
|
||||
evalfloor.showErrorPerFingerprint<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos_only3rd, fps);
|
||||
evalfloor.showErrorPerFingerprint<WiFiModelPerFloor>(Settings::wifiEachOptParPos_multimodel, fps);
|
||||
|
||||
// // 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);
|
||||
int i = 0; (void) i;
|
||||
|
||||
// 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){
|
||||
@@ -218,7 +239,7 @@ void paperOutputs() {
|
||||
);
|
||||
|
||||
plot.getPlot().setGrid(true);
|
||||
plot.getPlot().setLegend(false);
|
||||
plot.getPlot().getKey().setVisible(false);
|
||||
plot.getPlot().getObjects().add(&rect);
|
||||
plot.plot();
|
||||
|
||||
@@ -263,7 +284,7 @@ int main(void) {
|
||||
|
||||
//testWAF();
|
||||
|
||||
//paperOutputs(); // return 0;
|
||||
paperOutputs(); // return 0;
|
||||
|
||||
// calib error in/out
|
||||
if (1 == 0) {
|
||||
@@ -297,7 +318,7 @@ int main(void) {
|
||||
}
|
||||
|
||||
// walks
|
||||
if (1 == 0) {
|
||||
if (1 == 1) {
|
||||
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(Settings::fMap);;
|
||||
EvalWalk walk(map);
|
||||
walk.walk1();
|
||||
@@ -329,10 +350,12 @@ int main(void) {
|
||||
//ew1.fixedParams(-64.5905, 1.25988, -2.47863); 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<WiFiModelLogDistCeiling>(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");
|
||||
ew1.load(Settings::wifiEachOptParPos_multimodel, "model per floor");
|
||||
//ew1.load<WiFiModelLogDistCeiling>(Settings::wifiEachOptParPos_only1st, "everything opt");
|
||||
|
||||
sleep(1000);
|
||||
|
||||
@@ -394,66 +417,4 @@ int main(void) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile("/apps/android/workspace/OTHER2017/data/SHL33a.xml");
|
||||
|
||||
|
||||
// WiFiFingerprints calib("/apps/android/workspace/OTHER2017/data/wifi_fp.dat");
|
||||
|
||||
// VAPGrouper vap(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::AVERAGE);
|
||||
|
||||
// WiFiOptimizer opt(map, vap);
|
||||
// opt.addFingerprints(calib);
|
||||
// WiFiOptimizer::APParamsList list = opt.optimizeAll();
|
||||
|
||||
// for (Floorplan::Floor* floor : map->floors) {
|
||||
// for (Floorplan::AccessPoint* ap : floor->accesspoints) {
|
||||
// const WiFiOptimizer::APParamsMAC* params = list.get(ap->mac);
|
||||
// if (params) {
|
||||
// const float delta = ap->getPos(floor).getDistance(Point3(params->params.x, params->params.y, params->params.z));
|
||||
// std::cout << ap->mac << ": " << delta << "m" << std::endl;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// static K::Gnuplot gp;
|
||||
// gp << "set view equal xy\n";
|
||||
|
||||
// K::GnuplotSplot splot;
|
||||
// K::GnuplotSplotElementPoints points; splot.add(&points); points.setPointType(7); points.setPointSize(0.5);
|
||||
// K::GnuplotSplotElementLines lines; splot.add(&lines);
|
||||
|
||||
// for (Floorplan::Floor* floor : map->floors) {
|
||||
// for (Floorplan::FloorObstacle* obs : floor->obstacles) {
|
||||
// Floorplan::FloorObstacleLine* line = dynamic_cast<Floorplan::FloorObstacleLine*>(obs);
|
||||
// if (line) {
|
||||
// const K::GnuplotPoint3 p1(line->from.x, line->from.y, floor->atHeight);
|
||||
// const K::GnuplotPoint3 p2(line->to.x, line->to.y, floor->atHeight);
|
||||
// lines.addSegment(p1, p2);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (const WiFiOptimizer::APParamsMAC& ap : list.get()) {
|
||||
// const K::GnuplotPoint3 p3(ap.params.x, ap.params.y, ap.params.z);
|
||||
// points.add(p3);
|
||||
// const Floorplan::AccessPoint* fap = FloorplanHelper::getAP(map, ap.mac);
|
||||
// std::string lbl = (fap) ? (fap->name) : (ap.mac.asString());
|
||||
// if (!fap) {
|
||||
// gp << "set label '" << lbl << "' at " << ap.params.x+1 << "," << ap.params.y+1 << "," << ap.params.z+0.3 << "\n";
|
||||
|
||||
// std::cout << "AP missing in Map: " << ap.mac.asString() << " @ " << ap.params.x << "," << ap.params.y << "," << ap.params.z << std::endl;
|
||||
// }
|
||||
// }
|
||||
|
||||
// gp.draw(splot);
|
||||
// gp.flush();
|
||||
|
||||
// int i = 0; (void) i;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user