What causes erratic GPS estimates during certain time intervals? - android

I have been developing location tracking apps and testing them mostly on my HTC G1 running Android 1.6. I find that there are certain time intervals -- of approximately 1-2 hours -- when the recorded GPS locations become very erratic: I end up with what looks like a random distribution of points around my actual location, but instead of being clustered tightly within a 10-50 meter circle as they normally are (I use a minimum accuracy for recording these locations), they are spread out with a radius of something like 1-5 km -- even though each of these locations comes in with a reported accuracy of under 50 meters.
It's as if the actual location accuracy balloons during these periods but the reported accuracy remains the same. This is relatively infrequent and when it occurs it lasts only for a few hours, after which everything appears normal again. Because it is so infrequent, and because I am usually also in the process of tinkering with the app, I am having a hard time ruling out the possibility that this is caused by a bug in my code.
Has anyone else experienced this? Are there known hardware or firmware issues that could be causing it? If so, does anyone have a good way of detecting the problem when it is occurring and correcting the reported accuracy values? I assume one option would be to rely on the NMEA sentences, but I would like to be able to run the app on Android API level 4 and I see that GpsStatus.NmeaListener requires 5 or above.
I would really appreciate any suggestions.

1-5km deviance should never happen in GPS receivers.
If that happens then it looks like an alternate location service is active, like cell tower location, and wifi location.
If you want a precise position you should filter out all non GPS ones.
GPS positions can be detected that they have a speed and heading (bearing) assigned when the device moves. (I am not sure if the check for an altitude helps)
The line patterns comes from the situation when a new GPS sattelite comes into the view, and other(s) are going ou of view. The new situation can be worse from the geometric sattelite constellation. This new constellation can also called so called Multi-Path Effects (Reflections of the GPS Signal at the opposite building)
And I hope that you don't do you measurements indoors, (where GPS does not work reliably)

Related

Why are GPS data inaccurate in urban areas?

When I went to New York city for a business trip, I was testing my Android application that has GPS settings on it to see how accurate it was. The results that I got, was completely inaccurate. If I was in one building on the side of the street, the GPS would show that my device is on the opposite end of the street, in another building. I've tested on my iPhone just to make sure that it wasn't my application causing this, and to my surprise, it wasn't. Both devices showed me at the wrong location.
Is there a reason for this? The only reason I could think of is that the GPS satellite signals get messed up around tall buildings.
Is there a possible way to fix it? I'm guessing there is because of so many GPS applications for urban travel. How did they go about fixing it? I am genuinely curious.
Thank you so much.
New York is one of the cities with so called "Urban Canyons".
They have high buildings shielding the view to the sky, such that few satellites are visible, often not enough remain in view.
Second these building reflect the GPS signal which slightly delay the receiving, fooling the GPS chip, which then gives a wrong position.
if you compare applications make sure they all run in the same phone, and they record the locations at the same time.
How did they go about fixing it?
There is no fix for the urban canyon problem, besides using a better device.
Update:
Some GPS receivers, today, even used in smart phones, are "combined receivers".
They combine the US GPS System with (e.g) the Russian GLONASS, giving roughly the double number of visible satellites.
This approach significantly improves the accuracy within cities.

Source of android nmea speed

I'm building a small yacht racing app to measure my speed upwind, where the speed is relatively low, in the 6-10 knot range, and where the inherent GPS positional error is causing significant fluctuations in reported speed (which is why I'm going to this effort instead of using a hand-held GPS unit).
So, I'm trying to smooth out the errors by calculating the speed over longer periods of 5 and 10 calls to the onNmeaReceived event (which occur by default at 1000 ms), using the NMEA lat/lon and time from the $GPRMC sentence.
When comparing the NMEA reported speed to the speed computed since the previous event I find they are significantly different, so I'm wondering how the NMEA speed provided in the $GPRMC sentence is computed?
Possible answers could be
Deduced from GPS Doppler speed ?
calculated as distance/time over the previous second?
Or something else....?
The documentation is entirely silent on this matter.
Using Android 4.0.3 Samsung SGS 11
speed in GPS comes from Doppler Effect, which is much more accurate than the position itself. ( this works only when the device is moving, the faster, the better)
Determing the speed from location change related to time, does work for GPS only for higher speeds. (> 10 km/h).
Same applies four "course" (heading).
These values always come from the GPS chip, although hardly documented on API side.
averaging over the last x calls is a bit to simple, it should be over the last x seconds. if you dont get a position, you still have to close the averge window. when the device stands still, some devices do not report any position, so you cant wait to get exactly x events.

Can I tell if an Android device is moving from its current location?

I'm new in Android and I would like to ask you is there any possible way to know if the Android phone moved about 5 meters from its current location ?
One idea is to use the accelerometer to detect when the phone is moving. Naturally, you can't estimate the distance moved very accurately, but it might work for your application. If the accelerometer says the phone is moving for more than 5 seconds or so (maybe you can detect a pattern of movement?) you might infer that the phone moved significantly from its original position.
Of course, the user can trick your app by shaking the phone...
A good resource concerning GPS can be found at the official site: http://www.gps.gov/systems/gps/performance/accuracy/
The short answer, however, is that the GPS accuracy of a specific phone at a given moment is dependent upon several variables. Those that are most pertinent to your question would be the actual hardware of the device, and the environmental conditions at present. Typically, a phone under good conditions can expect at best 10m of lateral accuracy. Taking into account poor conditions, local interference, limited satellite connectivity, etc, can push the error of a reading much higher. Unfortunately, consistently and precisely measuring a movement of 5m is unlikely.

Can detect the distance (with x, y and z coordinates) from a fixed point in space on Android?

I would like to find the position of an Android device with respect to a fixed point in space.
I need a precision close to one or two meters.
My goal is to determine the position of the android device user inside a building (a museum), to detect the floor and the room she is in, and - if possible - even a more precise position in the room (to know which painting she is close to).
I did already excluded to use GPS, since it is not so precise (expecially with respect to elevation), it only reliably works outdoors, it quickly consumes battery power, and it doesn't return the location quickly.
I did already excluded to use Network Location Provider too, since it is even less accurate.
In Android you have three possibilities to detect the location of a Android phone:
1) GPS
2) Network
3) Triangulation
But none of these three possibilities is suited for you're problem. The GPS is the most accurate one, but as you already noticed it is not working in buildings, and it won't be able to differentiate between different floors. The problem is that the accuracy of GPS is at best 3 or 4 meters. The other two possibilities are far less accurate. That's why there isn't a real solution for your problem.
One thing that might be a possibility is the motion sensor. If you know where the user starts, you maybe can use the motion sensor to calculate how many meters the user moves. But I don't think that this is accurate enough.

Wildly inaccurate GPS position and velocity

I'm writing a toy car-navigation app for Android, mostly to learn the Android SDK.
While testing my application, it worked fine for a few hours. Then, suddenly, it reported my position as being in a town 100km south of my real position, travelling at 300km/h. I was in fact travelling at approximately 120km/h.
I changed application to Google Maps, and it also showed the same erroneous position and approximate velocity. Since I was driving a car in dense traffic at high speed, for safety, I decided not to start fiddling with the phone any more, and just put it away. The next time I took it up (maybe 15 minutes later), the position and velocity was correct again.
I will add diagnostics to my program to show the reported accuracy of the GPS-fix.
I have a few questions:
Is this a hardware/firmware problem in android phones? (I have a HTC Hero)
Is this a known failure mode of GPS-receivers?
What could make the GPS-receiver report such inaccurate positions?
I had another GPS receiver in the car (a Garmin car navigator). Could this receiver have interferred with the HTC Hero unit?
Handheld GPS devices are much less accurate than is typically claimed, but being off by 100 km (or by whatever the distance is between Bolton and Madrid) is pretty spectacularly unusual. It sounds like something weird may have briefly happened to the GPS system.
The other GPS receiver in your car would not have caused this - the device antenna just receives signals, it doesn't broadcast anything.
Update: might be solar flares. The article laughably claims they'll produce errors in the range of 30 meters; it's laughable because GPS devices are less accurate than that under normal conditions.
Due to the nature of GPS and satellite locking, it just sounds to me like you dropped below the required number, and fell back to some other method, cell-tower-based method of guessing location...
In DC I see this sometimes when traveling on the train due to the fact that the GPS is loosing signal when I go into the tunnels and the "tower" based location kicks in.
The only thing I can think of is to do some sort of geo-distance reasoning about your position... but what you would do once you knew you had bad geo data I don't know. :-)

Categories

Resources