I have some time series data captured from a person's footsteps/strides (specifically, a person on rollerblades). It came from an IMU sensor placed on a person's boot. Each data point captures acceleration, angular velocity, etc.
Here's a graph of "acceleration in the x direction vs. time" for one foot:
Problem/Goal: I want to write an algorithm to detect all the footsteps in the data, specifically, the start and end times of each footstep. (Start = foot leaves the ground; End = foot touches the ground).
Here's an example below. Each shaded region represents the duration of a footstep (from start to end). Annotated data like this is available for me to use, perhaps in a supervised learning model.
Here are some of the approaches I am considering after searching around. (Feel free to SKIP this section.)
- Dynamic sliding window + classifier
This involves somehow sliding a dynamic window over the time series. At each window, run a classification model to determine whether the windowed data is a footstep or not. A dynamic window is necessary because each step varies in length.
From this blog, I know how to create a signal classification model. I can use Fast Fourier Transform or Wavelet Transform to extract features to use in a supervised learning model.
- Gradient Boosting Machine
I read this paper that created a model to recognize the start/end points of footsteps... for turkeys lol. It uses a Gradient Boosting Machine and trained on data where all data points belonging to a "footstep" were annotated (e.g. all shaded areas in the graph above).
Question: Does anyone have any suggestions for how to approach this problem? Or perhaps any comments on whether the approaches above make sense or don't make sense.
Note: My knowledge in Deep Learning is pretty basic, so I am not considering Deep Learning approaches for the sake of time. Perhaps something for the future.
mat
file orcsv
file with data to share. Better have Train + Test. $\endgroup$