Skip to content

Releases: Project-OSRM/osrm-backend

OSRM v5.10.0

07 Aug 14:33
eeff4be

Choose a tag to compare

The v5.10 release comes with a major feature: via-way turn restrictions. These turn restrictions occur in OpenStreetMap in the form of a restriction relation: (fromWayId, viaWayId, toWayId) and prevent multiple specific turns depending on the way the driver is coming from and going to.

Below are some more notable changes. Please note that in the future we plan to speed up the release process to push out stable and tested releases more often.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

Features:

  • #2681 - We now handle (from, via, to) way restrictions where from, via and to are ways in addition to (from,via,to) node restrictions we always handled. These turn restrictions prevent turns from a way via a specific way onto a way:
  • #4333 - We now handle Throughabouts:
  • Emil Tin did large-scale profile refactoring work: a new version 2 profile API was added which cleans up a number of things and makes it easier to for profiles to include each other. Profiles using the old version 0 and 1 APIs are still supported.

Full Changelog

OSRM v5.9.0

19 Jul 17:05

Choose a tag to compare

With the v5.9 release we continue to stabilize our Multi-Level Dijkstra (MLD) pipeline which we introduced in v5.7 allowing for incredibly fast traffic updates while still being able to handle requests in the milliseconds. In addition to feature parity for the Contraction Hierarchies (CH) table plugin in MLD this release implements a brand new alternative routes algorithm which we tailored specifically for MLD making heavy use of its partitioner. We also radically decreased our preprocessing times by partially removing STXXL, without any significant memory increase.
Other great features of this release is the support for exit numbers and user-defined classes in the response.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

  • #4202 - Implements the table plugin for MLD. The pull request contains some performance measurements.
  • #3905 and #4047 - Implements multiple alternative routes for MLD: you can now request multiple alternative routes. Please read the issue and pull request for details, images and gifs.
  • #4215 - Implements exit numbers / names. Picks up the junction:ref way tag; adds an exits property to the response's RouteStep. The companion project osrm-tag-rewriter now also re-writes exit numbers / names into junction:ref.
  • #4252 - stxxl (libstxxl-dev) is optional now but still on by default. Disable it via cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_STXXL=Off. Processing will then happen in memory which should be fine unless you try to process the planet on your toaster.
  • #4204 and #4290 - Adds a classes property to the response intersection array indicating a road's class. Can be set in the profiles on each way. The use-case for this is flagging a road as a toll, ferry or motorway road class which clients can than pick up from the response.
  • #4260 and #4296 - Deprecates the UseLane instruction which was needed for lane anticipation (guide users in the correct lane for multi-hop steps) before there was an intersection array in the response. Lane anticipation will continue to constrain lanes in the response intersection array but we will no longer emit an extra UseLane instruction. In addition lane anticipation will now trigger based on a distance threshold of some hundreds of meters (depending on numbers of lanes to cross).
  • #4258 - In addition to respecting highway=construction tags we now discard old-style construction=* and proposed=* ways.

Full Changelog

OSRM v5.8.0

21 Jun 07:56

Choose a tag to compare

The 5.8 release is focused on long overdue memory and disk usage reductions across the board (on the planet roughly: memory 10% decrease, disk 15% decrease). With some minor issues fixed in the guidance engine this release targets stability and benefits on the infrastructure side. Notable additional changes and features are listed below. The full changelog is here.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

Infrastructure

  • #4096 - Command-line tools (osrm-extract, osrm-contract, osrm-routed, and others) now return error codes and legible error messages for common problem scenarios. You can find the list of error codes here.
  • #4036 - .osrm.nodes file was renamed to .nbg_nodes and .ebg_nodes was added.

Conditional Turn Restrictions

  • #3841 - Added conditional restriction support with parse-conditional-restrictions=true|false to osrm-extract. This option saves conditional turn restrictions to the .restrictions file for parsing later. Added parse-conditionals-from-now=utc time stamp and --time-zone-file=/path/to/file to osrm-contract.

Profiles

  • #4147 - Speed up pre-processing by only running the Lua node function for nodes that have tags (by default, can be changed). Cuts OSM file parsing time in half.

API

  • #4039 - Adds an approaches parameter to the API. The use-case is to approach a waypoint on the side of the road that deposits or picks up your passenger without needing to cross the road and then continue routing you without issuing a u-turn. Read about it here.
  • #4134 - Adds a polyline6 option to the HTTP API for sending coordinates in the request polyline encoded with a precision of 6.

Full Changelog

OSRM v5.7.0

25 Apr 09:08

Choose a tag to compare

After months of work this release is the first to feature an additional routing algorithm next to Contraction Hierarchies. It's based on a Multi-Level Dijkstra approach partitioning the road network and allowing for incredible fast weight updates. This is a trade-off between processing time and query speed: MLD based queries are about a factor two to three slower then queries on a full CH (still in the milliseconds range).

The new algorithm is still experimental and we are working on feature parity with Contraction Hierarchies: so far the route and match plugins are supported. For a continental sized network we expect partitioning to take in the order of minutes and fully updating weights under a minute.

  • Here is a replay for a route between Munich and Berlin (wait for it to explore the search space)
  • Here is a example partition on Germany

Quickstart:

osrm-extract data.osm.pbf
osrm-partition data.osrm
osrm-customize data.osrm
osrm-routed --algorithm=MLD data.osrm

Node.js Bindings

We merged the Node.js bindings node-osrm into the osrm-backend repository, with the hopes of an easier development workflow. You can build them using CMake via

cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=On -DENABLE_MASON=On

or just use npm install osrm for pre-built packages.

Map Matching

New option gaps=split|ignore to enable / disbale track splitting.

New option tidy=true|false to simplify traces automatically and remove blobs.
Use this option or tidy your noisy traces (e.g. with geojson-tidy) can increase the Map Matching's quality.

Profiles

Important in case you're using the segment function: we added a force_split_edges flag to the global properties which - when set to true - guarantees that the segment function will be called for all segments, but also doubles memory consumption in the worst case.


Full Changelog

OSRM v5.6.0

23 Feb 13:08

Choose a tag to compare

The 5.6 release includes some great new features:

Most importantly we now support the infamous issue #77: Routing on generic weights, not only the duration. The car profile makes use of this new feature by penalizing turns onto restricted streets (HOV-only, access=destination) heavily. This makes sure we don't route through them but still support starting/stopping from them. This increased our resource usage quite a bit, so if you are running global deployments make sure you have enough headroom before upgrading.

We also dropped our dependency on Luabind and replaced it with the awesome sol2 that we can bundle as header-only library.

The trip plugin also saw some improvements with regard to allowing you to do non-roundtrips and explicitly selecting the first / last node as start and end-points.


Tags

  • Never route over highway=steps in the car profile even if access tags allow it. This is a case of Wiki vs real-data where we pick the sensible solution for users. See #3435 and #3668.
  • Support destination:street tag. See #3543.
  • Support surface=sett for the bike profile. See #3657.
  • We now respect access=destination and only route there when the start/destination is on that road.
  • We now route over hov-only roads, when the start point is already on one.

API

  • Added an option generate_hints (true by default) which allows to prevent the engine to generate hints. If there is no need for hints use this to make the response considerably smaller. See #3456.
  • annotations now also supports a list of specific values like distances,nodes,speeds to only include data selectively.
  • The trip plugin supports two new parameters round_trip={true,false} and source={first,any} and destination={first,any}.

Infrastructure

  • We disabled Link-Time Optimization by default when building from source as it lead to complications with old compilers and binutils. If your system is recent enough and you know what you are doing pass -DENABLE_LTO=ON to CMake. See #3524.
  • Updated to the latest libosmium version which allows us to skip PBF metadata improving parsing speed up by 10-20%. If you need metadata on OSM Objects (think: a way object's version) use osrm-extract --with-osm-metadata. See #3373.
  • Luabind is no longer required. We removed Luabind completely and vendor sol2 for bindings now. See #3382.
  • We refactored the car / bike and foot profile. They should be more readable and easier to get into now. Thanks Emil Tin for your efforts here.

Tools

  • We re-wrote the osrm-components tool: it generates a GeoJSON small components layer now. See #3570.
  • There is a new tool osrm-extract-conditionals for processing conditional tags (opening hour grammar). See #3414 and #3415.

Full Changelog

OSRM v5.5.4

19 Jan 23:56

Choose a tag to compare

Bugfix release which includes the following changes from v5.5.3:

  • PR #3561 - added missing backwards speeds for cycleways in bicycle profile
  • PR #3515 - adjusted number of nodes in annotation
  • Ticket #3430 - Fix possible division by zero by clamping latitude to +/- 85.05
  • PR #3555 - Fix an error that occurs when a road forks immediately after exiting a ferry
  • PR #3575 - Don't emit invalid turn types for obvious turns at sliproads and roundabouts.

OSRM v5.5.2

22 Dec 05:01

Choose a tag to compare

This is a bugfix release. We reverted #3184 as it had a major performance impact on dense graphs (i.e. the walk and bike profiles).

OSRM v5.5.1

16 Dec 23:23

Choose a tag to compare

Bugfix release to correct a deadlock using osrm-datastore in combination with multiple reader processes.

The bug in question is #3455

OSRM v5.5.0

15 Dec 10:16

Choose a tag to compare

Tags

Guidance

  • Polished up turn angle classification by detecting offsets due to lanes and minor variations due to data modelling inaccuracies. Turn angles now better resemble what users experience.
  • More accurate classification of sliproad scenarios (examples [1], [2]). When the maneuver is obvious, we now emit a single instruction for turning onto and then immediately off of sliproads.
  • Improvements to the name change heuristic reduce new name announcements.

API

  • We now support precision 5 (default) and 6 polyline geometries with the new parameter, geometries=polyline6.

Infrastructure

  • Improvements to the Hilbert space filling curve contribute to improvements to geospatial lookup performance.
  • The ever useful Debug Map now displays turn penalties at higher zoom levels.
  • We now provide online documentation for the API (requests, responses, examples).
  • Shared memory now supports multiple clients (multiple instances of libosrm).
  • Improved error reporting, especially for I/O and file loading.

Full Changelog

OSRM v5.4.0

04 Oct 13:18

Choose a tag to compare

With OSRM v5.4.0 we continued our focus on Guidance and improved lane support which was introduced in v5.3.

Some additional highlights:

  • Better classification for Roundabout Turns and roundabouts in general
  • Improved sliproad detection
  • Improved turn penalty function fit to real data
  • Support for Lane Access Tags
  • Designated HOV Lanes
  • Improved Lane Anticipation for subsequent quick lane changes
  • Name change detection heuristic reducing the number of instructions
  • Eliding instructions for quick turns in Staggered Intersections
  • More aggressive instruction collapsing
  • Limiting merge instructions to Motorways

Full Changelog