minor changes,

new parameters,
added new walker-modules
This commit is contained in:
2016-09-10 15:11:09 +02:00
parent 24604cd467
commit 5df8324b15
4 changed files with 32 additions and 26 deletions

View File

@@ -10,10 +10,10 @@
#include <Indoor/grid/walk/v2/modules/WalkModuleHeading.h>
#include <Indoor/grid/walk/v2/modules/WalkModuleHeadingControl.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/WalkModuleFavorZ.h>
#include <Indoor/grid/walk/v2/modules/WalkModuleButterActivity.h>
#include <Indoor/grid/walk/v2/modules/WalkModulePreventVisited.h>
#include <Indoor/grid/factory/v2/GridNodeImportance.h>
@@ -101,27 +101,29 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
WalkModuleHeading<MyNode, MyState> modHeadUgly; // stupid
WalkModuleHeadingControl<MyNode, MyState, MyControl> modHead;
WalkModuleNodeImportance<MyNode, MyState> modImportance;
// WalkModuleRelativePressureControl<MyNode, MyState, MyControl> modPressure;
WalkModuleSpread<MyNode, MyState> modSpread;
WalkModuleFavorZ<MyNode, MyState> modFavorZ;
WalkModuleButterActivity<MyNode, MyState> modButterAct;
//WalkModuleWiFi modWifi;
//WalkModulePreventVisited<MyNode, MyState> modPreventVisited;
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(&modSpread); // might help in some situations! keep in mind!
//walker.addModule(&modHeadUgly);
walker.addModule(&modImportance);
//walker.addModule(&modPressure);
//walker.addModule(&modSpread);
walker.addModule(&modButterAct);
walker.addModule(&modFavorZ);
walker.addModule(&modButterAct);
//walker.addModule(&modWifi);
//walker.addModule(&modPreventVisited);
}
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 tmpSum2 = 0;
@@ -132,7 +134,7 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
tmpSum1 += p.state.relPres;
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
p.state.act = control->barometer.act;

View File

@@ -9,11 +9,14 @@
#include <Indoor/floorplan/v2/FloorplanHelper.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>
struct MyState : public WalkState, public WalkStateHeading {
struct MyState : public WalkState, public WalkStateHeading, public WalkStateSpread, public WalkStateFavorZ {
static Floorplan::IndoorMap* map;

View File

@@ -132,11 +132,11 @@ public:
// high signal strength? higher sigma!
const Timestamp age = curTS - ap.getTimestamp();
//const float sigma = 10.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
//double apProb = Distribution::Normal<double>::getProbability(modelRSSI, sigma, scanRSSI);
const float sigma = 11.0 + 1.2 * age.sec() + rssiSigma(scanRSSI);
double apProb = Distribution::Normal<double>::getProbability(modelRSSI, sigma, scanRSSI);
const float sigma = 8.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
const double apProb = Distribution::Region<float>::getProbability(modelRSSI, sigma, scanRSSI);
//const float sigma = 8.0 + 0.5 * age.sec() + rssiSigma(scanRSSI);
//const double apProb = Distribution::Region<float>::getProbability(modelRSSI, sigma, scanRSSI);
prob += std::log(apProb);

View File

@@ -75,12 +75,13 @@ void testScaler() {
#include <Indoor/geo/Heading.h>
//const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
//const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
//frank
const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
//toni
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 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/";
/** describes one dataset (map, training, parameter-estimation, ...) */
struct DataSetup {
@@ -101,7 +102,7 @@ struct Data {
{
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_S4.txt"
},
@@ -252,14 +253,14 @@ int main(int argc, char** argv) {
testScaler();
// the dataset to use
DataSetup setup = data.UAH;
DataSetup setup = data.UAH;
// load the floorplan
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(setup.map);
MyState::map = map;
// 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
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
@@ -305,7 +306,7 @@ int main(int argc, char** argv) {
MyControl ctrl; ctrl.numSteps = 0;
MyObs obs;
int numParticles = 10000;
int numParticles = 4000;
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::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>()));