added gps support

added compass support
added ui elements for gps and compass
added support for writing sensor data
This commit is contained in:
2017-03-21 16:27:14 +01:00
parent c7c94cbebe
commit b0712ec005
24 changed files with 586 additions and 30 deletions

View File

@@ -16,6 +16,7 @@
#include <Indoor/floorplan/v2/FloorplanHelper.h>
#include <Indoor/sensors/radio/WiFiGridEstimator.h>
#include <Indoor/sensors/radio/setup/WiFiOptimizerLogDistCeiling.h>
#include <Indoor/Assertions.h>
@@ -28,11 +29,13 @@
#include "sensors/dummy/SensorFactoryDummy.h"
#include "sensors/android/SensorFactoryAndroid.h"
#include "sensors/offline/SensorFactoryOffline.h"
#include "sensors/SensorWriter.h"
#include "tools/calibration/WiFiCalibrationDataModel.h"
#include "nav/NavController.h"
Controller::Controller() {
// OpenGL setup
@@ -51,13 +54,29 @@ Controller::Controller() {
//SensorFactory::set(new SensorFactoryOffline(Settings::Data::getOfflineDir() + "bergwerk/path3/nexus/vor/1454782562231.csv"));
//SensorFactory::set(new SensorFactoryOffline(Settings::Data::getOfflineDir() + "/bergwerk/path4/nexus/rueck/1454776724285_rueck.csv"));
SensorFactory::set(new SensorFactoryOffline(Settings::Data::getOfflineDir() + "/bergwerk/path4/nexus/vor/1454776525797.csv"));
//SensorFactory::set(new SensorFactoryOffline(Settings::Data::getOfflineDir() + "/bergwerk/path4/nexus/vor/1454776525797.csv"));
// live data on the smartphone
if (1 == 1) {
// use android's sensors
SensorFactory::set(new SensorFactoryAndroid());
// write them to file??
//const std::string file = Settings::Data::getRecordsDir() + "/" + std::to_string(Timestamp::fromUnixTime().ms()) + ".csv";
//SensorWriter* writer = new SensorWriter();
//writer->start(file);
// start the sensors
SensorFactory::get().getAccelerometer().start();
SensorFactory::get().getGyroscope().start();
SensorFactory::get().getBarometer().start();
SensorFactory::get().getWiFi().start();
SensorFactory::get().getGPS().start();
SensorFactory::get().getCompass().start();
}
// SensorFactory::set(new SensorFactoryAndroid());
// SensorFactory::get().getAccelerometer().start();
// SensorFactory::get().getGyroscope().start();
// SensorFactory::get().getBarometer().start();
// SensorFactory::get().getWiFi().start();
// create the main window
@@ -126,13 +145,13 @@ void buildGridOnce(Grid<MyGridNode>* grid, Floorplan::IndoorMap* map, const std:
WiFiCalibrationDataModel mdl(fpFile);
Assert::isFalse(mdl.getFingerprints().empty(), "no fingerprints available!");
WiFiOptimizer opt(map, Settings::WiFiModel::vg_calib);
WiFiOptimizer::LogDistCeiling opt(map, Settings::WiFiModel::vg_calib);
for (const WiFiFingerprint& fp : mdl.getFingerprints()) {
opt.addFingerprint(fp);
}
const std::vector<WiFiOptimizer::APParamsMAC> res = opt.optimizeAll();
const WiFiOptimizer::LogDistCeiling::APParamsList res = opt.optimizeAll(opt.NONE);
WiFiGridEstimator::estimate(*grid, wifiModel, Settings::smartphoneAboveGround);
for (const WiFiOptimizer::APParamsMAC& ap : res) {
for (const WiFiOptimizer::LogDistCeiling::APParamsMAC& ap : res.get()) {
const WiFiModelLogDistCeiling::APEntry entry(ap.params.getPos(), ap.params.txp, ap.params.exp, ap.params.waf);
wifiModel.addAP(ap.mac, entry);
}