diff --git a/code/Settings.h b/code/Settings.h index fa65053..ed4dd15 100644 --- a/code/Settings.h +++ b/code/Settings.h @@ -93,7 +93,7 @@ namespace Settings { const std::string dataDir = "../measurements/data/"; const std::string errorDir = "../measurements/error/"; - const bool UseKalman = false; + const bool UseKalman = true; /** describes one dataset (map, training, parameter-estimation, ...) */ @@ -143,20 +143,12 @@ namespace Settings { const DataSetup Path1 = { mapDir + "map2_ap_path1.xml", { - dataDir + "Pixel2/Path1_7208.csv", - }, - { - { NUC1, {1, { 8.1, 18.7, 0.8}, 2.25, 0, 10.0f} }, // NUC 1 - { NUC2, {2, { 8.4, 27.3, 0.8}, 3.25, 0, 10.0f} }, // NUC 2 - { NUC3, {3, {21.3, 19.3, 0.8}, 2.50, 0, 10.0f} }, // NUC 3 - { NUC4, {4, {20.6, 26.8, 0.8}, 3.00, 0, 10.0f} }, // NUC 4 - }, - { 1, 2, 6, 7, 6, 2, 1 } - }; - const DataSetup Path1_1 = { - mapDir + "map2_ap_path1.xml", - { - dataDir + "Pixel2/1560154188048_2_5.csv", + dataDir + "Pixel2/path1/1560153927208_2_1.csv", + dataDir + "Pixel2/path1/1560153989866_2_2.csv", + dataDir + "Pixel2/path1/1560154049481_2_3.csv", + dataDir + "Pixel2/path1/1560154143357_2_4.csv", + dataDir + "Pixel2/path1/1560154188048_2_5.csv", + dataDir + "Pixel2/path1/1560154230042_2_6.csv" }, { { NUC1, {1, { 8.1, 18.7, 0.8}, 2.25, 0, 10.0f} }, // NUC 1 @@ -172,6 +164,11 @@ namespace Settings { mapDir + "map2_ap_path1.xml", { dataDir + "Pixel2/path2/1560154622883_3_1.csv", + dataDir + "Pixel2/path2/1560154679846_3_2.csv", + dataDir + "Pixel2/path2/1560154740633_3_3.csv", + dataDir + "Pixel2/path2/1560154852350_3_4.csv", + dataDir + "Pixel2/path2/1560154892633_3_5.csv", + dataDir + "Pixel2/path2/1560154931995_3_6.csv" }, { { NUC1, {1, { 8.1, 18.7, 0.8}, 1.50, 0, 3.0f} }, // NUC 1 @@ -188,6 +185,11 @@ namespace Settings { mapDir + "map2_ap_path2.xml", { dataDir + "Pixel2/path3/1560155227376_4_1.csv", + dataDir + "Pixel2/path3/1560155332037_4_2.csv", + dataDir + "Pixel2/path3/1560155435568_4_3.csv", + dataDir + "Pixel2/path3/1560155662787_4_4.csv", + dataDir + "Pixel2/path3/1560155744688_4_5.csv", + dataDir + "Pixel2/path3/1560155821831_4_6.csv" }, { { NUC1, {1, { 8.1, 18.7, 0.8}, 1.25, 0, 3.0f} }, // NUC 1 @@ -203,6 +205,11 @@ namespace Settings { mapDir + "map2_ap_path2.xml", { dataDir + "Pixel2/path4/1560156876457_5_1.csv", + dataDir + "Pixel2/path4/1560156976307_5_2.csv", + dataDir + "Pixel2/path4/1560157087291_5_3.csv", + dataDir + "Pixel2/path4/1560157347306_5_4.csv", + dataDir + "Pixel2/path4/1560157409937_5_5.csv", + dataDir + "Pixel2/path4/1560157495026_5_6.csv" }, { { NUC1, {1, { 8.1, 18.7, 0.8}, 1.50, 0, 3.0f} }, // NUC 1 @@ -212,13 +219,18 @@ namespace Settings { }, { 0, 1, 2, 3, 2, 6, 5, 6, 7, 8 } }; - + // 5 Path: In Räumen extendend const DataSetup Path5 = { mapDir + "map2_ap_path2.xml", { + dataDir + "Pixel2/path5/1560158444772_6_1.csv", + dataDir + "Pixel2/path5/1560158562549_6_2.csv", dataDir + "Pixel2/path5/1560158675012_6_3.csv", + dataDir + "Pixel2/path5/1560158823911_6_4.csv", + dataDir + "Pixel2/path5/1560158907998_6_5.csv", + dataDir + "Pixel2/path5/1560158988785_6_6.csv" }, { { NUC1, {1, { 8.1, 18.7, 0.8}, 2.00, 0, 3.0f} }, // NUC 1 diff --git a/code/main.cpp b/code/main.cpp index f7c3d89..6fcd305 100644 --- a/code/main.cpp +++ b/code/main.cpp @@ -179,13 +179,13 @@ void exportFtmValues(Offline::FileReader& fr, Interpolator& gt static float kalman_procNoiseDistStdDev = 1.2f; // standard deviation of distance for process noise static float kalman_procNoiseVelStdDev = 0.1f; // standard deviation of velocity for process noise -static Stats::Statistics run(Settings::DataSetup setup, int numFile, std::string folder) { +static Stats::Statistics run(Settings::DataSetup setup, int walkIdx, std::string folder) { // reading file std::string currDir = std::filesystem::current_path().string(); Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(setup.map); - Offline::FileReader fr(setup.training[numFile]); + Offline::FileReader fr(setup.training[walkIdx]); // ground truth std::vector gtPath = setup.gtPath; @@ -211,7 +211,7 @@ static Stats::Statistics run(Settings::DataSetup setup, int numFile, std: } std::ofstream errorFile; - errorFile.open (evalDir.string() + "/" + std::to_string(numFile) + "_" + std::to_string(t) + ".csv"); + errorFile.open (evalDir.string() + "/" + std::to_string(walkIdx) + "_" + std::to_string(t) + ".csv"); // wifi @@ -221,7 +221,7 @@ static Stats::Statistics run(Settings::DataSetup setup, int numFile, std: kalmanMap->insert({ Settings::NUC3, Kalman(3, setup.NUCs.at(Settings::NUC3).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev) }); kalmanMap->insert({ Settings::NUC4, Kalman(4, setup.NUCs.at(Settings::NUC4).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev) }); - std::cout << "Optimal wifi parameters for " << setup.training[numFile] << "\n"; + std::cout << "Optimal wifi parameters for " << setup.training[walkIdx] << "\n"; optimizeWifiParameters(fr, gtInterpolator); // mesh @@ -397,6 +397,8 @@ static Stats::Statistics run(Settings::DataSetup setup, int numFile, std: //dbg.setTimeInMinute(static_cast(ts.sec()) / 60, static_cast(static_cast(ts.sec())%60)); //dbg.draw(); + //plot.printOverview("test"); + plot.showParticles(pf.getParticles()); plot.setCurEst(est.pos.pos); plot.setGroundTruth(gtPos); @@ -407,9 +409,10 @@ static Stats::Statistics run(Settings::DataSetup setup, int numFile, std: //plot.splot.getView().setCamera(0, 0); //plot.splot.getView().setEqualXY(true); - plot.plot(); +// plot.plot(); - + plot.plot(); + //plot.closeStream(); //std::this_thread::sleep_for(500ms); // error calc @@ -457,7 +460,7 @@ int main(int argc, char** argv) Stats::Statistics tmp; std::string evaluationName = "prologic/tmp"; - + std::vector> error; std::ofstream error_out; error_out.open(Settings::errorDir + evaluationName + "_error_path1" + ".csv", std::ios_base::app); @@ -467,18 +470,26 @@ int main(int argc, char** argv) //{ // for (kalman_procNoiseVelStdDev = 0.1f; kalman_procNoiseVelStdDev < 0.5f; kalman_procNoiseVelStdDev += 0.1f) // { - for (int i = 0; i < 2; ++i) { - tmp = run(Settings::data.CurrentPath, 0, evaluationName); - statsMedian.add(tmp.getMedian()); - statsAVG.add(tmp.getAvg()); - statsSTD.add(tmp.getStdDev()); - statsQuantil.add(tmp.getQuantile(0.75)); + for (size_t walkIdx = 0; walkIdx < 6; walkIdx++) + { + std::cout << "Executing walk " << walkIdx << "\n"; + for (int i = 0; i < 1; ++i) + { + std::cout << "Start of iteration " << i << "\n"; - std::cout << kalman_procNoiseDistStdDev << " " << kalman_procNoiseVelStdDev << std::endl; - std::cout << "Iteration " << i << " completed" << std::endl; + tmp = run(Settings::data.CurrentPath, walkIdx, evaluationName); + statsMedian.add(tmp.getMedian()); + statsAVG.add(tmp.getAvg()); + statsSTD.add(tmp.getStdDev()); + statsQuantil.add(tmp.getQuantile(0.75)); + + std::cout << kalman_procNoiseDistStdDev << " " << kalman_procNoiseVelStdDev << std::endl; + std::cout << "Iteration " << i << " completed" << std::endl; + + } + } - } // error.push_back({{ kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev, statsAVG.getAvg() }});