Alex
Alex

Reputation: 51

Android GPS data obtaining and filtering, how it improve location info

I'm starting to deal with gps data on Android 2.1 (HTC Hero) and look around on topics about Kalman filter and least squares fit to location data. While receiving and logging GPS data using phone I've found small dispersion if staying on position, but coordinates are pretty accurate when moving. Here comes the question: - Do getLatitude() and getLongitude() functions provide "raw" coordinates, or data was pre-filtered by android (while position is fixed or during movement)?

I'm curious if anyone tested Kalman on android and it's possible to say that you have certain improvements with gps. In my case I read GPS data every 3 seconds(was done to send it over mobile network to server along with compass data and accelerometer). Therefore, I can make filtering on device or on the server. If to do it on device reading can be done more often, but on server I could use additional calculation power.

Upvotes: 5

Views: 4129

Answers (1)

jcwenger
jcwenger

Reputation: 11453

I work with Kalman filters in my field. A Kalman filter is a filter that improves quality of a collection of sensors based on a system model. If you're trying to implement a Kalman filter, to do it, you'd need a second sensor, like a velocity sensor or etc.

You're not going to make any progress with the sensors on the Android package itself. Modern GPS chips already do extensive filtering and the data is about as good as you're going to get it without adding hardware. The accelerometers and compass especially simply aren't good enough to compute good velocity data out of, and absolutely not if you're only sampling them at 3 seconds. A poor Kalman filter implementation is a great way to really screw up a dataset.

Sorry for the downer, but my personal opinion is that you're wasting your time trying to improve the provided GPS data.

On the upside, your raw GPS data is already very good! Use it and be happy. :)

Upvotes: 3

Related Questions