#ifndef NAVCONTROLLERMESH_H #define NAVCONTROLLERMESH_H #include "../sensors/AccelerometerSensor.h" #include "../sensors/GyroscopeSensor.h" #include "../sensors/BarometerSensor.h" #include "../sensors/WiFiSensor.h" #include "../sensors/SensorFactory.h" #include "../sensors/StepSensor.h" #include "../sensors/TurnSensor.h" #include "../sensors/ActivitySensor.h" #include #include #include #include //#include "State.h" #include "FilterMesh.h" #include "../Controller.h" #include "../NavController.h" namespace MeshBased { class NavControllerMesh : public NavController { private: NM::NavMesh* navMesh; WiFiModel* wifiModel; std::unique_ptr> pf; MyObservation curObs; MyControl curCtrl; public: NavControllerMesh(Controller* mainController, Floorplan::IndoorMap* im, NM::NavMesh* navMesh, WiFiModel* wifiModel); void start() override; void stop() override; void onSensorData(Sensor* sensor, const Timestamp ts, const AccelerometerData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const GyroscopeData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const BarometerData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const WiFiMeasurements& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const GPSData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const StepData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const TurnData& data) override; void onSensorData(Sensor* sensor, const Timestamp ts, const ActivityData& data) override ; private: /** called when any sensor has received new data */ void gotSensorData(const Timestamp ts); // void debugActivity(const ActivityData& activity); /** particle-filter update loop */ void filterUpdateLoop(); /** check whether its time for a filter update, and if so, execute the update and return true */ bool filterUpdateIfNeeded(); /** perform a filter-update (called from a background-loop) */ void filterUpdate(); /** UI update loop */ void updateMapViewLoop(); }; } #endif // NAVCONTROLLERMESH_H