added new tex comments/details
worked on evaluation stair sanitizing added stair-plotting (for debug)
This commit is contained in:
@@ -71,8 +71,6 @@ public:
|
||||
for (const Line2& l : f.getObstacles()) {
|
||||
const K::GnuplotPoint3 p1(l.p1.x, l.p1.y, height.cm());
|
||||
const K::GnuplotPoint3 p2(l.p2.x, l.p2.y, height.cm());
|
||||
//if (l.p1.x > 3000) {continue;}
|
||||
//if (l.p1.y > 3000) {continue;}
|
||||
floors.addSegment(p1, p2);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,72 +27,10 @@ public:
|
||||
|
||||
pf = new K::ParticleFilter<MyState, MyControl, MyObservation>( MiscSettings::numParticles, std::unique_ptr<MyInitializer>(new MyInitializer(grid, 1120, 150, 3*350, 90)) );
|
||||
|
||||
std::vector<int> wp = path1;// std::reverse(wp.begin(), wp.end());
|
||||
|
||||
MyGridNode& start = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[wp.front()]) );
|
||||
MyGridNode& end = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[wp.back()]) );
|
||||
|
||||
//GridWalkRandomHeadingUpdate<MyGridNode>* walk = new GridWalkRandomHeadingUpdate<MyGridNode>();
|
||||
//GridWalkRandomHeadingUpdateAdv<MyGridNode>* walk = new GridWalkRandomHeadingUpdateAdv<MyGridNode>();
|
||||
//GridWalkPushForward<MyGridNode>* walk = new GridWalkPushForward<MyGridNode>();
|
||||
//GridWalkLightAtTheEndOfTheTunnel<MyGridNode>* walk = new GridWalkLightAtTheEndOfTheTunnel<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
//GridWalkPathControl<MyGridNode>* walk = new GridWalkPathControl<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
// path1
|
||||
sr = new SensorReader("./measurements/path1/1/1454345312844.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path1/1/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path1/1/Steps2.txt");
|
||||
// sr = new SensorReader("./measurements/path1/2/1454345421125.csv"); // backward
|
||||
// srt = new SensorReaderTurn("./measurements/path1/2/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path1/2/Steps2.txt");
|
||||
|
||||
// path2
|
||||
// sr = new SensorReader("./measurements/path2/1/1454345775306.csv"); // forward
|
||||
// srt = new SensorReaderTurn("./measurements/path2/1/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path2/1/Steps2.txt");
|
||||
//sr = new SensorReader("./measurements/path2/2/1454346071347.csv"); // backward
|
||||
//srt = new SensorReaderTurn("./measurements/path2/2/Turns.txt");
|
||||
//srs = new SensorReaderStep("./measurements/path2/2/Steps2.txt");
|
||||
|
||||
// path3
|
||||
// sr = new SensorReader("./measurements/path3/1/1454345546308.csv"); // forward
|
||||
// srt = new SensorReaderTurn("./measurements/path3/1/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path3/1/Steps2.txt");
|
||||
// sr = new SensorReader("./measurements/path3/2/1454345622819.csv"); // backward
|
||||
// srt = new SensorReaderTurn("./measurements/path3/2/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path3/2/Steps2.txt");
|
||||
|
||||
// path4
|
||||
// sr = new SensorReader("./measurements/path4/1454595382218.csv"); // forward
|
||||
// srt = new SensorReaderTurn("./measurements/path4/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path4/Steps2.txt");
|
||||
|
||||
|
||||
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, wp);
|
||||
|
||||
}
|
||||
|
||||
void setEvalFails() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
//wifi also uniform dist 0/1 fuer bereiche die OK sind?
|
||||
//steps hochzaehlen weil mehr als einer in einer transition??
|
||||
//increase regional average region
|
||||
|
||||
void setEval1() {
|
||||
|
||||
|
||||
runName = "TODO";
|
||||
|
||||
// the particle filter's evaluation method
|
||||
std::unique_ptr<MyEvaluation> eval = std::unique_ptr<MyEvaluation>( new MyEvaluation() );
|
||||
eval.get()->setUsage(true, true, true, true, true); // TODO: STEP TURN
|
||||
eval.get()->setUsage(true, true, true, true, true);
|
||||
pf->setEvaluation( std::move(eval) );
|
||||
|
||||
// resampling step?
|
||||
@@ -105,8 +43,208 @@ public:
|
||||
//pf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationRegionalWeightedAverage<MyState>>(new K::ParticleFilterEstimationRegionalWeightedAverage<MyState>()));
|
||||
//pf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationOrderedWeightedAverage<MyState>>(new K::ParticleFilterEstimationOrderedWeightedAverage<MyState>(0.50f)));
|
||||
|
||||
|
||||
// std::vector<int> wp = path2;// std::reverse(wp.begin(), wp.end());
|
||||
|
||||
// MyGridNode& start = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[wp.front()]) );
|
||||
// MyGridNode& end = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[wp.back()]) );
|
||||
|
||||
// //GridWalkRandomHeadingUpdate<MyGridNode>* walk = new GridWalkRandomHeadingUpdate<MyGridNode>();
|
||||
// //GridWalkRandomHeadingUpdateAdv<MyGridNode>* walk = new GridWalkRandomHeadingUpdateAdv<MyGridNode>();
|
||||
// //GridWalkPushForward<MyGridNode>* walk = new GridWalkPushForward<MyGridNode>();
|
||||
// //GridWalkLightAtTheEndOfTheTunnel<MyGridNode>* walk = new GridWalkLightAtTheEndOfTheTunnel<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
// //GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
// GridWalkPathControl<MyGridNode>* walk = new GridWalkPathControl<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
|
||||
// pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
// // path1
|
||||
//// sr = new SensorReader("./measurements/path1/1/1454345312844.csv"); // forward
|
||||
//// srt = new SensorReaderTurn("./measurements/path1/1/Turns.txt");
|
||||
//// srs = new SensorReaderStep("./measurements/path1/1/Steps2.txt");
|
||||
//// sr = new SensorReader("./measurements/path1/2/1454345421125.csv"); // backward
|
||||
//// srt = new SensorReaderTurn("./measurements/path1/2/Turns.txt");
|
||||
//// srs = new SensorReaderStep("./measurements/path1/2/Steps2.txt");
|
||||
|
||||
// // path2
|
||||
// sr = new SensorReader("./measurements/path2/1/1454345775306.csv"); // forward
|
||||
// srt = new SensorReaderTurn("./measurements/path2/1/Turns.txt");
|
||||
// srs = new SensorReaderStep("./measurements/path2/1/Steps2.txt");
|
||||
// //sr = new SensorReader("./measurements/path2/2/1454346071347.csv"); // backward
|
||||
// //srt = new SensorReaderTurn("./measurements/path2/2/Turns.txt");
|
||||
// //srs = new SensorReaderStep("./measurements/path2/2/Steps2.txt");
|
||||
|
||||
// // path3
|
||||
//// sr = new SensorReader("./measurements/path3/1/1454345546308.csv"); // forward
|
||||
//// srt = new SensorReaderTurn("./measurements/path3/1/Turns.txt");
|
||||
//// srs = new SensorReaderStep("./measurements/path3/1/Steps2.txt");
|
||||
//// sr = new SensorReader("./measurements/path3/2/1454345622819.csv"); // backward
|
||||
//// srt = new SensorReaderTurn("./measurements/path3/2/Turns.txt");
|
||||
//// srs = new SensorReaderStep("./measurements/path3/2/Steps2.txt");
|
||||
|
||||
// // path4
|
||||
//// sr = new SensorReader("./measurements/path4/1454595382218.csv"); // forward
|
||||
//// srt = new SensorReaderTurn("./measurements/path4/Turns.txt");
|
||||
//// srs = new SensorReaderStep("./measurements/path4/Steps2.txt");
|
||||
|
||||
|
||||
|
||||
// gtw = getGroundTruthWay(*sr, floors.gtwp, wp);
|
||||
|
||||
}
|
||||
|
||||
void setEvalFails() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* starting with bad barometer readings. takes some time to move upwards
|
||||
* will be fixed by using the path
|
||||
*/
|
||||
void path2_forward_simple() {
|
||||
|
||||
// forward
|
||||
runName = "path2_forward_simple";
|
||||
|
||||
sr = new SensorReader("./measurements/path2/1/1454345775306.csv");
|
||||
srt = new SensorReaderTurn("./measurements/path2/1/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path2/1/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path2);
|
||||
|
||||
GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
void path2_forward_path() {
|
||||
|
||||
// forward
|
||||
runName = "path2_forward_path";
|
||||
|
||||
sr = new SensorReader("./measurements/path2/1/1454345775306.csv");
|
||||
srt = new SensorReaderTurn("./measurements/path2/1/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path2/1/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path2);
|
||||
|
||||
MyGridNode& end = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[path2.back()]) );
|
||||
GridWalkPathControl<MyGridNode>* walk = new GridWalkPathControl<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TODO: plot grid-nodes for stairs for the paper (also look at z-transitions. some have NO x/y change even though they should have!)
|
||||
|
||||
|
||||
void path3_forward_simple() {
|
||||
|
||||
// forward
|
||||
runName = "path3_forward_simple";
|
||||
|
||||
sr = new SensorReader("./measurements/path3/1/1454345546308.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path3/1/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path3/1/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path3);
|
||||
|
||||
GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
void path3_forward_path() {
|
||||
|
||||
// looks like the left stairs here are NOT working as expected?!
|
||||
// plot them
|
||||
// look at the probability-draw, maybe there is an issue there
|
||||
|
||||
// forward
|
||||
runName = "path3_forward_path";
|
||||
|
||||
sr = new SensorReader("./measurements/path3/1/1454345546308.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path3/1/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path3/1/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path3);
|
||||
|
||||
MyGridNode& end = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[path3.back()]) );
|
||||
GridWalkPathControl<MyGridNode>* walk = new GridWalkPathControl<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
void path4_nexus_simple() {
|
||||
|
||||
runName = "path4_nexus_simple";
|
||||
|
||||
sr = new SensorReader("./measurements/path4/nexus/1454695040555.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path4/nexus/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path4/nexus/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path4dbl);
|
||||
|
||||
// remove importance
|
||||
for (auto& n : grid) {n.imp = 1;}
|
||||
|
||||
GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
void path4_nexus_imp() {
|
||||
|
||||
runName = "path4_nexus_importance";
|
||||
|
||||
sr = new SensorReader("./measurements/path4/nexus/1454695040555.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path4/nexus/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path4/nexus/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path4dbl);
|
||||
|
||||
GridWalkSimpleControl<MyGridNode>* walk = new GridWalkSimpleControl<MyGridNode>();
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
void path4_nexus_path() {
|
||||
|
||||
runName = "path4_nexus_path";
|
||||
|
||||
sr = new SensorReader("./measurements/path4/nexus/1454695040555.csv"); // forward
|
||||
srt = new SensorReaderTurn("./measurements/path4/nexus/Turns.txt");
|
||||
srs = new SensorReaderStep("./measurements/path4/nexus/Steps2.txt");
|
||||
gtw = getGroundTruthWay(*sr, floors.gtwp, path4dbl);
|
||||
|
||||
MyGridNode& end = (MyGridNode&)grid.getNodeFor( conv(floors.gtwp[path4dbl.back()]) );
|
||||
GridWalkPathControl<MyGridNode>* walk = new GridWalkPathControl<MyGridNode>(grid, DijkstraMapper(grid), end);
|
||||
pf->setTransition( std::unique_ptr<MyTransition>( new MyTransition(grid, *walk)) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
//wifi also uniform dist 0/1 fuer bereiche die OK sind?
|
||||
//steps hochzaehlen weil mehr als einer in einer transition??
|
||||
//increase regional average region
|
||||
|
||||
// void setEval1() {
|
||||
|
||||
|
||||
|
||||
|
||||
// // the particle filter's evaluation method
|
||||
// std::unique_ptr<MyEvaluation> eval = std::unique_ptr<MyEvaluation>( new MyEvaluation() );
|
||||
// eval.get()->setUsage(true, true, true, true, true); // TODO: STEP TURN
|
||||
// pf->setEvaluation( std::move(eval) );
|
||||
|
||||
// // resampling step?
|
||||
// pf->setNEffThreshold(1.0);
|
||||
// pf->setResampling( std::unique_ptr<K::ParticleFilterResamplingSimple<MyState>>(new K::ParticleFilterResamplingSimple<MyState>()) );
|
||||
// //pf->setResampling( std::unique_ptr<K::ParticleFilterResamplingPercent<MyState>>(new K::ParticleFilterResamplingPercent<MyState>(0.10)) );
|
||||
|
||||
// // state estimation step
|
||||
// pf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationWeightedAverage<MyState>>(new K::ParticleFilterEstimationWeightedAverage<MyState>()));
|
||||
// //pf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationRegionalWeightedAverage<MyState>>(new K::ParticleFilterEstimationRegionalWeightedAverage<MyState>()));
|
||||
// //pf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationOrderedWeightedAverage<MyState>>(new K::ParticleFilterEstimationOrderedWeightedAverage<MyState>(0.50f)));
|
||||
|
||||
// }
|
||||
|
||||
};
|
||||
|
||||
#endif // EVAL1_H
|
||||
|
||||
@@ -59,6 +59,7 @@ protected:
|
||||
std::vector<int> path2 = {19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 23, 7, 6};
|
||||
std::vector<int> path3 = {5, 27, 26, 255, 25, 4, 3, 2, 215, 1, 0, 30, 31};
|
||||
std::vector<int> path4 = {29, 28, 27, 32, 33, 34, 35, 36, 10, 9, 8, 22, 37, 38, 39, 40, 41, 42, 43, 44};
|
||||
std::vector<int> path4dbl = {29, 29, 28, 27, 32, 33, 34, 35, 36, 10, 9, 8, 22, 37, 38, 39, 40, 41, 42, 43, 44}; // duplicate 1st waypoint!
|
||||
|
||||
public:
|
||||
|
||||
@@ -252,8 +253,8 @@ public:
|
||||
const Point3 curGT = gtw.getPosAtTime(se.ts - offset);
|
||||
const Point3 diff = curEst - curGT;
|
||||
|
||||
// skip the first 8 scans due to uniform distribution start
|
||||
if (++cnt > 8) {
|
||||
// skip the first 10 scans due to uniform distribution start
|
||||
if (++cnt > 10) {
|
||||
pathEst.push_back(curEst);
|
||||
const float err = diff.length();
|
||||
stats.add(err);
|
||||
|
||||
@@ -21,6 +21,7 @@ public:
|
||||
|
||||
K::GnuplotSplotElementLines floors;
|
||||
K::GnuplotSplotElementColorPoints nodes;
|
||||
K::GnuplotSplotElementLines edges;
|
||||
|
||||
public:
|
||||
|
||||
@@ -28,9 +29,13 @@ public:
|
||||
|
||||
floors.setLineWidth(2);
|
||||
|
||||
plot.add(&edges);
|
||||
plot.add(&nodes);
|
||||
plot.add(&floors);
|
||||
|
||||
nodes.setPointSize(0.7);
|
||||
edges.setColorHex("#555555");
|
||||
|
||||
gp << "set ticslevel 0\n";
|
||||
|
||||
|
||||
@@ -89,6 +94,40 @@ public:
|
||||
|
||||
}
|
||||
|
||||
/** show all nodes (and edges?) within the given region */
|
||||
template <typename T> void debugGrid(Grid<T>& grid, const BBox3& bbox, const bool addNodes, const bool addEdges) {
|
||||
|
||||
std::set<uint64_t> used;
|
||||
|
||||
for (T& n1 : grid) {
|
||||
if (bbox.contains(n1)) {
|
||||
const K::GnuplotPoint3 p1(n1.x_cm, n1.y_cm, n1.z_cm);
|
||||
if (addNodes) {
|
||||
nodes.add(p1, 0);
|
||||
}
|
||||
if (addEdges) {
|
||||
for (const T& n2 : grid.neighbors(n1)) {
|
||||
if (n1.z_cm == n2.z_cm) {continue;} // speedup
|
||||
if (used.find(n2.getIdx()) == used.end()) {
|
||||
const K::GnuplotPoint3 p2(n2.x_cm, n2.y_cm, n2.z_cm);
|
||||
edges.addSegment(p1, p2);
|
||||
}
|
||||
}
|
||||
used.insert(n1.getIdx());
|
||||
// for (const T& n2 : grid.neighbors(n1)) {
|
||||
// const uint64_t idx = n1.getIdx() * n2.getIdx();
|
||||
// if (used.find(idx) == used.end()) {
|
||||
// const K::GnuplotPoint3 p2(n2.x_cm, n2.y_cm, n2.z_cm);
|
||||
// edges.addSegment(p1, p2);
|
||||
// used.insert(idx);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
111
code/eval/PaperVisGrid.h
Normal file
111
code/eval/PaperVisGrid.h
Normal file
@@ -0,0 +1,111 @@
|
||||
#ifndef PAPERVISGRID_H
|
||||
#define PAPERVISGRID_H
|
||||
|
||||
#include <Indoor/grid/Grid.h>
|
||||
#include <Indoor/grid/factory/GridFactory.h>
|
||||
#include <Indoor/grid/factory/GridImportance.h>
|
||||
|
||||
#include <Indoor/floorplan/FloorplanFactorySVG.h>
|
||||
|
||||
#include <Indoor/grid/walk/GridWalkLightAtTheEndOfTheTunnel.h>
|
||||
|
||||
|
||||
|
||||
#include <Indoor/nav/dijkstra/Dijkstra.h>
|
||||
#include <Indoor/nav/dijkstra/DijkstraPath.h>
|
||||
|
||||
#include "PaperPlot.h"
|
||||
#include "PaperPlot2D.h"
|
||||
|
||||
#include "../MyGridNode.h"
|
||||
#include "../Settings.h"
|
||||
|
||||
#include "../Helper.h"
|
||||
|
||||
class PaperVisGrid {
|
||||
|
||||
public:
|
||||
|
||||
|
||||
static void showStairs() {
|
||||
|
||||
// the grid
|
||||
Grid<MyGridNode> grid(20);
|
||||
|
||||
// floors
|
||||
Helper::FHWSFloors floors = Helper::getFloors();
|
||||
Helper::buildTheGrid(grid, floors);
|
||||
|
||||
// // load the floorplan
|
||||
// FloorplanFactorySVG fpFac(MiscSettings::floorplan, 2.822222);
|
||||
// Floor f0 = fpFac.getFloor("floor_0");
|
||||
// Floor f0 = fpFac.getFloor("floor_1");
|
||||
// const LengthF h0 = LengthF::cm(0);
|
||||
// const LengthF h1 = LengthF::cm(400);
|
||||
// const LengthF h2 = LengthF::cm(400+340);
|
||||
// const LengthF h3 = LengthF::cm(400+340+340);
|
||||
|
||||
// add the floorplan to the grid
|
||||
|
||||
// GridFactory<MyGridNode> gridFac(grid);
|
||||
|
||||
// gridFac.addFloor(f0, h0.cm());
|
||||
// gridFac.addFloor(f1, h1.cm());
|
||||
// gridFac.addFloor(f2, h2.cm());
|
||||
// gridFac.addFloor(f3, h3.cm());
|
||||
|
||||
// remove all isolated nodes not attached to 300,300,floor0
|
||||
// gridFac.removeIsolated( (MyGridNode&)grid.getNodeFor( GridPoint(300,300,h0.cm()) ) );
|
||||
|
||||
PaperPlot plot;
|
||||
|
||||
|
||||
|
||||
// stairwell low left
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(1300, 650,000));
|
||||
bbox.add(Point3(2000,1300,1400));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
// stairwell upper left
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(1200,4758,000));
|
||||
bbox.add(Point3(1800,5158,1400));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
// stairwell upper right
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(6240,4718,000));
|
||||
bbox.add(Point3(6830,5158,1400));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
// stair left
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(1200,3200,000));
|
||||
bbox.add(Point3(1440,4078,1400));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
// stair center
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(4200,4118,100));
|
||||
bbox.add(Point3(6120,4438,1400));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
//stair lower right
|
||||
{BBox3 bbox;
|
||||
bbox.add(Point3(7360,3358,000));
|
||||
bbox.add(Point3(7880,4300,500));
|
||||
plot.debugGrid(grid, bbox, true, true);}
|
||||
|
||||
|
||||
plot.show();
|
||||
|
||||
sleep(1000);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // PAPERVISGRID_H
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "eval/PaperVisImportance.h"
|
||||
#include "eval/PaperVisDijkstra.h"
|
||||
#include "eval/PaperVisGrid.h"
|
||||
|
||||
Settings settings;
|
||||
|
||||
@@ -84,9 +85,16 @@ int main(void) {
|
||||
// testModelWalk();
|
||||
|
||||
Eval1 eval;
|
||||
eval.setEval1();
|
||||
//eval.path2_forward_simple();
|
||||
//eval.path2_forward_path();
|
||||
//eval.path3_forward_simple();
|
||||
//eval.path3_forward_path();
|
||||
//eval.path4_nexus_simple();
|
||||
eval.path4_nexus_imp();
|
||||
//eval.path4_nexus_path();
|
||||
eval.run();
|
||||
|
||||
// PaperVisGrid::showStairs();
|
||||
// PaperVisImportance::createImportance();
|
||||
// PaperVisImportance::createPath();
|
||||
|
||||
|
||||
@@ -43,16 +43,16 @@
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="822"
|
||||
inkscape:window-height="845"
|
||||
id="namedview3234"
|
||||
showgrid="true"
|
||||
inkscape:zoom="2.4027176"
|
||||
inkscape:cx="2636.6172"
|
||||
inkscape:cy="1428.0719"
|
||||
inkscape:zoom="6.7959116"
|
||||
inkscape:cx="2714.4898"
|
||||
inkscape:cy="1497.1651"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer12"
|
||||
inkscape:current-layer="layer16"
|
||||
inkscape:object-nodes="true"
|
||||
units="px"
|
||||
showborder="true"
|
||||
@@ -1893,7 +1893,7 @@
|
||||
inkscape:groupmode="layer"
|
||||
id="layer16"
|
||||
inkscape:label="floor_0"
|
||||
style="display:none">
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 386.22047,67.322799 0,42.519681"
|
||||
@@ -2235,7 +2235,7 @@
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 453.54331,460.62989 0,276.37795"
|
||||
d="m 446.45669,460.62989 0,276.37795"
|
||||
id="path4616"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
@@ -2247,14 +2247,10 @@
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2785.0394,389.76374 0,102.75591 -127.5591,0"
|
||||
d="m 2785.0394,389.76374 0,102.75591 -10.63,0"
|
||||
id="path4620"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2731.8898,389.76374 -74.4095,0 0,265.74804"
|
||||
id="path4622"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 924.80315,737.00784 0,-276.37795 24.80315,0"
|
||||
@@ -2498,20 +2494,34 @@
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2657.4803,627.16532 116.9291,0"
|
||||
d="m 2653.937,627.16532 120.4724,0"
|
||||
id="path5824"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 453.54331,485.43304 53.1496,0"
|
||||
d="m 446.45669,485.43304 60.23622,0"
|
||||
id="path5826"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2653.937,389.76374 0,237.40158"
|
||||
id="path5026"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2653.937,389.76374 131.1024,0"
|
||||
id="path5028"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer12"
|
||||
inkscape:label="floor_1"
|
||||
style="display:inline">
|
||||
style="display:none">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 49.606299,1853.1496 605.905511,0"
|
||||
@@ -2835,7 +2845,7 @@
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,460.62989 0,276.37795"
|
||||
d="m 446.45669,460.62989 0,276.37795"
|
||||
id="path12802"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
@@ -3180,14 +3190,16 @@
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,485.43304 63.77952,0"
|
||||
d="m 446.45669,485.43304 60.23622,0"
|
||||
id="path5828"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,712.20469 63.77952,0"
|
||||
d="m 446.45669,712.20469 60.23622,0"
|
||||
id="path5836"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2653.937,389.76374 0,24.80315"
|
||||
@@ -3198,6 +3210,11 @@
|
||||
d="m 2777.9528,414.56689 -124.0158,0"
|
||||
id="path5001"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2792.126,372.04721 14.1732,0"
|
||||
id="path5024"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
@@ -3691,7 +3708,7 @@
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,460.62989 0,276.37795"
|
||||
d="m 446.45669,460.62989 0,276.37795"
|
||||
id="path11757"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(0,-4.2364502e-5)"
|
||||
@@ -3929,14 +3946,16 @@
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,485.433 63.77952,0"
|
||||
d="m 446.45669,485.43299 60.23622,0"
|
||||
id="path5830"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 442.91339,712.20465 63.77952,0"
|
||||
d="m 446.45669,712.20465 60.23622,0"
|
||||
id="path5834"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2462.5984,389.7637 0,70.86615"
|
||||
@@ -4687,7 +4706,7 @@
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 506.69291,460.62985 -60.23622,-10e-6"
|
||||
d="m 506.69291,460.62984 -60.23622,0"
|
||||
id="path4163"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
@@ -4731,22 +4750,23 @@
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 446.45669,712.20465 60.23622,0"
|
||||
id="path5832"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer17"
|
||||
inkscape:label="staircase_0_1"
|
||||
style="display:inline">
|
||||
style="display:none">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 2664.5669,655.51178 102.7559,0 0,-265.74804"
|
||||
d="m 2657.4803,634.25193 113.3858,0 0,-244.48819"
|
||||
id="path4988"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 503.14961,457.08658 -46.063,0 0,276.37795"
|
||||
d="m 503.14961,460.62989 -53.14961,0 0,276.37795"
|
||||
id="path4992"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
@@ -4764,9 +4784,10 @@
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 503.14961,460.62989 -56.69292,0 0,276.37795"
|
||||
d="m 503.14961,460.62989 -53.14961,0 0,276.37795"
|
||||
id="path5000"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
@@ -4776,9 +4797,10 @@
|
||||
transform="translate(0,4.2364502e-5)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 503.14961,460.62985 -56.69292,0 0,276.37795"
|
||||
d="M 503.14961,460.62985 450,460.62984 450,737.0078"
|
||||
id="path5802"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 1729.1339,340.1574 0,60.23622 -194.8819,0"
|
||||
|
||||
|
Before Width: | Height: | Size: 238 KiB After Width: | Height: | Size: 239 KiB |
@@ -15,7 +15,7 @@ public:
|
||||
|
||||
|
||||
// //rho_z
|
||||
double barometerSigma = 0.12+0.04;//0.09;
|
||||
double barometerSigma = 0.06;//0.12+0.04;//0.09;
|
||||
|
||||
// //The height of the single floor levels.
|
||||
// const static double floor_height[3] = {4.1, 3.4, 3.4};
|
||||
|
||||
@@ -8,3 +8,16 @@
|
||||
\item Analysiere Probleme ggf. mit schönen Grafiken.
|
||||
\item Vergleich zum Schluss das neue System mit dem Alten um eine schöne Conclusion der Verbesserungen einzuleiten.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\commentByFrank{sensorausfall simulieren, z.b. in der mitte, oder auf einer treppe}
|
||||
\commentByFrank{zwischendrin mal stehenbleiben und schauen ob auch das klappt}
|
||||
\commentByFrank{pfad verlassen und ganz wo anders hingehen}
|
||||
|
||||
\commentByFrank{die reine importance selbst auf dem graphen hilft, aber nur minimal weiter}
|
||||
|
||||
\commentByFrank{pfad4 nexus. pfadlos laeuft mit ach und krach richtig (treppenhaus, wlan schlecht)
|
||||
mit pfad laeuft es falsch, weil die andere treppe kuerzer zum ziel ist und das wlan dort besser passt}
|
||||
|
||||
\commentByFrank{zu grosser einfluss vom pfad ist also kein allheilmittel.. kann, wie beim treppenhaus, auch nach hinten los gehen}
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
\section{Grid-Based Floorplan}
|
||||
|
||||
\commentByFrank{grafik wie es aussieht, vor allem die treppen}
|
||||
\commentByFrank{add nodes not creating an intersection}
|
||||
\commentByFrank{find largest connected region}
|
||||
\commentByFrank{remove all other nodes (conserve memory)}
|
||||
|
||||
\commentByFrank{mention: clean z-transitions, remove x/y nodes by adding bounding boxes}
|
||||
|
||||
\subsection{Generation}
|
||||
|
||||
\subsection{Weighting}
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
.
|
||||
\end{equation}
|
||||
|
||||
Within the evaluation bla bla
|
||||
|
||||
\begin{equation}
|
||||
xx
|
||||
\end{equation}
|
||||
|
||||
we use the system's setup time to not only determine the relative base but also for estimating the barometers
|
||||
uncertainty \sigma_\text{baro} used within the evaluation.
|
||||
|
||||
\subsection{Wi-Fi \& iBeacons}
|
||||
For additional absolute location hints, we use the Smartphones Wi-Fi and iBeacon sensor to measure the signal-strengths
|
||||
|
||||
Reference in New Issue
Block a user