programmatically detecting falls using accelerometers

I have a 3-axis accelerometer hoooked up and succesfully reading data. I am interested in attaching this to a person and responding when they jump and come back down and jump but dont come back down (like up to a ledge, etc).

I am after some general approaches to detecting this sort of behaviour.

One thought would be to have a rolling window of values and comparing the begining of it with the end (or just a delay between two measurements and compare them). This could suffer from a resolution problem if the window is not large enough and the sample rate is not high enough either. Or several comparison points to see more fine grained movements. This would take quite a while for me to work out and fine tune, does anyone else have a good suggestion to how to approach this that might make it easier for me to do what I want?

Basically, for each of the X, Y, and Z accelerometer outputs you have to integrate them twice. Once gives you velocity. The second gives you accumulated distance. After any significant +pulse of the z accelerometer, indicating a jump upward, you wait for the acceleration to settle to 0 and then look at the Z difference. You can then threshold how much you are calling a ledge.

That’s going to be hard, unless you have some way to determine the orientation of your accelerometer. Are you allowed to assume that the person wearing it remains basically upright at all times?

you may start testing on a trampoline (does not hurt so much :)

PeterH: That's going to be hard, unless you have some way to determine the orientation of your accelerometer. Are you allowed to assume that the person wearing it remains basically upright at all times?

True. I thought there would be an initialize button, to be hit once when the thing is upright and at rest. If not, perhaps it can be finessed in software. I don't know how sensitive or accurate the device is, but if one is given the XYZ coordinate history of the device, I would think you can determine which plane is horizontal, in effect which way is up because that motion is markedly different from the bulk of all the other motions. On second thought, though possible, it is non-trivial and perhaps beyond the scope to do this. Maybe something simple like when the device is at rest (0 accel in x y z for a while), that becomes the new snapped "zero position" pointing straight up, though no specific horizontal direction.

When an accelerometer like this is in free fall all the axis show as zero, so it is easy to detect. Free fall is in effect a zero gravity situation, although the floor eventually has something to say about it.

On one of the early evaluation boards for an accelerometer with a wireless connection, the sales man tossed it in the air and an alarm rang when it was on it's way down.

Techylah:

PeterH: That's going to be hard, unless you have some way to determine the orientation of your accelerometer. Are you allowed to assume that the person wearing it remains basically upright at all times?

True. I thought there would be an initialize button, to be hit once when the thing is upright and at rest.

Yes! The idea is that you setup for each jump is the same position with the accelerometer in the same position also. So there is a good known position to work from. Through out the jump the accelerometer should remaine in the same orientation, at least enough of the time for thsi to be effective.

If you are starting from a known state that is more-or-less stationary, and you know that the sensor is going to remain in roughly the same orientation for the duration, you can establish the direction of gravity by averaging the net acceleration vector over thye last second or so while the total acceleration remains close to 1G. Then you can estimate the acceleration upwards by taking the component of net acceleration in the vertical direction. You can integrate that to calculate speed and integrate that to calculate vertical distance travelled. The start point is when the total acceleration ceases to be about 1G and the end point is when the total acceleration has been about 1G for a suitable period.