Maliput Backends

maliput API is designed to be backend-agnostic. This means that per sei it does not provide a road format. Instead, it provides a set of interfaces that a backend must implement, so the backend’s underlying format is hidden from the user.

The following backends are currently available:

Maliput Backends

Maliput Backend

Underlying Road Format

maliput_malidrive

OpenDRIVE

maliput_osm

Lanelet2 (OSM-based)

maliput_geopackage

GeoPackage (Custom maliput schema)

maliput_multilane

Custom

maliput_dragway

Custom

maliput_malidrive

maliput_malidrive is a backend that implements the maliput API for road networks which are described by the OpenDRIVE specification. The package provides several OpenDRIVE maps (maliput_malidrive/resources) as example, however any other OpenDRIVE map can be used.

The XODR parser is a standalone library that is used by maliput_malidrive to parse OpenDRIVE maps. For more information about the XODR parser, see the XODR parser README.

Some characteristics:
  • Supports a large subset of the OpenDRIVE(v1.5) specification.

  • Lane Geometry can compose:
    • Ground geometry: line and constant curvature arc.
      • Supports piecewise defined geometries.

    • Lane width: cubic polynomials.

    • Elevations: cubic polynomials.

    • Superelevations: cubic polynomials.

Used map: Town07.xodr

Note

See Gallery section for more videos.

maliput_geopackage

maliput_geopackage is a backend that implements the maliput API for road networks stored in GeoPackage files. GeoPackage is an OGC standard format that uses SQLite as its container, providing spatial indexing, schema enforcement, and compatibility with GIS tools (QGIS, GDAL, etc.).

This backend relies on maliput_sparse for building the road geometry from sampled lane boundaries.

Some characteristics:
  • Road data is stored in a single .gpkg file following a custom maliput schema.

  • Lanes are described by boundary polylines that are linearly interpolated.

  • Compatible with standard GIS tooling for map creation and inspection.

maliput_osm

maliput_osm is a backend that implements the maliput API for the Lanelet2 specification. This format is also based on OpenStreetMap (OSM) data. The package provides several OSM maps (maliput_osm/resources) as example, however any other OSM map can be used.

Some characteristics:
  • Supports a large subset of the OSM specification.

  • Lanes are described by a collection of polylines that are linearly interpolated.

maliput_multilane

maliput_multilane is a backend that implements the maliput API on top of a custom road format using YAML files. This backend is used for testing purposes only and it is an example of how to implement a backend with a really good support for a vast number of road geometries where the lane width remains constant.

Some characteristics:
  • Custom YAML specification for defining roads.

  • Lane Geometry can compose:
    • Ground geometry: line and constant curvature arc.

    • Lane width: constant.

    • Elevations: cubic polynomials.

    • Superelevations: cubic polynomials.

maliput_dragway

maliput_dragway is a backend that implements the maliput API with the most simple geometry: a flat straight surface on the ground. It is used for testing purposes only and it is an example of how to implement a backend.

Some characteristics:
  • Geometries:
    • Straight roads with N lanes

  • Cannot handle intersections