My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
  Advanced search   Search tips   Subscriptions
Issue 35: Waypoints in wrong place when marking while moving
2 people starred this issue and may be notified of changes. Back to list
Status:  New
Owner:  ----

Sign in to add a comment
Reported by, May 2, 2010
What steps will reproduce the problem?
1. Start tracking, move @50+ km/h
2. Mark some waypoints when you drive besides them
3. Compare the real position of waypoints with their position in the track.
Position will be WAY close to the beginning of track (50-200+ m) than it is
in the reality. 

What is the expected output? What do you see instead?
Positions inaccurate to <10-20m, i.e. distance between track points +
inaccurate timing while driving besides something + GPS error.

What version of the product are you using (See "About" screen)?

Make/model of your device, and Android version?
HTC Hero (Scandinavian), original firmware, Android 1.5

Please provide any additional information below.

While using osmtracker, I noticed that my track shapes correspond with that
other people with other hardware record. But waypoints are in the wrong
places sometimes by hundred meters (while driving @90+ km/h and making
voice records what I see around). Therefore I made an experiment.

I have attached file with unaltered track. It is from the street with lots
of level crossings. Each of them goes perpendicular to the street (no Z
shaped at all). I pressed crossing button when my car was over each of
crossings (I missed one). And therefore expected to find all the crossing
well aligned. As you can see, they are shifted up to about 50m from each
other. And this shift I can not explain with GPS errors, or early/late
press of the button.

The only explanation what comes to mind is it takes several seconds for
data from GPS sensor to reach osmtracker. Osmtracker records waypoint at
the last reported position. Which can be way behind the real track. Would
it help to ask GPS sensor for the position NOW when waypoint button is
pressed I have no idea. Would it help to record point less often, I have no
idea too.
43.9 KB   View   Download
May 2, 2010
OMSTracker does indeed record waypoint for the last position it has already tracked,
and doesn't ask the GPS for the current position. Theoretically requesting the
position when marking a waypoint shouldn't help because the last one that we have is
the most recent one and there is no "new" position available, or it would have
already been recorded... However theory and practice are often different especially
when it involves hardware devices like GPS ! I should probably give a try at this
Jan 19, 2011
Just an idea:
Some gps logging tools for android give the possibility to use "satellite time" for logging the data. I suppose Location.getTime() should give this "satellite time" but I haven't tried if this is a timestamp extracted from the gps-signals or the system-time when the location was recorded on the device.

If the latter is right it should be possible to record the time when the waypoint was "created" in the ui and then wait for the location-notification with the closest timestamp.
Jan 20, 2011
Project Member #3

in v0.4.3 the way voice recordings are handled has changed. It should be a bit better now (for voice recordings).

The other issue mentioned is difficult to resolve.
First of all: android gives us a location update every 1 second. So while driving with 90+ km/h we'll get a location update every 25+ meters. (if the gps accuracy is at +/- 0 meters, on my phone i usually have an accuracy from 3-9m)
The best case is that you press the waypoint button just after a new location is received. A waypoint will then just be e.g. 0-5meters away from the real position.
The worst case is that you press the button just before a new location is received. The waypoint will then be 25 meters away from it's real position.

One can try to reduce this if we check gps time of the current location and the next location and check the time difference to find the "nearest" location.

Location.getTime() returns the timestamp of the "gps time" which can differ in some seconds/minutes compared to the android time (so we need to check the difference).
It could be possible to save the difference between gps time and android time and compare the timestamps to a waypoint timestamp when getting a new location.

Another possibility is to record the heading and speed of the previous location (if available) and calculate the new position... but i'm not sure how this could be done and how good this will work...

I'll think about a way that could be used to get some more accuracy to the waypoints...

If there are any other ideas please let me know.

best regards
Sign in to add a comment

Powered by Google Project Hosting