maliput
Lane Marking API

Detailed Description

Data structures for describing lane boundary markings.

Lane markings describe the visual and physical characteristics of the markings at lane boundaries. This includes painted lines, physical curbs, and other delineation features.

The design is influenced by OpenDRIVE road marking specification and OSI (Open Simulation Interface) lane boundary concepts.

Classes

class  LaneBoundary
 Represents a boundary between adjacent lanes or at the edge of a Segment. More...
 
struct  LaneMarkingLine
 Describes a single line within a lane marking. More...
 
struct  LaneMarking
 Describes the complete lane marking at a lane boundary. More...
 
struct  LaneMarkingResult
 Result of querying lane marking at a specific position or range. More...
 

Enumerations

enum  LaneMarkingType {
  kUnknown = 0, kNone, kSolid, kBroken,
  kSolidSolid, kSolidBroken, kBrokenSolid, kBrokenBroken,
  kBottsDots, kGrass, kCurb, kEdge
}
 Describes the type/pattern of a lane marking line. More...
 
enum  LaneMarkingWeight { kUnknown = 0, kStandard, kBold }
 Describes the visual weight/thickness category of the marking. More...
 
enum  LaneMarkingColor {
  kUnknown = 0, kWhite, kYellow, kOrange,
  kRed, kBlue, kGreen, kViolet
}
 Describes the color of the lane marking. More...
 
enum  LaneChangePermission {
  kUnknown = 0, kAllowed, kToLeft, kToRight,
  kProhibited
}
 Describes the lane change permission indicated by the marking. More...
 

Enumeration Type Documentation

◆ LaneChangePermission

enum LaneChangePermission
strong

Describes the lane change permission indicated by the marking.

This represents the legal interpretation of the marking regarding lane changes. The permission is typically determined by the marking type (e.g., solid vs. broken lines).

The Rule API may provide more detailed lane change rules that complement this marking-based permission. The recommendation is to rely on the Rule API for comprehensive lane change logic, using this marking information as supplementary context if needed.

Enumerator
kUnknown 

Unknown or unspecified permission.

kAllowed 

Lane change permitted (crossing the marking is allowed).

kToLeft 

Lane change only permitted towards the left (increasing r).

kToRight 

Lane change only permitted towards the right (decreasing r).

kProhibited 

Lane change prohibited (crossing the marking is not allowed).

◆ LaneMarkingColor

enum LaneMarkingColor
strong

Describes the color of the lane marking.

Colors have different meanings depending on the country's traffic regulations. For example:

  • White: Typically separates traffic flowing in the same direction.
  • Yellow: Typically separates traffic flowing in opposite directions (in some countries).
  • Orange: Often used for temporary markings (e.g., construction zones).
Enumerator
kUnknown 

Unknown or unspecified color.

kWhite 

White marking.

kYellow 

Yellow marking.

kOrange 

Orange marking (often temporary).

kRed 

Red marking.

kBlue 

Blue marking (e.g., handicap zones).

kGreen 

Green marking (e.g., bike lanes in some regions).

kViolet 

Violet/purple marking.

◆ LaneMarkingType

enum LaneMarkingType
strong

Describes the type/pattern of a lane marking line.

These types represent common road marking patterns found in road networks. The naming follows OpenDRIVE conventions where applicable.

Enumerator
kUnknown 

Unknown or unspecified marking type.

kNone 

No visible marking present.

kSolid 

Continuous solid line.

kBroken 

Dashed/broken line pattern.

kSolidSolid 

Double solid lines (two parallel solid lines).

kSolidBroken 

Solid line on the inner side, broken on the outer side.

kBrokenSolid 

Broken line on the inner side, solid on the outer side.

kBrokenBroken 

Double broken lines (two parallel dashed lines).

kBottsDots 

Botts' dots (raised pavement markers).

kGrass 

Grass edge (natural boundary, no painted marking).

kCurb 

Physical curb boundary.

kEdge 

Edge line (typically at road boundary).

◆ LaneMarkingWeight

enum LaneMarkingWeight
strong

Describes the visual weight/thickness category of the marking.

Weight affects the visual prominence of the marking. Bold markings are typically used to emphasize important boundaries.

Enumerator
kUnknown 

Unknown or unspecified weight.

kStandard 

Standard/normal width marking.

kBold 

Wide/bold marking (typically 2x standard width).