osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.39k stars 988 forks source link

Issues using bluetooth GPS unit on non-GPS equipped device #5433

Open dinamic opened 6 years ago

dinamic commented 6 years ago

I've ordered Amazon Fire HD 10 without checking whether it has GPS/GLONAS built in, so I ordered the Garmin Glo. My friends and I often times go to the mountains, so it is useful to have a nice GPS unit with you anyway. I've ran into issues using navigation or any orientation using OsmAnd+ in my car via the external GPS.

I tried to figure out how to use the Garmin Glo with OsmAnd+, but felt like the only way is via software like the Bluetooth GPS. I have filled #4932 since as I think OsmAnd could benefit by supporting bluetooth GPS units.

My setup:

OsmAnd settings:

The problem:

Whenever navigating the pointer that shows where I am on the map would go out of order. It would display my position incorrectly, altho the GPS unit seems to have it correct. OsmAnd seem to have the correct positioning data, because I have enabled showing a trace log and the red line shows it fine. Seems like there's some weird algorithm that would screw things up.

Note that the problem persists even if navigation is not engaged. I often times use the map to have an idea of the curves of the road or the street direction.

Please, have a look at the screenshots below. The current speed is shown, the navigation line is shown as well as the thin red line that shows the trace.

screenshot_2018-02-18-19-29-44 Here you can see I'm already in the roundabout, while the pointer is shown before it. Any navigation directions like "enter the roundabout" are obsolete at this point. The only relevant one would be which exit to take. The map is partially rendered, Fire HD's processor is not that powerful and stutters from time to time. Maybe the map was rotating at the time of taking the screenshot. You can see my girlfriend pressed the media buttons by mistake while trying to take the screenshot.

screenshot_2018-02-18-19-30-51 Another roundabout, another miss. You can see the red trail and how much the pointer is lagging behind.

screenshot_2018-02-18-19-31-07 As mentioned, this happens when the navigation is not engaged as well. Here's an example. Red trail is ahead of the pointer.

dinamic commented 6 years ago

Just wanted to mention that I am a developer myself. I am senior php backend engineer and would happily contribute a PR should I be given directions where to look.

hakuchi commented 6 years ago

I use some time a Bluetooth GPS device with my phone. OsmAnd+ and nightly are working perfect after I changed some settings in the "Bluetooth GPS" app.

I think your problem is the correct setting in the Bluetooth app, and so the position is not shown correct. A lot of user dont use correct setting and so the connection is bad or the GPS get lost. For this they giving negativ feedback to the Bluetooth App or to the Bluetooth device.

I can not reproduce this error.

jfburke3 commented 6 years ago

@hakuchi What settings would you suggest?

I just bought a Garmin GLO, and while it and OsmAnd worked fine most of the day Saturday, later in the day, I experienced some pretty bad position lag in OsmAnd that I've never seen when just using my phone's GPS sensors.

hakuchi commented 6 years ago

@jfburke3 I dont know the Garmin GLO, I use a other device, so a can not say if there is a problem with the device or not.

I think you have activated the android developer options in your phone and set the Bluetooth App for simulating position.

Here some screenshot from my settings: 1 2 3 4 5

xmd5a2 commented 6 years ago

Never had a problem with bluetooth GPS and OsmAnd. I'm using Holux RCV-3000 bluetooth receiver and "Bluetooth GPS" or "Bluetooth GPS Provider" apps.

dinamic commented 6 years ago

@hakuchi, I fail to understand whether you experienced the problem before or you haven't at all.

As shown on the screenshots, OsmAnd correct got the positioning from the Bluetooth GPS app. You can see the thin red line is drawn correctly. What is incorrect is the pointer that shows where I am currently. Before answering this one, please consider the thin red line also updates and it actually shows my correct location.

Thanks for sharing your Bluetooth GPS configuration. I may give it a try.

Could you explain why do you think this is a configuration issue in the Bluetooth GPS app? Could you think of a reason why this setting would impact OsmAnd in a negative way, but other apps would remain working fine (ex. google maps)?

What unit have you tested this on? Does it have a built-in GPS sensor? What's the Android version?

hakuchi commented 6 years ago

@dinamic Some time I had a problem with correct position when I not have used the mobile phone GPS for more days. With the external GPS the position was always correct and no lagging. I use the same device(GPS/Glonass) as xmd5a2 on my Android 6 and this works great also after a month without use.

If my settings not help you to have a correct position, I hope you have the possibility to test a other device, so you see if there is a problem with your Garmin device.

Sorry, but I can not give you more tips, because I can not reproduce this bug/error.

vshcherb commented 6 years ago

@dinamic in navigation settings please disable current position "animation", in that case blue pointer should always match red line. Also it is possible that there is a noise from Bluetooth GPS device that's why location is jumping and creates problems (however it should be visible on red line as well, please modify GPX recording settigns to allow to catch the noise)

dinamic commented 6 years ago

Thanks, @vshcherb! I will give this a try.

I was unable to find animation option under the navigation settings, but there was such option in General settings, which I have toggled off. I will also disable the Kalman filter, which should make it possible to catch any noise that comes from the GPS unit.

Let me test this on some 50km+ route outside the city and will provide an update to the issue.

dinamic commented 6 years ago

@vshcherb, the settings does not seem to affect the issue.

I took a short video so you could see my settings and also the problem while driving. Should you have an idea on how to get this fixed, please share it with me! :)

Here it is: https://www.youtube.com/watch?v=nIXd5476_88

Filmed on OnePlus 3T, Android 8.0, OsmAnd+ 2.9.3.

vshcherb commented 6 years ago

I think the issue is related that Bluetooth GPS provides location too often or time inconsistent. Most of the internal GPS devices provides with frequency 1 second, here I suspect it happens 4-5 times a second and that animation becomes broken. If you can limit frequency, it could help I don't think you disable navigation animation, it is "Extrapolate my location" or something. Please check Car navigation settings.

Stefal commented 6 years ago

I noticed the same problem with a ublox gnss receiver connected with this FOSS app: https://github.com/Stefal/bluegnss4droid

My gnss receiver send the location with a 2 or 5hz frequency, but it can go up to 20hz. I don't have this lag problem with Oruxmap.

dinamic commented 6 years ago

Garmin Glo works in 10Hz, so it would provide 10 updates a second. Sounds like we have a pattern for this and maybe @vshcherb is right that multiple updated per second seem to confuse OsmAnd.

@Stefal, do you think you could have an option in your fork to average out the data points and provide mock location updates only once a second?

neatwheat commented 4 years ago

Hey, did anything change for you meanwhile? Thinking about buying a Glo2 and woul be interested in current performance regarding that issue. cheers

dinamic commented 4 years ago

@neatwheat I gave up on it. Turns out my GLO is outdated by modern smartphones. While it provides data points more often, which as we already know causes issues with apps, it seems that my Galaxy S10+ connects not only to more than double the amount of satellites, but it also does it way faster.

ariadacapo commented 3 years ago

I encountered this issue with a Fairphone FP2 and Garmin GLO2. On OsmAnd~ 3.8.5 after deactivating "Animate own position" in the Navigation Settings (accessed from the Options button when starting a navigation) the problem is gone.

esp1818 commented 2 years ago

I have the same issue where the pointer lags behind the "actual" location. It can be seen when there is a track being recorded and the trace is shown on the map. Screenshot_20220625-083620 I am using the Dual Skypro XGPS160 , with the Bluetooth GPS app, and OsmAnd 4.2.5. Like @ariadacapo, I fixed the problem by turning off the "animate own position" setting in OsmAnd.

The XGPS160 is a 10hz receiver and I think that's where the issue lies. I think OsmAnd is trying to "animate" between the information it receives ten times a second when it doesn't need to causing a lag between the "actual" position and the pointer.

Max1234-Ita commented 1 year ago

I have a Garmin GLO too, I was using Bluetooth GPS but I found that sometimes it has issues with Android 10+ devices.

I've discovered just today that the link to the app in GPlay Store is not valid anymore, so I would suggest to try GPS Connector instead: https://play.google.com/store/apps/details?id=de.pilablu.gpsconnector

I'm using it too and it seems to work pretty good.