views:

362

answers:

2

Hello,

I am currently developing an application that receives GPS data gathered using and android phone. I need to analyze that data in terms of speed, acceleration, etc...

My question is: Can I trust the speed values returned by the phone? Or should I use the difference in position and time between two points to get the values I want? Also, is there any "standard" method for filtering input data? Or any library (python welcomed) that does that kind of task?

Thank you in advance! :)

+8  A: 

Except using rather complicated data signal processing techniques, or by using an accelerometer and dead reckoning (which is highly inaccurate), a GPS device cannot measure its own velocity. Due to this, the velocity data provided by a GPS unit is interpolated using the exact same method you want to use. The two probably have similar precision excluding minor errors introduced from whatever algorithms both you and the GPS chip manufacturer use.

There are more advanced filtering / data processing techniques for interpolating velocity across multiple points, not just the most recent two. In all likelihood, your GPS chip is already implementing one of these and so will be more accurate than your more rudimentary implementation.

David Pfeffer
Thank you! I will probably leave it to the device then, who did it probably knew what he was doing :)
jrrt
I'm sure you are correct about the method that the GPS is using, but, in principle, this is not correct. It is possible to calculate velocity based on doppler shifts in the reference signals. Since these shifts are not provided among the other GPS data, the device could know more about the velocity than the simple distance/time calculation would provide. (Again, I doubt that any retail GPS device actually does this.)
Jeffrey L Whitledge
@Jeffrey: You're correct; I updated the answer to reflect this.
David Pfeffer
+1  A: 

The standard filtering you want is probably Kalman filtering. There's plenty of info online about that.

DarenW