Hi,

First, I apologize as I have relatively little programming experience.

I am trying to develop an application to measure the stroke rate of a rowing boat (how many strokes per minute). I think this should be achievable using accelerometer data (interesting link here. For this I have bought a cheap Nokia 5500 as it has an accelerometer in.

Firstly I installed Jouni's excellent Sensor Analyzer software and took the phone for a trip in the boat. There is definitely a regular period to the acceleration graph which should be extractable. Unfortunately the acceleration changes are relatively small. Playing around with the source code for Sensor Analyzer I introduced some (basic) smoothing to help remove the noise from the sensor, which helped give a cleaner signal.

Meanwhile I have also been writing some code using the PyExtAccel extension. I started with just displaying values, then smoothing, then calculating angles (just for fun!). I was thinking it might be possible to extract the fundamental frequency of the accelerometer data using a method such as FFT or perhaps Autocorrelation. It seems that there are no PyS60 libraries for these functions and I think that writing them out in Python would be slow - is this correct? Is there a good way to extract a fundamental frequency (would be in the range of roughly 0.17 to 1Hz = 10 to 60 strokes-per-minute)?

The other problem I have is that I do not know when the accelerometer data will arrive in the program - it seems to be maybe 30times per second, but will it always happen at 30Hz or can this change? If it is constant then I could work out the stroke-rate from number of samples, but otherwise I suppose I would need some sort of timer.


Sorry for all the questions, I don't think this was the easiest first project!

If you want I might be able to provide some raw accelerometer data from a rowing session, though I haven't quite figured out the best way to write the data to a file on the phone.


Any help much appreciated,

John