Telenav / osrm-backend

Open Source Routing Machine - C++ backend
http://map.project-osrm.org
BSD 2-Clause "Simplified" License
18 stars 7 forks source link

Allowing u-turns in two way segments #369

Closed safe-bug closed 3 years ago

safe-bug commented 4 years ago

Hello First of all I'm so happy that I found an active repository of OSRM and I'm impressed by the functionalities that you're working on to add to OSRM.

I have an issue with OSRM in two way segments where the route can be both in forward direction (according to bearing) and a turn around and continuing backward direction. It seems that according to the driving rules in Europe it's not a legal action to do a u-turn in the middle of a two way segment but in my country it's a legal action and the resulting route of OSRM is kind of strange for our users.

Can you help me how can I fix this? Or maybe enable it?

Thanks

wangyoucao577 commented 4 years ago

Could you please show us the concrete case that you met and the route you expected? Better to have pictures of your case, and OSM location where the problem actually occurred.
By the way, which country are you from?

safe-bug commented 4 years ago

@wangyoucao577 Thanks for your reply. This is a snapshot of the issue and this is the sample request

The user is driving towards the left side so the response route of OSRM is to go to the end of the road, turn around and come back. But the expected and legal response is to turn around at the start of the route and continue.

I've tried changing this line to always return true, but I'm not sure if it breaks other things as I haven't tested it much. What do you suggest?

I'm from Iran :)

wangyoucao577 commented 4 years ago

Interesting issue. Firstly it's not caused by restriction since there's no turn restrictions around the origin/destination point of your request by checking osm map. Furthermore, the roads here mostly will be compressed as a single edge by OSRM's graph processing. So once you add bearings in request, the route can only go ahead to the deadend that allows u-turn.
From my perspective, it's not recommended to fix it in the routing engine since it may break OSRM's graph abstraction. Is it possible to remove the bearings option from your request?

safe-bug commented 4 years ago

I think it's not possible to remove the bearings, the driver requests a routing inside the navigator while driving and so it has a bearing. If I totally remove the bearings from the navigator it makes other issues, such as giving routes backwards the drivers direction while driving. Do you have any idea?

The issue isn't just related to these long and two way roads, it's also an issue in residential streets. Again it is legal to turn around in the middle of a residential and not to go to the end of a deadend for it.

wangyoucao577 commented 4 years ago

I have no idea at the moment. Did you ask this issue on https://github.com/Project-OSRM/osrm-backend? Any other suggestion from other authors/contributors?

safe-bug commented 4 years ago

Yes, I've asked this in osrm-backend repository before (here) but the only idea was the same as you said to remove the bearing. I think you are also using osrm for a navigator, how do you use the bearing? Do you even use it?