Getting the most accurate location/position? (GPS/Kalman/Android)

13,103

Solution 1

Indeed, it is a very difficult task, people write their PhD thesis on this subject. I have found these useful:

See also Android accelerometer accuracy (Inertial navigation).

Solution 2

In real-world applications, a GPS system cannot give you a precision/accuracy much better than 5 - 10 meters, in particular if you use a smartphone or a tablet as a receiver. Have a look at the Wikipedia pages regarding GPS for a detailed explanation:

https://en.wikipedia.org/wiki/Gps

https://en.wikipedia.org/wiki/Error_analysis_for_the_Global_Positioning_System

https://en.wikipedia.org/wiki/GPS_augmentation

There isn't any way to improve this accuracy using filtering or other mathematical "data massage" only. You have to rely on some auxiliary positioning system (that is: an auxiliary source of geographic reference data).

The most widely used auxiliary positioning system is the "network" one. It uses both cellular phone antennas and wi-fi antennas as auxiliary reference points. This approach is already used by Google Maps and other services, as well as by Android, Apple and Windows 8 smartphones and tablets. You just have to select it amongst the available location providers in your code.

Wi-Fi/Cell-based systems rarely can give you a precision better that a few meters ("room-level accuracy"), even if you apply a massive amount of data processing/filtering.

If you want to use a different system, you can evaluate inertial navigation systems or geomagnetic navigation systems (like Indoor Atlas: http://www.indooratlas.com/).

Writing an inertial navigation system (INS) is not easy. You can find some description on the web but most likely you will have to write all of the code by yourself. INS usually cannot give you a precision better than GPS.

Alternatively, you can buy a commercial, ready-to-use geomagnetic system like Indoor Atlas. Geomagnetic systems can be very precise. Indoor Atlas claims a precision of few centimeters.

If you are looking for a wi-fi/cell-antennas-based system, alternative to Google Maps, you can have a look at Combain:

http://combain.com/

http://location-api.com/

I had a very good experience with WiFiSLAM, as well:

http://wifislam.com/

Share:
13,103
Bernd Kampl
Author by

Bernd Kampl

I'm new to this whole computer thing.

Updated on June 04, 2022

Comments

  • Bernd Kampl
    Bernd Kampl almost 2 years

    I'm developing an AR app for android and I need a really accurate position (under 1m). The app is pedestrian based (outdoors) and needs the location in real time. I'm aware that the problem is probably a really hard one, but hopefully others have come across a solution to this.

    I've already looked into Kalman filters and extended Kalman filters, but so far I haven't found a solution that I have been able to use or adapt. I think that a kalman filter is probably the direction I need to go.

    Right now i'm using the raw gps data to set my location, but this is too inaccurate and can move around or even jump by about 5-10 meters when the device is standing still in one place.

    So my question is: while I am using now the raw unfiltered gps data to get a position, how would I need to filter it (kalman? extended kalman?) and which sensors would i need to use (gps position? gps speed? accelerometer?) to get the most possible accurate location pedestrian outdoor location.

    UPDATE: i need to update my question, since it's not possible to do what my initial question was, getting a sub 1-meter accuracy on tablet/phone gps. my question now is: how can i apply filtering so that subsequent gps position measurements stay within a manageable distance. e.g. so that when i go 10m north with my device that my gps also measures that i went 10m north +/-1m (10%) from my initial position and not the jumping/moving around that the gps measures.

  • Bernd Kampl
    Bernd Kampl over 11 years
    unless i'm reading it wrong, you provided help or an indoor system (or additionally for indoor). what i have needs to work outdoors where i can get a gps signal. thanks for your answer regardless.
  • Bernd Kampl
    Bernd Kampl over 11 years
    thank you for your answer already, you seem to have experience in this field because i already stumbled across a few other answers from you :) what i have needs to work outdoors, not indoors though. do you think it's possible to adapt this solution: jayrambhia.com/blog/2012/07/26/kalman-filter and to use as "process" my movement (speed from gps) and as "measurement" my gps position?
  • AlexBottoni
    AlexBottoni over 11 years
    No Bernd, the problem here is not the absence of the GPS signal but its accuracy. Even outdoor, even with the best and strongest GPS signal, you cannot get the accuracy you are looking for (not with a civilian COTS system like a smartphone or a tablet, at least). That is why Android relies on cellular phone antennas and wi-fi hotspots as well. When you get an accuracy less than 10 meters on Google Maps, most likely is because your are in town and your Android device is relying on cellphone/wi-fi antennas, not (only) on GPS satellites.
  • Ali
    Ali over 11 years
    @BerndKampl Pedestrian tracking and the pedometers are for outdoor applications. I doubt that grabbing some Kalman filter and blindly plugging in your "process" would work. If you read the linked materials you will see that it is likely to be achievable what you want ("apply filtering so that subsequent gps position measurements stay within a manageable distance"). It would require a carefully tuned pedometer algorithm (domain specific assumption). Again, read the linked PDFs and you will see.