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/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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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>()));
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user