osmandapp / OsmAnd

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

Decision in routing: turn (left/right) vs keep (left/right) inadquate #8329

Open pebogufi opened 4 years ago

pebogufi commented 4 years ago

In routing quite often when passing crossings or junctions I get a calling to turn (left/right) instead of keep (left/right) which would be much more adequate.

So I want to make a proposal to theese kind of decisions.

When I stay on the road, I have to keep (left/right), when I leave the road I have to make a turn (left/right).

How to detect the situation for "stay"? My proposal:

if (name != '') { if (name-before = name-after) stay = true // (keep situation) else stay = false // (turn situation) }

// no name but ref available else if (ref != '') { if (ref-before = ref-after) stay = true // (keep situation) else stay = false // (turn situation) }

// may be here are more decisions recommended

else if (highway != '') { if (highway-before = highway-after) stay = true // (keep situation) else stay = false // (turn situation)

// if there are two or more outgoing streets at a junctions with same highway, then allways stay = false (turn situation)
}

I hope for discussion on that idea for decisions Thanks Peter

vshcherb commented 4 years ago

Please attach some map examples to test it

sonora commented 4 years ago

This looks like about the logic I had coded in our PROLOG voice files (essentially we still have it today under js) to determine when we say 'turn on' vs. 'turn onto': 'onto' denotes 'something new'. Looking at our translations, not all languages seem to make that distinction, but most European languages do.

I am a little surprised you try to apply this logic also to a 'turn' vs. 'keep' situation: In my mind, and how I see these are translated, this distinction is related to the 'spatial' driving situation, not the question of the road nomenclature changes: 'Turn' is essentially 'making a bend', almost like going around a corner, while 'keep left/right' is essentially about a position/lane selection on the street while going more or less straight.

It is tricky because the distinction is not made in every language. But looking at e.g. the German translation, it even uses for the 'keep' situation something like 'stay to the left/right)'.

In addition, we even have a 'bear' situation, not sure that is used in many languages, see my old comment in the voice files:

// Note: turn("left_keep"/"right_keep",[]) is a turn type aiding lane selection, while bear_left()/bear_right() is triggered as brief "turn-after-next" preparation sounding always after a "..., then...". In some languages turn(l/r_keep) may not differ from bear_l/r:

But again: Surprised to associate 'keep' with road nomenclature and not with driving situation, let's look at some map examples to sort things out.

pebogufi commented 4 years ago

First: I do NOT treat this like a "bug", but sometimes I am surprised when I hear a "turn" where I would expect to hear a "keep" or quite often don't expect an instuction at all. So I do NOT want to bother the developers... Sonora, may be you are right, may be it is dependant to the language how we use (feel) terms (I am german), may be it is very personal how we use them.

Here is an example I just explored with simulation (which is fantastic for that). Example : import turn-examples.gpx into favourites, it creates a group "turn-examples". Use "Example1 From" for start and "Example1 To" for destination. "Example1 via" is only for explanation. When driving (just simulate that), short before "Example1 via" I get a annnouncement "rechts abbiegen auf die L94 Löcherwasenstrasse" (EN: turn right to L94 Löcherwasenstrasse). On this position I was already on ref=L94, name=Löcherwasenstrasse", hw=secondary. In the curve in front of me there are two very small streets going left into the forest, which don't look bigger than a track: Gassenseppen (hw=residential) and Feimeck (hw=unclassified). So when driving I would not have the idea to turn into one of them, but staying on "my" street. So I did NOT expect to hear a "turn right..." but either a "keep right..." or just nothing. Again: I understand "keep" as "stay on" and "turn" as "leave current to..." SO: that is my very personal / privat expectation. I do NOT see this as a bug.

'Turn' is essentially 'making a bend', almost like going around a corner...

If turn is to understand like that, then it is ok. It would be interesting to hear comments of people with different languages.

Thanks for discussing that, Peter osmand version: 3.5.6#28938 2020-02-07 turn-example.zip

vshcherb commented 4 years ago

@sonora : I think @pebogufi looking to many cases of Wrong OSM mapping. I've seen many times that actual road angle is not corresponding to the mapped one. So, adding an improvement (assumption) of the same road name / ref to be continuation could actually help to give better instructions.

frasty commented 4 years ago

Frankly speaking, I disabled voice navigation two years ago due to this same issue. I am italian but I would say that I was never comfortable enough hearing turn announcements either in italian or in english. I essentialy use osmand navigation for bike touring and I wouldn't want to be warned for every bend of the road ahead but just for the turns leading to another road and this is often the case especially in rural areas where many road curves are mapped with less than adequate precision. It would be nice to have an option for voice announcement of turns leading to other roads only.

Wizit38 commented 3 years ago

follow better keep left should be follow the road turn right then turn left results in a dangerous situation turning lane

OsmAnd is a navigation app but I find it very difficult to follow the voice navigation. It would be better if osmand can use

keep right and then follow the road Keep left and then follow the road Keep left and then turn left Keep right and then turn right Go straight / follow the road (instead of keep right then turn left!)