I started collecting data for my project, but I strained my back (doing something else) and I don't think I'll be doing much more project stuff for a while.
I did capture a bunch of data and I thought I'd evaluate that, even though I don't think it will be sufficient to develop a TinyML model.
First, let me go over the methodology that I used to determine the dataset parameters and experimental procedure.
My objective is to be able to recognize a person by his/her footstep pattern that is captured by the vibration sensor. I'm going to constrain the problem by only measuring the gait, i.e. just footsteps in a straight line. The second constraint is that there can only be a single person walking at a time. Third constraint is that I'm only using my wife and myself for subjects.
I decided that I need to measure at least 5 steps, so I am capturing 5 seconds of data in each sample and I require a clear linear path of 10-12 feet for measurement. I have a lot of carpeted areas in my house, so the most appropriate test areas are the upstairs bathroom which has a laminate floor and the first floor kitchen and entryway which have hardwood floors. The test areas in the bathroom and kitchen are similar, I have a 10 foot walking path and the vibration sensor is offset about a foot at the center of the path. The sensor is attached to the top of the floor surface with double sided tape. In the bathroom, the counter is a dual sink vanity; in the kitchen it is an island with the stove and cabinets. The Wio Terminal is set up on the counter at the beginning of the path, so that I can manually trigger the sampling.
I took the initial set of data in the bathroom. Here is a composite of 10 samples of me walking.
I made a few of observations from the composite:
- The footstep vibration amplitude is not very repeatable
- The footstep vibration amplitude is relatively small
- Only footsteps close to the sensor can be discriminated
Looking at some of the samples individually:
It appears that my walking cadence is about 0.5 seconds between steps. You can see the amplitude inconsistency.
The I took some data in the kitchen to see if there was any significant difference in results:
The composite only has 4 samples, but similar results as the bathroom (somewhat lower amplitudes).
Then I took a couple of samples of my wife walking which surprised me:
- Does my wife really have that uneven a walking cadence?
- What is the low frequency baseline shift?
- What is that huge amplitude spike in the second plot?
Conclusions from examining the data
- Bad measurement setup - I didn't fully think through the what and how of the measurements. The structure of the floor isn't providing a clear enough path for the vibration to get to the sensor, so there is poor signal amplitude. It appears that there is enough damping that there isn't much amplitude beyond about 3 feet, so only 3 footsteps can be detected. I'm starting to think that a single sensor would be okay with simple detection, but reliable classification would probably require an array of sensors. I don't know if a bandpass amplifier would help. I would think that heavier people might have created larger vibrations (I'm about 120 lbs and my wife is about 100 lbs), but with this pandemic we don't have many visitors. The 20 lb dog is down in the noise .
- Footstep pattern is distinct - I would need to take more data, but it appears that in this simple case - if the measurements were more repeatable, that there is enough difference in our footstep patterns to distinguish between myself and my wife.
I was not able to collect enough data to attempt to develop a TinyML model, but since I have some data I am going to try to see if I can at least try out the Edge Impulse tools. I realized that I don't actually know what processing block to use for feature extraction from this data or whether I can deploy SVM for the learning block.