From e264fd53baf791d0d5e425be8bde2cc6018016b2 Mon Sep 17 00:00:00 2001 From: kazu Date: Fri, 22 Apr 2016 12:23:44 +0200 Subject: [PATCH] new activities --- code/lukas/ActivityDetection.h | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/code/lukas/ActivityDetection.h b/code/lukas/ActivityDetection.h index bbc5255..dfc03e0 100644 --- a/code/lukas/ActivityDetection.h +++ b/code/lukas/ActivityDetection.h @@ -7,6 +7,7 @@ #include #include +#include #include @@ -27,7 +28,8 @@ private: Activity current = Activity::UNKNOWN; K::Statistics mag; - K::Statistics hpa; + //K::Statistics hpa; + std::vector hpa; MovingMedian hpaAvg; @@ -45,10 +47,11 @@ public: /** add barometer values */ void addBaro(float hpa) { - hpaAvg.add(hpa); - float smoothed = hpaAvg.get(); - this->hpa.add(smoothed); - if (this->hpa.getCount() > 50) {analyze();} + //hpaAvg.add(hpa); + //float smoothed = hpaAvg.get(); + //this->hpa.add(smoothed); + this->hpa.push_back(hpa); + if (this->hpa.size() > 40) {analyze();} } struct ActClass { @@ -85,18 +88,24 @@ public: if (mag.getStdDev() < 0.3) { current = Activity::STANDING; + } else if (mag.getStdDev() < 3) { + current = Activity::WALKING; } else { - if (hpa.getRange() > 0.035) { - current = Activity::STAIRS; + float hpaD = hpa.front() - hpa.back(); + if (hpaD > 0.01) { + current = Activity::STAIRS_UP; + } else if (hpaD < -0.01) { + current = Activity::STAIRS_DOWN; } else { current = Activity::WALKING; } } // current = (Activity) idx; +// current = Activity::UNKNOWN; mag.reset(); - hpa.reset(); + hpa.clear(); } @@ -110,7 +119,8 @@ public: case Activity::UNKNOWN: return "unknown"; case Activity::STANDING: return "standing"; case Activity::WALKING: return "walking"; - case Activity::STAIRS: return "stairs"; + case Activity::STAIRS_UP: return "stairs up"; + case Activity::STAIRS_DOWN: return "stairs down"; case Activity::ELEVATOR: return "elevator"; } throw "should not happen";