osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.65k stars 1.02k forks source link

Investigate obsolete 'Keep left' / 'Keep right' #3663

Closed sdfg2 closed 7 years ago

sdfg2 commented 7 years ago

There are a couple of areas where I think it would be nice to have some polish on the driving instructions issued, and when.

As a navigator I was always taught 'don't issue an instruction unless it's to change road', and as a driver I completely understand that. Especially on a motorway, being told every mile or two 'keep right' gets very old very quickly. I'd rather be told the distance to the point at which I would leave the road I am currently on, and instructions issued for that point only. Also, it seems arbitrary when the 'keep right/left' instruction is actually called - not sure if that's an OSMand issue or something to with the nodes in the OSM data itself. Any chance we can have this as an option?

Also, the instruction 'turn slightly right' can be very ambiguous at junctions. In line with what I mentioned above, I think for clarity having the option to just say 'turn left' or 'turn right' to indicate leaving the current road and moving on to a new road, irrespective of the severity of the turn, would reduce any confusion. That way the driving instructions aren't overly verbose - they are clear and concise. Of course I understand that other people might be used to having such verbosity from other driving aids, which is why I'm suggesting making them optional.

rbovard commented 7 years ago

May I add a point here: sometimes I heard the instruction "prepare yourself to enter the roundabout in 1 km" (approximative translation). I don't understand to goal of this one, I think it's useless. What do you think?

sdfg2 commented 7 years ago

It's no different really to 'After about 1km, turn left'. And some roundabouts can be quite complex, so being aware to concentrate on upcoming roadsigns about the roundabout is a good thing, in my view anyway. To me, that 'upcoming change of road' is part of the instruction for that road change I was talking about. But obviously that's just me. :-)

polarbearing commented 7 years ago

Disagree with @sdfg2.

I'd rather be told the distance to the point at which I would leave the road I am currently on, and instructions issued for that point only.

Imagine you have to drive 225 km to your motorway exit, it is extremely useful to get an announcement that your exit is coming soon now.

'turn slightly right' can be very ambiguous at junctions

No it is quite useful. If I get 'turn right' I expect to have to break to slow speed to make a 90 degree turn. If I get 'turn slightly right' the road is forking off at a nice angle and I can do that slight turn at higher speed. And the opposite for 'sharp right'. So the 'severity of the turn' is quite relevant for my driving.

being told every mile or two 'keep right' gets very old very quickly

This is not what OsmAnd does, to my experience.

sdfg2 commented 7 years ago

Disagree with @sdfg2.

I'd rather be told the distance to the point at which I would leave the road I am currently on, and instructions issued for that point only.

Imagine you have to drive 225 km to your motorway exit, it is extremely useful to get an announcement that your exit is coming soon now.

See:

To me, that 'upcoming change of road' is part of the instruction for that road change I was talking about

And for this:

'turn slightly right' can be very ambiguous at junctions

No it is quite useful. If I get 'turn right' I expect to have to break to slow speed to make a 90 degree turn. If I get 'turn slightly right' the road is forking off at a nice angle and I can do that slight turn at higher speed. And the opposite for 'sharp right'. So the 'severity of the turn' is quite relevant for my driving.

"Take the right hand road" then. Unless you want OSMand to give pace notes (which, to be honest, I would be -very- for ;-) ) Also in my experience I've found junctions where 'turn slightly left' was at 90 degrees, and 'turn left' was barely even 10 degrees. But I just use my eyes to check the degree these days.

being told every mile or two 'keep right' gets very old very quickly

This is not what OsmAnd does, to my experience.

Perhaps not on the roads you are on. But on the roads I drive, there are motorway exits every couple of miles.

And, if you'll note, I did stress that I suggested it be an -option-. All your arguments are for what -you- want, which is part of what I'm suggesting, so thanks for backing me up :-D You can have your cake and eat it too!

rbovard commented 7 years ago

And some roundabouts can be quite complex

So we need to define complex for OsmAnd, because I often hear this instruction for simple rondabouts (like this one: https://www.openstreetmap.org/way/155066002)

It's not the distance which I don't understand, it's more the instruction. Do you see what I mean?

sonora commented 7 years ago

@rbovard When I read your comment about "Prepare yourself ..." and so on, this sounds in deed very clumsy and obsolete. Looks like there is simply a translation issue here with whatever language you are using: In English our prompt is simply "After about 1 km enter a roundabout.", which is short an unobtrusive.

If you let me know an equally short translation for your language I can easily fix this prompt (independent of anything bigger we may or may not do about trying to discriminate between larger and smaller roundabouts).

@sdfg2 I never hear keep left or keep right when passing any motorway exits I am not supposed to take, can you please specify specific locations so we can reproduce?

Regarding "slight turns": While it is not very easy to always determine the turn angle as it appears to a driver in the real world, it is in deed conventional in all navigation systems I have tested to try and prompt slight and sharp turns. This is useful in cases of forks (where there is really less of an actual "turn" to be made), or e.g. in case of 3-way forks to indicate which of these to take. I cannot see that dropping our attempt to announce slight or sharp turns would actually be a general improvement.

rbovard commented 7 years ago

@sonora I'm talking of this one: https://github.com/osmandapp/OsmAnd-resources/blob/master/voice/fr/ttsconfig.p#L55

So my suggestion is to remove the "Prepare yourself":

-string('prepare_roundabout.ogg', 'Préparez vous à entrer dans le rond-point dans ').
+string('prepare_roundabout.ogg', 'Entrez dans le rond-point dans ').
sonora commented 7 years ago

@rbovard Ok, thanks, implemented! It is in our nightly, and will be in the next release.

I believe this to be a leftover from years ago, there was a point when we had lots of "Prepare for ..." all over in our voice prompts, and it is usually a rather unconventional and useless phrase. I have removed in many languages a long time ago, but for some I rely on translators, and it looks like no-one ever cared for this one. If you find any more improvements worth implementing in fr-tts, please let me know, or better create a pull request, ok?

Thanks, Hardy

rbovard commented 7 years ago

Cool, that was quick! I'll try it in the next beta release.

Thanks for the information about the tts, until now I was only fixing translations via Weblate.

About the legacy values in the tts, I noticed that some strings are not in the en-tts (like prepare_make_uturn) but present in the fr-tts. A first step in cleaning that even better, would be to sync the source values. What do you think?

sonora commented 7 years ago

Yes, much appreciated. In English, there is no prepare_make_uturn string because it is not needed there, I create the contrast between the pre-announcement and the closer warning by using "After..." vs. "In...".

But in the French config file,the string is in use in command prepare_make_ut(Dist, Street), which is Button 6.1 in my "Test voice prompts" system under the Development settings. Please take a look, we would have to redesign that prompt. Please compare in contrast to prompt 6.2 (which would be played closer to the turn). For comparison, try these 2 buttons usingEnglish (select en-tts upon entering the test screen).

Please note: You could test any tts-config file on your device as follows: download the original ttsconfig.p from our branch, and modify locally at will. Then, rename it to _ttsconfig.p, and create a folder like fr_test-tts next to the other voice folders (like Android/data/net.osmand.plus/files/voice/fr_test-tts or similar) in your osmand data folder on your device. If you put your modified _ttsconfig.p file in that new folder, you can select it in OsmAnd to be used.

sdfg2 commented 7 years ago

@sonora https://www.openstreetmap.org/directions?engine=osrm_car&route=55.9397%2C-3.4027%3B56.0166%2C-3.7508#map=12/55.9823/-3.5946

I can't recall exactly which junctions, (it may actually be the M8, not the M9) but it certainly does it. In fact, it does it so often that I can't recall specifics, I just thought it was 'a thing'.

Also, with this junction: https://www.google.com/maps/@56.1201596,-4.3593266,3a,75y,1.43h,65.83t/data=!3m6!1e1!3m4!1s9M_1kiUV76qOKkmKzAye9w!2e0!7i13312!8i6656!6m1!1e1?hl=en going north on the A91 the instruction issued was "keep right" which is totally unecessary, and in fact confusing given it's a crossroads and problems described with the turns (which is why I recall it specifically). There have been a couple of occasions where 'keep right' has been read out where it actually meant 'take the right hand exit' at a fork (which is why I wasn't sure if it was just bad data from OSM or not).

Again, for the exits, it's happened so often that the sharp/slight turns aren't mentioned at all when they might have been necessary, and mentioned where there was no need, and in a couple of instances just completely wrong, that I've just bundled it up as 'something wrong with the OSM data/something silly that OSMand does' that I don't even think about specifics any more, it just frustrates me every time. My brain translates it as 'check what the map shows because that will give you more information than the audio' which defeats the purpose a little.

rbovard commented 7 years ago

@sonora FYI I just heard the instruction "prepare yourself to enter the roundabout in 1 km". Shouldn't suppose to be fixed with your change? (OsmAnd+ 2.6.5)

sonora commented 7 years ago

@vshcherb Looks like this change in fr-tts is in our master branch but did not make it into our 2.6 branch. An oversight? Should I have it marked somehow? Thx - Hardy

vshcherb commented 7 years ago

@sonora it will be no 2.6 release anymore, 2.7 suppose to happen next month.

sdfg2 commented 6 years ago

The unnecessary 'keep right' instructions are still being issued along the M8: https://www.openstreetmap.org/directions?engine=osrm_car&route=55.9496%2C-3.1902%3B55.8567%2C-4.2436#map=10/55.9077/-3.6804

Not at every exit, so I'm not sure where this is creeping in - is it something in the OSM data itself perhaps?

bitboy85 commented 6 years ago

from my observation "unnecessary" keep right or keep left announcement are based on osm data. this usually happens if two ways run parallel for short time or has a quite small angle between them. you can often see this at exit lanes where different mapping styles exist. Some Communities map Exit lanes as own way, some other start a new qay only at the Point where the road really splits.

In some cases those announcements are very useful in some other they are wrong. For example at this place, going from north to south https://www.openstreetmap.org/edit#map=19/49.91504/6.47253 there is always a "Keep left" but i don't know why.

sdfg2 commented 6 years ago

Yes, that holds with what I've experienced, but only sometimes. Sometimes the exit sliproad is completely ignored, despite being as just as shallow an angle as other that are indicated. So does this mean it's OsmAnd's interpretation of the OSM data, or is it a flag set in the OSM data somewhere? If it's the former, then it's still a bug that's present. If it's the latter, then it means editing the OSM data.

bitboy85 commented 6 years ago

Best would be if an osmand developer would tell what exact conditions needs to be met to play the anouncement.

Do you have some examples where the issue occurs and where not? Maybe ist possible to find something.

sdfg2 commented 6 years ago

@bitboy85 I posted a route already. Some junctions it will do it, others it will not.

sonora commented 6 years ago

@bitboy85 It has been a long time since I looked at that code, and I think it has been stable ever since: From what I remember, this is about how we do it: We look at the angular change a turn after a fork eventually takes you through vs. your initial bearing. If it is between 10 and 45 degrees, a "Keep Left" respectively ""Keep Right" turn type is detected.

So I assume that "false" announcements may happen where a road forks, and the fork you stay on constitutes a slight bend. While driving on it, you may perceive this as 'going straight' (maybe also because you stay on the road with slightly higher hierarchy, e.g. you do not take an "exit"). But looking at an aerial view, you may realize you actually take a slightly bent fork leg.

I do think we factor in the hierarchy of roads, so this will probably not occur if you are and stay on a bent primary road, and an unused trail forks during the bend. But I am not sure if it may happen in certain forks between e.g. a motorway and a motorway link. And it may be justified there, e.g. some motorway intersections / cloverleaves may be tagged with a mixture of motorway on motorway links at its forks which look of rather equal hierarchy when driving on them, because each leads to equal hierarchy motorways again. (vs. in the exit situation you may argue that staying on the motorway requires no turn prompt and only exiting it does).

bitboy85 commented 6 years ago

@sonora sounds correct to me, i remember a different place where a fork is within a (slight) curve and the anouncement is played. I think adding an additional condition which checks the road class would fix a lot of those false announcements. But what to do if the road Segments have the same class?

sonora commented 6 years ago

IMHO, it is often a case-by-case decision and sometimes hard to get 'right' by just looking at the map data. What we do is err on the safe side snd rather play the prompt too often than too seldom.

I believe it works well in many areas, but I can well imagine there are issues in rather montaineous areas or other regions with curvy highway sections and associated crossings. Not currently sure how to implement an overall improvement, although most certainly not impossible.

sdfg2 commented 1 year ago

@sonora Just been reviewing my github and noticed that this has been closed. The behaviour still happens on that route that I posted. Perhaps it was closed because a secondary, unrelated voice prompt issue was fixed.

sonora commented 1 year ago

@sdfg2 As this has been quite watered up with secondary issues now fixed, may I advise the way to go is open a fresh issue, restating what's left open, and including all evidence how to reproduce and how to improve?