i want to know how to calculate steps taken using the Accelerometer. Actually i calculate acceleration and use this code to count step
length = sqrt(x * x + y * y + z * z);
if(length>=2){
stepcount+=1;
}
where length calculate acceleration using acceleration.x, acceleration.y,acceleration.z But my main problem at starting the application the stepcount gives correct step value but as time pass its value is not correct.Plz help me
Basically you're using sudden acceleration over a certain value as a sign that someone is ending or starting a step.
First, you have to make sure you end up sampling the accelerometer frequently enough not to miss a step. Then you're going to have to make sure that you are guessing correctly about what your threshold should be.
This is going to require a lot of trial and error.
What I would recommend is graphing out what the length is over time and seeing if you can come up with a good threshold value that's usually correct.
But, regardless, it's never really going to be accurate. I think the only way to really measure steps accurately is with a heel sensor in the shoe.
Edit: I seem to have misunderstood the problem. See Omnifarious' answer, which is more appropritate.
If you take the length of the acceleration vector, that is not going to give you the total distance traveled. This is going to be a bit more complex than that:
For example, suppose you accelerate a bit and then travel at a steady speed, the acceleration vector is going to be 0. However, since some velocity has built up, the distance traveled should steadily keep on increasing.
If you want to track the actual position, then maintain that as a vector, and keep adding the current velocity vector to it at each interval of time.
This is inertial navigation by dead reckoning, and errors will start to accumulate (in the velocity vector, and hence over the distance) over time. You need to do some experimentation to see what kind of accuracy you can hope to get.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With