Go Down

Topic: Estimating speed using 3-axis accelerometer math needed. (Read 604 times) previous topic - next topic


I have searched high and low for some simple physics math to estimate speed (not velocity) using 3 axes, while cancelling out earths 9.81m/s^2 in any orientation.

I just really need an estimate of linear speed is all, no vector (velocity) required.  I am not trying to estimate a position from this at all, so please don't respond with "You can't accurately get a position using just an accelerometer.. " stuff.  I really just want to know if it's moving or not.  I am also trying to avoid calculus if possible (integral I'm looking at you)

This is what I had in mind in pseudocode but it just seems too simple and somehow doesnt correct for gravity (I was OK at Newtonian mechanics but awful at math lol):

(Assuming the unit is turned on at a complete standstill and gives measurements in G)

everything = 0

loop() {
samples = samples +1
xtotalgs = oldxsgs + xacceleration
ytotalgs = oldygs + yacceleration
ztotalgs = oldzgs + zacceleration

oldxgs = xtotalgs
oldygs = ytotalgs
oldzgs = totalzgs

speed = ABS((xtotalgs+ytotalgs+ztotalgs) - samples)) (minus the number of samples to subtract 1 g from each reading) ABS is absolute value I don't need/want negative values

I would rather be able to factor out gravity without a running total of samples, just for simplicity sake, and I know there's going to be noise that deviates the readings of gravity from 1G, but at least I'll have a starting point.

Anybody know of a better way of doing this??  Want to shoot holes in my math?  Am I way off base?  Is there a better sensor/application for this?  Been done/reinventing the wheel and I don't know it?  Find out tonight at 11.

Thanks guys -J


Average a bunch of readings while stationary.  Subtract those averages from each axis and accumulate the remainder acceleration.
Send Bitcoin tips to: 1G2qoGwMRXx8az71DVP1E81jShxtbSh5Hp

Go Up