many changes and updates

- changed the wifi-estimation api
- adjusted test-cases
- worked on grid-bulding and grid-importance
- new walking modules
- fixed some minor issues
This commit is contained in:
2016-08-29 19:02:32 +02:00
parent a2c9e575a2
commit a203305628
23 changed files with 505 additions and 251 deletions

View File

@@ -57,7 +57,7 @@ TEST(Barometer, relCalib) {
#include <fstream>
TEST(Barometer, tendence) {
TEST(Barometer, LIVE_tendence) {
std::ifstream inp ("/tmp/baro1.dat");
@@ -81,7 +81,7 @@ TEST(Barometer, tendence) {
}
TEST(Barometer, tendence2) {
TEST(Barometer, LIVE_tendence2) {
const float timeframe = 5.0;

View File

@@ -6,6 +6,7 @@
TEST(LogDistanceCeilingModel, calc) {
// dummy floorplan
Floorplan::Floor* f0 = new Floorplan::Floor(); f0->atHeight = 0;
Floorplan::Floor* f1 = new Floorplan::Floor(); f1->atHeight = 3;
Floorplan::Floor* f2 = new Floorplan::Floor(); f2->atHeight = 7;
@@ -15,10 +16,16 @@ TEST(LogDistanceCeilingModel, calc) {
map.floors.push_back(f1);
map.floors.push_back(f2);
LocatedAccessPoint ap0("00:00:00:00:00:00", Point3(0,0,0));
LocatedAccessPoint ap25("00:00:00:00:00:00", Point3(0,0,2.5));
//LocatedAccessPoint ap0("00:00:00:00:00:00", Point3(0,0,0));
//LocatedAccessPoint ap25("00:00:00:00:00:00", Point3(0,0,2.5));
WiFiModelLogDistCeiling model(-40, 1.0, -8.0, &map);
WiFiModelLogDistCeiling model(&map);
const MACAddress ap0 = MACAddress("00:00:00:00:00:00");
const MACAddress ap25 = MACAddress("00:00:00:00:00:01");
model.addAP(ap0, WiFiModelLogDistCeiling::APEntry( Point3(0,0,0), -40, 1.0, -8.0 ));
model.addAP(ap25, WiFiModelLogDistCeiling::APEntry( Point3(0,0,2.5), -40, 1.0, -8.0 ));
ASSERT_EQ(-40, model.getRSSI(ap0, Point3(1,0,0)));
@@ -34,6 +41,41 @@ TEST(LogDistanceCeilingModel, calc) {
}
TEST(LogDistanceCeilingModel, numCeilings) {
// dummy floorplan
Floorplan::Floor* f0 = new Floorplan::Floor(); f0->atHeight = 0;
Floorplan::Floor* f1 = new Floorplan::Floor(); f1->atHeight = 3;
Floorplan::Floor* f2 = new Floorplan::Floor(); f2->atHeight = 7;
Floorplan::IndoorMap map;
map.floors.push_back(f0);
map.floors.push_back(f1);
map.floors.push_back(f2);
WiFiModelLogDistCeiling model(&map);
ASSERT_EQ(0, model.numCeilingsBetween(Point3(0,0,-1), Point3(0,0,0)) );
ASSERT_EQ(0, model.numCeilingsBetween(Point3(0,0,0), Point3(0,0,-1)) );
ASSERT_EQ(0, model.numCeilingsBetween(Point3(0,0,0), Point3(0,0,1)) );
ASSERT_EQ(0, model.numCeilingsBetween(Point3(0,0,1), Point3(0,0,0)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,-0.01), Point3(0,0,+0.01)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,+0.01), Point3(0,0,-0.01)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,2.99), Point3(0,0,3.01)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,3.01), Point3(0,0,2.99)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,6.99), Point3(0,0,7.01)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,7.01), Point3(0,0,6.99)) );
ASSERT_EQ(0, model.numCeilingsBetween(Point3(0,0,7.00), Point3(0,0,99)) );
ASSERT_EQ(1, model.numCeilingsBetween(Point3(0,0,0), Point3(0,0,7)) );
ASSERT_EQ(3, model.numCeilingsBetween(Point3(0,0,-1), Point3(0,0,8)) );
}
#endif

View File

@@ -86,6 +86,7 @@ WiFiObservation groupVAP(const WiFiObservation& inp) {
}
*/
/*
struct WiFiEvalTestBase {
// all training files
@@ -117,11 +118,9 @@ struct WiFiEvalTestBase {
if (Floorplan::toUpperCase(ap->mac) == "00:04:96:6C:3A:A9") {continue;}
if (Floorplan::toUpperCase(ap->mac) == "00:04:96:6B:DB:69") {continue;}
aps.push_back(LocatedAccessPoint(*ap));
apsMap.insert(std::pair<MACAddress, LocatedAccessPoint>(ap->mac, LocatedAccessPoint(*ap)));
}
}
@@ -142,7 +141,8 @@ struct WiFiEvalTestBase {
int cnt = 0;
// model
WiFiModelLogDistCeiling model(params.txp, params.exp, params.waf, im);
WiFiModelLogDistCeiling model(im);
model.addAP();
VAPGrouper vg(VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO, VAPGrouper::Aggregation::AVERAGE);
@@ -422,6 +422,6 @@ TEST(aaiFiEval, getBestTXP_EXP) {
}
*/
#endif

View File

@@ -11,9 +11,10 @@
#include "../../../grid/Grid.h"
struct MyNode : GridNode, GridPoint, WiFiGridNode<10> {
// ensure the class-name is unique!
struct TestNode190231 : public GridNode, public GridPoint, public WiFiGridNode<10> {
MyNode(const int x_cm, const int y_cm, const int z_cm) : GridPoint(x_cm, y_cm, z_cm) {;}
TestNode190231(const int x_cm, const int y_cm, const int z_cm) : GridPoint(x_cm, y_cm, z_cm) {;}
};
@@ -42,30 +43,57 @@ TEST(WiFiGridNodeAP, rssiLimits) {
/** gnuplot debug dumps */
TEST(WiFiGridNode, ctor) {
// ensure nodes are correctly empty initialized
WiFiGridNode<10> node;
ASSERT_EQ(0, node.getNumVisibleAPs());
TestNode190231 node2(0,0,0);
ASSERT_EQ(0, node2.getNumVisibleAPs());
}
// gnuplot debug dumps
TEST(WiFiGridModelLogDist, create) {
int gs = 20;
Grid<MyNode> grid(gs);
Grid<TestNode190231> grid(gs);
for (int x = 0; x < 2000; x += gs) {
for (int y = 0; y < 2000; y += gs) {
grid.add(MyNode(x,y,0));
grid.add(TestNode190231(x,y,0));
}
}
std::cout << "GridNodeSize: " << sizeof(MyNode) << std::endl;
std::cout << "GridNodeSize: " << sizeof(TestNode190231) << std::endl;
LocatedAccessPoint ap1("00:00:00:00:00:01", Point3( 0, 0,0));
LocatedAccessPoint ap2("00:00:00:00:00:02", Point3(20, 0,0));
LocatedAccessPoint ap3("00:00:00:00:00:03", Point3( 0,20,0));
LocatedAccessPoint ap4("00:00:00:00:00:04", Point3(20,20,0));
const MACAddress ap1 = MACAddress("00:00:00:00:00:01");
const MACAddress ap2 = MACAddress("00:00:00:00:00:02");
const MACAddress ap3 = MACAddress("00:00:00:00:00:03");
const MACAddress ap4 = MACAddress("00:00:00:00:00:04");
std::vector<LocatedAccessPoint> aps = {ap1, ap2, ap3, ap4};
// LocatedAccessPoint ap1, Point3( 0, 0,0));
// LocatedAccessPoint ap2("00:00:00:00:00:02", Point3(20, 0,0));
// LocatedAccessPoint ap3("00:00:00:00:00:03", Point3( 0,20,0));
// LocatedAccessPoint ap4("00:00:00:00:00:04", Point3(20,20,0));
// std::vector<LocatedAccessPoint> aps = {ap1, ap2, ap3, ap4};
// model not populated -> must be empty
ASSERT_EQ(0, grid[0].getNumVisibleAPs());
WiFiModelLogDist model(-40, 1.5);
WiFiModelLogDist model;
model.addAP(ap1, WiFiModelLogDist::APEntry( Point3(0,0,0), -40, 1.5));
model.addAP(ap2, WiFiModelLogDist::APEntry( Point3(20,0,0), -40, 1.5));
model.addAP(ap3, WiFiModelLogDist::APEntry( Point3(0,20,0), -40, 1.5));
model.addAP(ap4, WiFiModelLogDist::APEntry( Point3(20,20,0), -40, 1.5));
std::vector<AccessPoint> aps = {
AccessPoint(ap1), AccessPoint(ap2), AccessPoint(ap3), AccessPoint(ap4)
};
WiFiGridEstimator::estimate(grid, model, aps);
@@ -90,13 +118,15 @@ TEST(WiFiGridModelLogDist, create) {
obs.entries.push_back(WiFiMeasurement(MACAddress("00:00:00:00:00:04"), -55, ts));
WiFiObserverGrid observer(5.0f);
const MyNode& gn = grid.getNodeFor(GridPoint(1000,1000,0));
const TestNode190231& gn = grid.getNodeFor(GridPoint(1000,1000,0));
const float p = observer.getProbability(gn, ts, obs);
observer.dump(grid, ts, obs, "/tmp/eval1.gp");
std::cout << "see: /tmp/eval1.gp" << std::endl;
int i = 0; (void) i;
}
#endif