# How do I implement a footstep recognition algorithm? One that recognizes the start and end points of each footstep?

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.)

1. 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.

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.

• Do you have a mat file or csv file with data to share. Better have Train + Test.
– Royi
Apr 1 '21 at 21:16
• I do have a CSV file (and Python code, but mostly for pre-processing). I'm checking if I have permission to share it
– Xin
Apr 2 '21 at 6:01
• Because if all measurements are similar to what you showed above I'd think a classic algorithm will do.
– Royi
Apr 2 '21 at 11:03
• This signal pattern does seem to be similar throughout. By classic algorithm, do you mean using something like peaks, 1st/2nd derivative, threshold cutoffs to identify steps?
– Xin
Apr 2 '21 at 18:36
• Yes. But we'll see once you share the data.
– Royi
Apr 2 '21 at 18:39