2

I am developing (for my senior project) a dumbbell that is able to classify and record different exercises. The device has to be able to classify a range of these exercises based on the data given from an IMU (Inertial Measurement Unit). I have acceleration, gyroscope, compass, pitch, yaw, and roll data.

I am leaning towards using an Artificial Neural Network in order to do this, but am open to other suggestions as well. Ultimately I want to pass in the IMU data into the network and have it tell me what kind of exercise it is (Bicep curl, incline fly etc...).

If I use an ANN, what kind should I use (recurrent or not) and how should I implement it? I am not sure how to get the network to recognize an exercise when I am passing it a continuous stream of data. I was thinking about constantly performing an FFT on a portion of the inputs and sending a set number of frequency magnitudes into the network, but am not sure if that will work either. Any suggestions/comments?

anonymousfox
  • 769
  • 2
  • 9
  • 19

2 Answers2

2

Your first task should be to collect some data from the dumbbell. There are many, many different schemes that could be used to classify the data, but until you have some sample data to work with, it is hard to predict exactly what will work best.

If you get 5 different people to do all of the exercises and look at the resulting data yourself (e.g. pilot the different parts of the data collected), can you distinguish which exercise is which? This may give you hints on what pre-processing you might want to perform on the data before sending it to a classifier.

Nathan S.
  • 5,244
  • 3
  • 45
  • 55
  • Hi Nathan, thanks for your suggestions. I do have actual data from the IMU (pitch, yaw, roll) and am able to see patterns in the way the data changes with each exercise. The problem I am at is figuring out how to send this data into the neural net. Ideally I would like to send all the data points I get into it, but I am not sure how it will handle exercises performed at different speeds. If someone does the exercise at any other rate than the precise speed needed, won't it be thrown off as the values at any one point will be vastly different? – anonymousfox Mar 10 '14 at 03:01
  • Also, with a traditional Neural Net, there won't be any memory in the system so it won't be able to track the changes in these data points. – anonymousfox Mar 10 '14 at 03:02
  • What you want to do is break things down into features. You can do things like take a Fourier transform of the data to get time-based features as a single feature instead of a time series. You can also do things like take the max, min, average, etc to again get discrete features instead of a time series. I have seen approaches that work on time series, but you're probably better off finding features that summarize the time-dependent information in the data. – Nathan S. Mar 10 '14 at 04:21
  • For instance, you could coarsely discretize the data and the inputs would be how many samples are in each of the discretizations. – Nathan S. Mar 10 '14 at 04:24
0

First you create a large training set. Then you train it, telling it what actually happens.

And you might uses averages of data as well. Perhaps use actual movement and movement that is averaged over 2 sec 5 sec and 10 sec. use those too as for input nodes.

while exercising the trained network can be feeded with the averaged data as well ea (the last x samples divided by x), this will give you a stable approach. Otherwise the neural network can become hectic erratic.

Notice the training set might require averaged data as well and thus you will need a large training set.

user613326
  • 2,140
  • 9
  • 34
  • 63