feat: add ts to StepDetector
This commit is contained in:
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
class StepListener {
|
class StepListener {
|
||||||
public:
|
public:
|
||||||
virtual ~StepListener() {}
|
virtual ~StepListener() = default;
|
||||||
virtual void playBeat() = 0;
|
virtual void playBeat(double t) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** mean-filter the gravity vector, then take acceleration downwards */
|
/** mean-filter the gravity vector, then take acceleration downwards */
|
||||||
@@ -55,8 +55,13 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
StepDetector(double fps, StepListener *listener, bool debug = false);
|
StepDetector(double fps, StepListener *listener, bool debug = false);
|
||||||
|
/**
|
||||||
|
* Push accelerometer values.
|
||||||
|
* @param ts timestamp in ns
|
||||||
|
* @param values acceleration values for x,y,z
|
||||||
|
*/
|
||||||
void filter(double ts, std::vector<float> values);
|
void filter(double ts, std::vector<float> values);
|
||||||
void filter_a(double s1);
|
void filter_a(double t, double s1);
|
||||||
std::vector<double> getBufSsd();
|
std::vector<double> getBufSsd();
|
||||||
std::vector<double> getBufSqi();
|
std::vector<double> getBufSqi();
|
||||||
std::vector<double> getBufOut();
|
std::vector<double> getBufOut();
|
||||||
|
|||||||
@@ -65,11 +65,11 @@ void StepDetector::filter(double ts, std::vector<float> values) {
|
|||||||
// gravity filtering
|
// gravity filtering
|
||||||
double a = f_grav.filter(samp);
|
double a = f_grav.filter(samp);
|
||||||
// pass on accel sample
|
// pass on accel sample
|
||||||
filter_a(a);
|
filter_a(ts, a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StepDetector::filter_a(double s2) {
|
void StepDetector::filter_a(double ts, double s2) {
|
||||||
auto s3 = f_ssf.filter(s2);
|
auto s3 = f_ssf.filter(s2);
|
||||||
auto s4 = f_ssd.filter(s3);
|
auto s4 = f_ssd.filter(s3);
|
||||||
auto q5 = f_sqi.filter(s2, s3, s4);
|
auto q5 = f_sqi.filter(s2, s3, s4);
|
||||||
@@ -80,7 +80,7 @@ void StepDetector::filter_a(double s2) {
|
|||||||
}
|
}
|
||||||
// is step, step quality is OK, and we have a listener?
|
// is step, step quality is OK, and we have a listener?
|
||||||
if(s4 > 0.0 && q5 > 0.0 && listener != nullptr) {
|
if(s4 > 0.0 && q5 > 0.0 && listener != nullptr) {
|
||||||
listener->playBeat();
|
listener->playBeat(ts / 1e9);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user