I'm trying to integrate acceleration from an acceleraometer to find a distance travelled. I have heard all the stories about this not being accurate but i didn't come up with the method i'm just trying to implement an algorithm to do it. I'ts justan estimate for wear rates, not positioning. I'm working with 3dof, so i have x y and z acceleration. at the moment i'm integrating each twice seperately to get a distance, then taking the sqrt of the sum of the squares to get the eulicidean distance travelled. The main issue i'm having that nobody considered is that the accelerometer gives 9.81 on the z thanks to gravity, and the measurements go out the window. Is it possible to do the eulicidean distance of the acceleration, subtract the 9.81, then do the integration to get the distance travelled? Is this valid? Would it work?
If what you have is the magnitude of the net acceleration then integrating it will not give you a distance travelled. Think about a centrifuge -- high acceleration but net distance travelled is negligible. What you need to do is to subtract the 9.81 from the "z" coordinate of the acceleration and then integrate as before. If your z axis is not perfectly vertical then you would want to convert that 9.81 to an (x,y,z) acceleration value and subtract that from x, y and z.
Thanks for the reply, but the idea of the centrefuge has confused me even more. Wouldn't we get the same result by summing before integrating rather than after? (comparing the two methods i outlined in the first post) Treating x y and z independantly gives me a major headache in that I cannot say that z will stay z, the device i'm measuring is free to rotate in all axes, and so i'm lost as how to compensate.
It sounds like your methodology is perfectly correct. Just subtract 9.81 from the z acceleration, and integrate. There is no reason why this all shouldn't be accurate. In fact, integrating tends to reduce the inaccuracy. Of course, don't use Forward Euler. Try to use higher order integration formulas. For example, use the acceleration at time t to integrate the velocity between t -(Δt)/2 to t + (Δt)/2. Then use the velocity at t + (Δt)/2 to integrate the distance between t and t + Δt.
You spoke of taking the euclidean distance and subtracting 9.81 from that. That's not a vector subtraction. That's a scalar subtraction. That means you would not be integrating a vector. You would be integrating a scalar, completely ignoring the direction of the acceleration. The point I was trying to make is that you need to subtract the 9.81 as a vector, leaving a residual vector acceleration and integrate that. The centrifuge example would have a high scalar acceleration. Integrate that and you get a huge number. But integrate the vector and the directions would tend to cancel out over the long run giving a much lower number. Did I make sense that time or am I still losing you?
You can't, unless it also measures angular accelerations, which you have to integrate too, to track orientation.
I understand now that i would be ignoring the direction of the acceleration by subtracting after taking the sum. If i could subtract the 9.81 from the z, could i then go ahead with summing the accelerations and then integrating? Is this be the same as integrating separately?
You have to subtract the 9.81 from the z in earth's frame. But the device gives you xyz in the device frame. If you don't know the orientation of the device, you have no chance to get the position in the earth's frame.
No. You still have the same problem. (Which is in addition to the problem that A.T. is pointing out). Suppose you walk around and around and around the room with a 0.01 g acceleration toward the center of the room. And suppose that you do this for ten minutes. If you integrate the vector and then sum you'll wind up with the correct answer -- a small net distance moved. If you sum and then integrate the scalar you'll wind up with the wrong answer. 0.01 g for 600 seconds is about 17 kilometers.