minor changes,
new parameters, added new walker-modules
This commit is contained in:
@@ -10,10 +10,10 @@
|
|||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleHeading.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleHeading.h>
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleHeadingControl.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleHeadingControl.h>
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleNodeImportance.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleNodeImportance.h>
|
||||||
//#include <Indoor/grid/walk/v2/modules/WalkModuleRelativePressureControl.h>
|
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleSpread.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleSpread.h>
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleFavorZ.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleFavorZ.h>
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkModuleButterActivity.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleButterActivity.h>
|
||||||
|
#include <Indoor/grid/walk/v2/modules/WalkModulePreventVisited.h>
|
||||||
|
|
||||||
#include <Indoor/grid/factory/v2/GridNodeImportance.h>
|
#include <Indoor/grid/factory/v2/GridNodeImportance.h>
|
||||||
|
|
||||||
@@ -101,27 +101,29 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
|
|||||||
WalkModuleHeading<MyNode, MyState> modHeadUgly; // stupid
|
WalkModuleHeading<MyNode, MyState> modHeadUgly; // stupid
|
||||||
WalkModuleHeadingControl<MyNode, MyState, MyControl> modHead;
|
WalkModuleHeadingControl<MyNode, MyState, MyControl> modHead;
|
||||||
WalkModuleNodeImportance<MyNode, MyState> modImportance;
|
WalkModuleNodeImportance<MyNode, MyState> modImportance;
|
||||||
// WalkModuleRelativePressureControl<MyNode, MyState, MyControl> modPressure;
|
|
||||||
WalkModuleSpread<MyNode, MyState> modSpread;
|
WalkModuleSpread<MyNode, MyState> modSpread;
|
||||||
WalkModuleFavorZ<MyNode, MyState> modFavorZ;
|
WalkModuleFavorZ<MyNode, MyState> modFavorZ;
|
||||||
WalkModuleButterActivity<MyNode, MyState> modButterAct;
|
WalkModuleButterActivity<MyNode, MyState> modButterAct;
|
||||||
|
//WalkModulePreventVisited<MyNode, MyState> modPreventVisited;
|
||||||
//WalkModuleWiFi modWifi;
|
|
||||||
|
|
||||||
|
|
||||||
PFTrans(Grid<MyNode>& grid, MyControl* ctrl) : grid(grid), modHead(ctrl, 3.5f) {//, modPressure(ctrl, 0.100) {
|
|
||||||
|
PFTrans(Grid<MyNode>& grid, MyControl* ctrl) : grid(grid), modHead(ctrl, 4.5f) {//, modPressure(ctrl, 0.100) {
|
||||||
|
|
||||||
walker.addModule(&modHead);
|
walker.addModule(&modHead);
|
||||||
|
//walker.addModule(&modSpread); // might help in some situations! keep in mind!
|
||||||
|
|
||||||
//walker.addModule(&modHeadUgly);
|
//walker.addModule(&modHeadUgly);
|
||||||
walker.addModule(&modImportance);
|
walker.addModule(&modImportance);
|
||||||
//walker.addModule(&modPressure);
|
walker.addModule(&modFavorZ);
|
||||||
//walker.addModule(&modSpread);
|
walker.addModule(&modButterAct);
|
||||||
walker.addModule(&modButterAct);
|
|
||||||
//walker.addModule(&modWifi);
|
//walker.addModule(&modWifi);
|
||||||
|
//walker.addModule(&modPreventVisited);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void transition(std::vector<K::Particle<MyState>>& particles, const MyControl* control) override {
|
virtual void transition(std::vector<K::Particle<MyState>>& particles, const MyControl* control) override {
|
||||||
|
|
||||||
Distribution::Normal<float> distStep(1, 0.10);
|
Distribution::Normal<float> distStep(1, 0.15);
|
||||||
|
|
||||||
float tmpSum1 = 0;
|
float tmpSum1 = 0;
|
||||||
float tmpSum2 = 0;
|
float tmpSum2 = 0;
|
||||||
@@ -132,7 +134,7 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
|
|||||||
tmpSum1 += p.state.relPres;
|
tmpSum1 += p.state.relPres;
|
||||||
|
|
||||||
const float var = distStep.draw();
|
const float var = distStep.draw();
|
||||||
const float dist = control->numSteps * var * 0.75; // 75cm + variance for every detected step
|
const float dist = control->numSteps * var * 0.76; // 75cm + variance for every detected step
|
||||||
|
|
||||||
//activity
|
//activity
|
||||||
p.state.act = control->barometer.act;
|
p.state.act = control->barometer.act;
|
||||||
|
|||||||
@@ -9,11 +9,14 @@
|
|||||||
#include <Indoor/floorplan/v2/FloorplanHelper.h>
|
#include <Indoor/floorplan/v2/FloorplanHelper.h>
|
||||||
|
|
||||||
#include <Indoor/grid/walk/v2/GridWalker.h>
|
#include <Indoor/grid/walk/v2/GridWalker.h>
|
||||||
#include <Indoor/grid/walk/v2/modules/WalkStateHeading.h>
|
#include <Indoor/grid/walk/v2/modules/WalkModuleHeading.h>
|
||||||
|
#include <Indoor/grid/walk/v2/modules/WalkModuleSpread.h>
|
||||||
|
#include <Indoor/grid/walk/v2/modules/WalkModuleFavorZ.h>
|
||||||
|
#include <Indoor/grid/walk/v2/modules/WalkModulePreventVisited.h>
|
||||||
|
|
||||||
#include <Indoor/sensors/pressure/ActivityButterPressure.h>
|
#include <Indoor/sensors/pressure/ActivityButterPressure.h>
|
||||||
|
|
||||||
struct MyState : public WalkState, public WalkStateHeading {
|
struct MyState : public WalkState, public WalkStateHeading, public WalkStateSpread, public WalkStateFavorZ {
|
||||||
|
|
||||||
static Floorplan::IndoorMap* map;
|
static Floorplan::IndoorMap* map;
|
||||||
|
|
||||||
|
|||||||
@@ -132,11 +132,11 @@ public:
|
|||||||
// high signal strength? higher sigma!
|
// high signal strength? higher sigma!
|
||||||
const Timestamp age = curTS - ap.getTimestamp();
|
const Timestamp age = curTS - ap.getTimestamp();
|
||||||
|
|
||||||
//const float sigma = 10.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
|
const float sigma = 11.0 + 1.2 * age.sec() + rssiSigma(scanRSSI);
|
||||||
//double apProb = Distribution::Normal<double>::getProbability(modelRSSI, sigma, scanRSSI);
|
double apProb = Distribution::Normal<double>::getProbability(modelRSSI, sigma, scanRSSI);
|
||||||
|
|
||||||
const float sigma = 8.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
|
//const float sigma = 8.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
|
||||||
const double apProb = Distribution::Region<float>::getProbability(modelRSSI, sigma, scanRSSI);
|
//const double apProb = Distribution::Region<float>::getProbability(modelRSSI, sigma, scanRSSI);
|
||||||
|
|
||||||
prob += std::log(apProb);
|
prob += std::log(apProb);
|
||||||
|
|
||||||
|
|||||||
@@ -75,12 +75,13 @@ void testScaler() {
|
|||||||
|
|
||||||
#include <Indoor/geo/Heading.h>
|
#include <Indoor/geo/Heading.h>
|
||||||
|
|
||||||
//const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
|
//frank
|
||||||
//const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
|
const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
|
||||||
|
const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
|
||||||
|
|
||||||
//toni
|
//toni
|
||||||
const std::string mapDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/";
|
//const std::string mapDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/";
|
||||||
const std::string dataDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/data/";
|
//const std::string dataDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/data/";
|
||||||
|
|
||||||
/** describes one dataset (map, training, parameter-estimation, ...) */
|
/** describes one dataset (map, training, parameter-estimation, ...) */
|
||||||
struct DataSetup {
|
struct DataSetup {
|
||||||
@@ -101,7 +102,7 @@ struct Data {
|
|||||||
|
|
||||||
{
|
{
|
||||||
dataDir + "car/logfile_CAR_R1_S3.txt",
|
dataDir + "car/logfile_CAR_R1_S3.txt",
|
||||||
dataDir + "car/logfile_CAR_R1_S3mini.txt",
|
dataDir + "car/logfile_CAR_R1_S3mini.txt", // s3 mini suckt hier genauso wie bei uns
|
||||||
dataDir + "car/logfile_CAR_R2_S3.txt",
|
dataDir + "car/logfile_CAR_R2_S3.txt",
|
||||||
dataDir + "car/logfile_CAR_R2_S4.txt"
|
dataDir + "car/logfile_CAR_R2_S4.txt"
|
||||||
},
|
},
|
||||||
@@ -252,14 +253,14 @@ int main(int argc, char** argv) {
|
|||||||
testScaler();
|
testScaler();
|
||||||
|
|
||||||
// the dataset to use
|
// the dataset to use
|
||||||
DataSetup setup = data.UAH;
|
DataSetup setup = data.UAH;
|
||||||
|
|
||||||
// load the floorplan
|
// load the floorplan
|
||||||
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(setup.map);
|
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(setup.map);
|
||||||
MyState::map = map;
|
MyState::map = map;
|
||||||
|
|
||||||
// optimize (and save) wifi parameters
|
// optimize (and save) wifi parameters
|
||||||
//optimize(map, setup.scaler, setup.vapMode, setup.minWifiOccurences, setup.training, setup.wifiParams);
|
//optimize(map, setup.scaler, setup.vapMode, setup.minWifiOccurences, setup.training, setup.wifiParams);
|
||||||
|
|
||||||
// testing
|
// testing
|
||||||
map->floors[0]->obstacles.clear();
|
map->floors[0]->obstacles.clear();
|
||||||
@@ -279,7 +280,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
FileReader fr(setup.training[1]);
|
FileReader fr(setup.training[1]);
|
||||||
|
|
||||||
|
|
||||||
//partikel gehen nicht schnell genug nach oben oder unten
|
//partikel gehen nicht schnell genug nach oben oder unten
|
||||||
@@ -305,7 +306,7 @@ int main(int argc, char** argv) {
|
|||||||
MyControl ctrl; ctrl.numSteps = 0;
|
MyControl ctrl; ctrl.numSteps = 0;
|
||||||
MyObs obs;
|
MyObs obs;
|
||||||
|
|
||||||
int numParticles = 10000;
|
int numParticles = 4000;
|
||||||
|
|
||||||
PFEval* eval = new PFEval(setup.scaler, model);
|
PFEval* eval = new PFEval(setup.scaler, model);
|
||||||
|
|
||||||
@@ -320,7 +321,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationWeightedAverage<MyState>>(new K::ParticleFilterEstimationWeightedAverage<MyState>()));
|
//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::ParticleFilterEstimationRegionalWeightedAverage<MyState>>(new K::ParticleFilterEstimationRegionalWeightedAverage<MyState>()));
|
||||||
pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationOrderedWeightedAverage<MyState>>(new K::ParticleFilterEstimationOrderedWeightedAverage<MyState>(0.6)));
|
pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationOrderedWeightedAverage<MyState>>(new K::ParticleFilterEstimationOrderedWeightedAverage<MyState>(0.95)));
|
||||||
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationKernelDensity<MyState, 3>>(new K::ParticleFilterEstimationKernelDensity<MyState, 3>()));
|
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationKernelDensity<MyState, 3>>(new K::ParticleFilterEstimationKernelDensity<MyState, 3>()));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user