next commit

This commit is contained in:
2017-04-05 18:45:00 +02:00
parent 6171582b40
commit b2adb16b49
18 changed files with 1602 additions and 360 deletions

144
Helper.h
View File

@@ -6,7 +6,7 @@
#include <Indoor/sensors/radio/setup/WiFiFingerprints.h>
#include <Indoor/floorplan/v2/Floorplan.h>
#include "Plotty.h"
#include "plots/Plotty.h"
class LeHelper {
@@ -28,31 +28,69 @@ public:
}
static inline bool isOutdoor(const WiFiFingerprint& fp) {
const Point3 pos = fp.pos_m;
// garden
if (pos == Point3(21, 12, 1.3)) {return true;}
if (pos == Point3(21, 27, 1.3)) {return true;}
if (pos == Point3(39, 12, 1.3)) {return true;}
if (pos == Point3(39, 27, 1.3)) {return true;}
if (pos == Point3(67, 12, 1.3)) {return true;}
if (pos == Point3(67, 27, 1.3)) {return true;}
if (pos == Point3(88, 12, 1.3)) {return true;}
if (pos == Point3(88, 27, 1.3)) {return true;}
// front door
if (pos == Point3(94, 43, 4+1.3)) {return true;}
if (pos == Point3(110, 43, 4+1.3)) {return true;}
if (pos == Point3(94, 55, 4+1.3)) {return true;}
if (pos == Point3(110, 55, 4+1.3)) {return true;}
if (pos == Point3(67.2, 55, 4+1.3)) {return true;}
return false;
}
static inline bool isStaircase(const WiFiFingerprint& fp) {
const Point3 pos = fp.pos_m;
// floor 0
if (pos == Point3(67.2, 48.5, 1.3)) {return true;}
if (pos == Point3(11.2, 48.3, 1.3)) {return true;}
if (pos == Point3(16.5, 11.9, 1.3)) {return true;}
if (pos == Point3(57.4, 2.6, 1.3)) {return true;}
if (pos == Point3(57.4, -3.2, 3.0)) {return true;}
// floor 1
if (pos == Point3(67.2, 48.3, 4+1.3)) {return true;}
if (pos == Point3(11.4, 48.3, 4+1.3)) {return true;}
if (pos == Point3(16.1, 11.9, 4+1.3)) {return true;}
if (pos == Point3(57.4, 2.4, 4+1.3)) {return true;}
// floor 2
if (pos == Point3(67.0, 48.5, 3.4+4+1.3)) {return true;}
if (pos == Point3(11.6, 48.5, 3.4+4+1.3)) {return true;}
if (pos == Point3(16.3, 11.9, 3.4+4+1.3)) {return true;}
// floor 3
if (pos == Point3(67.0, 48.3, 3.4+3.4+4+1.3)) {return true;}
if (pos == Point3(11.4, 48.5, 3.4+3.4+4+1.3)) {return true;}
if (pos == Point3(16.3, 11.9, 3.4+3.4+4+1.3)) {return true;}
return false;
}
/** remove all outdoor fingerprints */
static WiFiFingerprints removeOutdoor(const WiFiFingerprints& inp) {
WiFiFingerprints res;
for (const WiFiFingerprint& fp : inp.getFingerprints()) {
const Point3 pos = fp.pos_m;
// garden
if (pos == Point3(21, 12, 1.3)) {continue;}
if (pos == Point3(21, 27, 1.3)) {continue;}
if (pos == Point3(39, 12, 1.3)) {continue;}
if (pos == Point3(39, 27, 1.3)) {continue;}
if (pos == Point3(67, 12, 1.3)) {continue;}
if (pos == Point3(67, 27, 1.3)) {continue;}
if (pos == Point3(88, 12, 1.3)) {continue;}
if (pos == Point3(88, 27, 1.3)) {continue;}
// front door
if (pos == Point3(94, 43, 4+1.3)) {continue;}
if (pos == Point3(110, 43, 4+1.3)) {continue;}
if (pos == Point3(94, 55, 4+1.3)) {continue;}
if (pos == Point3(110, 55, 4+1.3)) {continue;}
if (pos == Point3(67.2, 55, 4+1.3)) {continue;}
if (isOutdoor(fp)) {continue;}
res.add(fp);
}
@@ -65,38 +103,52 @@ public:
WiFiFingerprints res;
for (const WiFiFingerprint& fp : inp.getFingerprints()) {
const Point3 pos = fp.pos_m;
// floor 0
if (pos == Point3(67.2, 48.5, 1.3)) {continue;}
if (pos == Point3(11.2, 48.3, 1.3)) {continue;}
if (pos == Point3(16.5, 11.9, 1.3)) {continue;}
if (pos == Point3(57.4, 2.6, 1.3)) {continue;}
if (pos == Point3(57.4, -3.2, 3.0)) {continue;}
// floor 1
if (pos == Point3(67.2, 48.3, 4+1.3)) {continue;}
if (pos == Point3(11.4, 48.3, 4+1.3)) {continue;}
if (pos == Point3(16.1, 11.9, 4+1.3)) {continue;}
if (pos == Point3(57.4, 2.4, 4+1.3)) {continue;}
// floor 2
if (pos == Point3(67.0, 48.5, 3.4+4+1.3)) {continue;}
if (pos == Point3(11.6, 48.5, 3.4+4+1.3)) {continue;}
if (pos == Point3(16.3, 11.9, 3.4+4+1.3)) {continue;}
// floor 3
if (pos == Point3(67.0, 48.3, 3.4+3.4+4+1.3)) {continue;}
if (pos == Point3(11.4, 48.5, 3.4+3.4+4+1.3)) {continue;}
if (pos == Point3(16.3, 11.9, 3.4+3.4+4+1.3)) {continue;}
if (isStaircase(fp)) {continue;}
res.add(fp);
}
return res;
}
static WiFiFingerprints removeIndoor(const WiFiFingerprints& inp) {
WiFiFingerprints res;
for (const WiFiFingerprint& fp : inp.getFingerprints()) {
if (!isStaircase(fp) && !isOutdoor(fp)) {continue;}
res.add(fp);
}
return res;
}
static WiFiFingerprints removeIf(const WiFiFingerprints& inp, std::function<bool(const WiFiFingerprint&)> remove) {
WiFiFingerprints res;
for (const WiFiFingerprint& fp : inp.getFingerprints()) {
if (remove(fp)) {continue;}
res.add(fp);
}
return res;
}
static WiFiFingerprints onlyOutdoor(const WiFiFingerprints& inp) {
WiFiFingerprints res;
for (const WiFiFingerprint& fp : inp.getFingerprints()) {
if (!isOutdoor(fp)) {continue;}
res.add(fp);
}
return res;
}
static void plot(const Floorplan::IndoorMap* map, const WiFiFingerprints& inp, const std::string& title = "Fingerprints") {
Plotty* p = new Plotty(map);