BRouter car-mode truly hates unpaved roads

Viajero Perdido shared this problem 35 days ago
Closed

Hi. I've been using BRouter with Locus for years, generally no problems. However...

The car-mode profiles, even the "Short' versions, both Locus- and BRouter versions, seem to assign a very high penalty to unpaved roads. In the first attached picture, the obvious "correct" route is the one shown in orange, which is highway=secondary, surface=unpaved in the OSM data as of today. (Here in rural Canada, many roads are unpaved.)

In the second screenshot, the routing is clearly wrong for "short", and might even be considered wrong for "fast". (Unclassfied unpaved vs secondary)

It behaves this way in the BRouter web client as well, all four alternatives, first example. Some of those alternatives go even farther afield, just to avoid that unpaved section.

I've learned to switch to cycle routing (even though I'm driving), which does work as expected (until I meet a trail).

Shouldn't a car-short profile put only a small penalty on "unpaved"? Asking for "short" would imply that I can accept unpaved.

Thank you. :)

Comments (10)

photo
1

Hello Viajero,

A little late answer, sorry. I'm not perfectly skilled with the editing of Brouter config files, this is more a task to Libor Poutník, whose profiles are used in the app. Anyway, in the case of "Short" routing, do you have unchecked the "Avoid unpaved" option?

From my point of view, the current behavior is correct for common car driving. For some 4x4 or drivers that do not worry about their cars, it of course may be useful to use also unpaved roads.

Menion

photo
1

Hi Menion.

I do have "Avoid unpaved" un-selected when using Locus profiles. But as I'd mentioned, the BRouter web client acts this way as well.

Maybe European unpaved roads are truly rough. Here in Canada, we have many unpaved country roads where a speed of 80 km/h is both legal and comfortable.

So my suggestion, the next time you (Libor?) are looking at the profiles, perhaps the "Short" profile could be given a smaller penalty for unpaved roads. Otherwise, I see no difference between Short and Fast...

Not urgent, but thanks for looking at it.

photo
1

Since Arndt ( BRouter developer ) introduced his new car profiles based on a kinematic model, I consider my car profiles ( currently integrated in Locus ) as obsolete and do not develop them any more ), encouraging usage of the original BRouter car profiles.

Note that for historical reasons, interaction of applications with BRouter us done via navigation modes. car/bicycle/foot fast/short, that are mapped on the actual BRouter routing profile.

If you look at the current list of the original BRouter profiles http://brouter.de/brouter/profiles2/

you can see there is no car-short, but the major car profiles are car-fast and car-eco.


In fact, car-short makes little sense, as short route may lead to very horrible and slow routes.


There is a problem with profiles, or with any routing algorithm, if it is used globally, for very different locally specific circumstances, regarding quality and usability of roads.

Routing algorithms have no idea that even if Europeans avoid driving unpaved roads, Canadians and Africans drive them all the time.

To improve situation, there are several levels for it

1/ Extra profiles or switches for unpaved driving

2/ OSM mapping of unpaved roads to give "driveable" hints, like surface= and smoothness= and tracktype=

3/ Better distinguishing of unpaved road quality for car profiles.

But this should be rather addressed to Arndt, the best ať BRouter Google group,

usually accessed via maillist osm-android-bikerouting@googlegroups.com, or via PM on forum.locusmap.eu

photo
1

Thanks Libor for the very precise answer and explanation!

Menion

photo
1

Yes, thanks for the explanation.

Sometimes it's easier to just fix something than memorize another forum password.

In brouter/profiles2/car-eco.brf, paragraph that begins "assign maxspeed_surface", change "switch avoid_unpaved 1 2" to "switch avoid_unpaved 30 60"

This seems like a bug. Max speed 1 km/h if avoiding unpaved, 2 km/h otherwise?!? I can walk faster than that!

And I never knew I should avoid the Locus profiles in favour of the BRouter ones. (But now I'll use the BRouter ones, because I've fixed my copy.)

Thanks again.

photo
1

I remember pointing out to Arndt the need of unpaved driving, and that his values are too low.

photo
1

Interesting: my tweaks fix the problem in the web client (http://brouter.de/brouter-web), but I can't get Locus to pick up my edited version in my phone. When I instead press the big Fast button, hit Settings, and with BRouter profiles set (slider to the left), I see the greyed-out name "Car-FastEco" as the profile to be used. No file containing "FastEco" exists at either http://brouter.de/brouter/profiles2/ nor in my phone anywhere. It's the name of a Locus profile.

Meaning: Locus seems to be using internal (and well-hidden?) profiles even when BRouter profiles are chosen. Which if true, means I can't fix this myself.

PS, enhancing it a bit, this seems logical and works well for me on the web client:

assign maxspeed_surface =

switch or surface= surface=paved|asphalt|concrete 999

switch surface=paving_stones|cobblestone|sett 30

switch surface=gravel ( switch avoid_unpaved 50 80 )

switch surface=fine_gravel ( switch avoid_unpaved 60 80 )

switch avoid_unpaved 30 60

photo
1

Car-FastEco is not the original BRouter profike, but one of my car profiles, integrated to Locus.


I use in Locus the locally stored profiles ( dozens in the local BRouter/profiles2 folder ) all the time.

photo
1

There is also maxspeed for tracktype= and highway=

photo
photo
1

Right. Locus appears to be using your profile (internal to Locus), even though I've asked it to use the BRouter profiles instead. Unless I misunderstand things, this seems to be a bug.

photo
1

Then you must doing something wrong.


Do you have set Advanced settings for BRouter service configuration Locus Navigation ?


Did you place your modified car-eco profile ( strongly recommended under extra name, like car-unpaved.brf ) in the same folder as the default BRouter profiles ?


Did you assign that profile under particular transportation mode in Locus Navigation settings ?

photo
1

I spent some time experimenting. My changes DO work - meaning finally there's a functional difference between fast and short - in the Route Planner, but DON'T work when navigating, on the same device, same endpoints. This is baffling.

Also baffling: I gave my profile a unique name ("car-rugged") as you suggested. That name showed up as a choice on the "Locus" side, but strangely also as pre-selected choice on the "BRouter" side. This confims that indeed the app should have been using my custom-named profile. I tested both sides of the Locus/Brouter switch, both Route Planner and Navigation, and the results were consistently as above. Route Planner works (uses my requested profile), Navigation doesn't?!?!? (Perhaps because I have to manually specify the starting point when testing Navigation?)

As to the numbers, whether it's 80km/h for gravel or 30, either number is better than 2.

Thanks for the replies; I never expected to get this far down the rabbit hole. BTW, the BRouter-vs-Locus UI is quite ...mysterious. After much puzzling, I think I may have figured it out. Would it be more clear is one word was added? "INCLUDE internal profiles optimized for this app".

photo
1

Keep experimenting,everything works on my side, regarding BRouter routing.


Do you use those up to 10 Locus transportation modes/profile, where each can be assigned by the Brouter profile, either Locus internal ( top profile section ) or external profile ( bottom profile section )?


Or the original 6 BRouter modes ( in fact just 5 in Locus)


What exactly means "navigation does not work" ?


Do you hopefully use recent BRouter version ?


Also note Route planner has issue of reporting erroneously straight line segment stats instead of BRouter segment stats ( as I reported on forum.locusmap.eu)


Check, if you mistakenly created identical profiles of the same name.

photo
1

Aha. Overnight, Locus was updated to 3.44.3, with "Incorrect routing type in Navigate to" mentioned as a fixed bug in release notes. And now it works as expected. Meaning, when I try to replicate the routing shown in my first screenshot above, now instead it shows a more logical, direct route, meaning it's found and used my car-rugged.brf profile. As intended. This works with the slider to the left ("BRouter profiles"), also slider to the right ("Locus profiles"), whereas neither worked properly yesterday. Thanks for the fix!

So now just the original issue remains. If anybody would like to make the car routing more usable for non-geek users (people who don't edit profiles nor discuss them on forums), well, "switch avoid_unpaved 1 2" needs to be tweaked with higher numbers. Because 1 or 2 means "truly hates unpaved roads".


Thanks everyone! :)

photo
1

Hmm, this version is out since 17. 3., so next time, double check you have latest version please ;).

Original "issue" was correct describe by Libor. Unfortunately it is not logical to allow using unpaved roads because in some countries, like in our, these roads may means "end of your car" and definitely not something where you may ride with usable speed. This more look like adept for special routing profile included in the app. Because Locus Map is mainly for hike & bike, for now I'll leave it as is, so please use your own special version ;). Thanks.

photo
photo
1

Note that Europeans are not used much to unpaved roads unless for the "first/last mile" and definitely not used to driving 80 km/s on them. Rather 20-40 km/h if they are very good or 5-15 km/h if not so good. I remember some unpaved ways in Norway able to sustain 80, but doing the same in most such roads in Uganda would kill you for sure.