osi3::Lane::Classification Struct Reference

Classification of a lane. More...

Collaboration diagram for osi3::Lane::Classification:

Classes

struct  LanePairing
 The lane ID pairings of antecessor and successor lanes. More...
 
struct  RoadCondition
 The condition of the road surface. More...
 

Public Types

enum  Type {
  TYPE_UNKNOWN = 0, TYPE_OTHER = 1, TYPE_DRIVING = 2, TYPE_NONDRIVING = 3,
  TYPE_INTERSECTION = 4
}
 Definition of available lane types. More...
 
enum  Subtype {
  SUBTYPE_UNKNOWN = 0, SUBTYPE_OTHER = 1, SUBTYPE_NORMAL = 2, SUBTYPE_BIKING = 3,
  SUBTYPE_SIDEWALK = 4, SUBTYPE_PARKING = 5, SUBTYPE_STOP = 6, SUBTYPE_RESTRICTED = 7,
  SUBTYPE_BORDER = 8, SUBTYPE_SHOULDER = 9, SUBTYPE_EXIT = 10, SUBTYPE_ENTRY = 11,
  SUBTYPE_ONRAMP = 12, SUBTYPE_OFFRAMP = 13, SUBTYPE_CONNECTINGRAMP = 14
}
 Definition of available lane subtypes, aligned with OpenDRIVE. More...
 

Public Attributes

optional Type type = 1
 The type of the lane. More...
 
optional bool is_host_vehicle_lane = 2
 Indicates that the host vehicle travels on this particular lane. More...
 
repeated Vector3d centerline = 3
 The lane's center line (as a list of segments). More...
 
optional bool centerline_is_driving_direction = 4
 Definition of the intended driving direction. More...
 
repeated Identifier left_adjacent_lane_id = 5
 List of IDs of all lane segments that are directly adjacent to the lane on the left side (w.r.t. More...
 
repeated Identifier right_adjacent_lane_id = 6
 List of IDs of all lane segments that are directly adjacent to the lane on the right side (w.r.t. More...
 
repeated LanePairing lane_pairing = 7
 The antecessor/successor lane pairings of this lane. More...
 
repeated Identifier right_lane_boundary_id = 8
 The right adjacent lane boundaries right_lane_boundary_id may only be shared with/as the left adjacent lane boundaries left_lane_boundary_id of the nearest right adjacent lane right_adjacent_lane_id. More...
 
repeated Identifier left_lane_boundary_id = 9
 The left adjacent lane boundaries left_lane_boundary_id may only be shared with/as the right adjacent lane boundaries right_lane_boundary_id of the nearest left adjacent lane left_adjacent_lane_id. More...
 
repeated Identifier free_lane_boundary_id = 10
 The free boundaries which have no/unknown assignment to left/right. More...
 
optional RoadCondition road_condition = 11
 The condition of the lane, e.g. More...
 
optional Subtype subtype = 12
 The subtype of the lane. More...
 

Detailed Description

Classification of a lane.

OSI_LaneClassification.jpg
HighwayExit
Classification for lane l4 in image HighwayExit:
type = TYPE_DRIVING
centerline = (cl4_1, cl4_2, cl4_3, cl4_4, cl4_5)
centerline_is_driving_direction = true
is_host_vehicle_lane = true
left_adjacent_lane_id = l3
right_adjacent_lane_id = (l5,l6)
left_lane_boundary_id = lb5
right_lane_boundary_id = (lb9, lb6)
OSI_LaneIntersection.jpg
Intersection
Classification for lane l7 in image Intersection:
type = TYPE_INTERSECTION
is_host_vehicle_lane = false
free_lane_boundary_id = lb11
<border = 0>
lane_pairing = ( (l2,l1), (l2,l3), (l2,l5),
(l4,l1), (l4,l3), (l4,l5),
(l6,l1), (l6,l3), (l6,l5) )
Note
In the examples, the symbols l1, l2, ... and lb1, lb2, ... stand for the lane ids and lane boundary ids respectively, i.e. for integers (uint64). The symbols cl1, cl2, ... represent the osi3::Lane::Classification::centerline elements of the lanes with the respective ids. The symbols cl1_1, cl1_2, ... stand for osi3::Vector3d elements.

Member Enumeration Documentation

◆ Type

Definition of available lane types.

Enumerator
TYPE_UNKNOWN 

Lane of unknown type (must not be used in ground truth).

TYPE_OTHER 

Any other type of lane.

TYPE_DRIVING 

A normal lane.

Example: Lanes with IDs l1, l2, l3, l4 and l6 in image HighwayExit.

TYPE_NONDRIVING 

A road where driving is normally not permitted.

Example: Lane with ID l5 in image HighwayExit.

TYPE_INTERSECTION 

An intersection as a lane.

Example: Lane with ID l7 in image Intersection.

OSI_X-Junction.svg

◆ Subtype

Definition of available lane subtypes, aligned with OpenDRIVE.

Enumerator
SUBTYPE_UNKNOWN 

Lane of unknown subtype.

Do not use in ground truth.

SUBTYPE_OTHER 

Any other subtype of lane.

SUBTYPE_NORMAL 

A normal driving lane.

Example: Lanes with IDs l1, l2, l3 and l4 in image HighwayExit.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

SUBTYPE_BIKING 

A lane that is designated for bicycles.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_SIDEWALK 

A lane that is designated for pedestrians (sidewalk).

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_PARKING 

A lane with parking spaces.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_STOP 

A hard shoulder on motorways for emergency stops.

Example: Lane l5 in image HighwayExit.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_RESTRICTED 

A lane on which cars should not drive.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_BORDER 

A hard border on the edge of a road.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_SHOULDER 

A soft border on the edge of a road.

Since it is not intended to be used for normal automotive driving, it should be used in combination with TYPE_NONDRIVING.

SUBTYPE_EXIT 

A deceleration lane in parallel to the main road.

Example: Lane l6 in image HighwayExit.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

SUBTYPE_ENTRY 

An acceleration lane in parallel to the main road.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

SUBTYPE_ONRAMP 

A ramp from rural or urban roads joining a motorway.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

SUBTYPE_OFFRAMP 

A ramp leading off a motorway onto rural or urban roads.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

SUBTYPE_CONNECTINGRAMP 

A ramp that connect two motorways.

Since it is intended to be used for normal automotive driving, it should be used in combination with TYPE_DRIVING.

Member Data Documentation

◆ type

optional Type osi3::Lane::Classification::type = 1

The type of the lane.

Example: For l4 in image HighwayExit the type is TYPE_DRIVING.

◆ is_host_vehicle_lane

optional bool osi3::Lane::Classification::is_host_vehicle_lane = 2

Indicates that the host vehicle travels on this particular lane.

The host vehicle may travel on more than one lane at once. This does also apply for the CandidateLane in the DetectedLane .

◆ centerline

repeated Vector3d osi3::Lane::Classification::centerline = 3

The lane's center line (as a list of segments).

The centerline describes the middle of the lane.

OSI_LaneCenterline.svg
Centerline

Example: In image HighwayExit, the centerline of lane l4 (black line) is given by (cl4_1, cl4_2, cl4_3, cl4_4, cl4_5).

OSI_LaneBoundaries_And_CenterLine.svg
Centerline
Note
cl: center line lb: lane boundary
Attention
The points describing the center line must be set in the same ordering (ascending or descending) as the points describing the lane boundaries. Example: If the points are deducted from a map format, the order of points is recommended to be in line with the road coordinate (e.g. s-coordinate in OpenDRIVE).
The points describing the center line might be set at arbitrary distances. When the points are pairwise linearly connected, the lateral distance to the real ideal line (as used by the simulation environment internally) must not exceed 5cm. As shown in the following image:
line_approximation_error.svg
Approximation error

Approximation error green line.

Note
The center line is the line that a typical vehicle follows more or less (depending on the situation, a little more to the left or right of the center line). The intended direction of travel on the lane is given by the direction defined by the sequence of points forming the centerline w.r.t. centerline_is_driving_direction.
The centerline is defined only for type = TYPE_DRIVING and if exactly one or no lane_pairing pair exists.
Intersections and non-driving lanes do not have a center line. A vehicle must calculate this individually and depending on the situation.

◆ centerline_is_driving_direction

optional bool osi3::Lane::Classification::centerline_is_driving_direction = 4

Definition of the intended driving direction.

Defined and used for driving lanes. true means driving direction is according to ascending storage order of center line points. false means driving direction is according to descending storage order of center line points.

Example: centerline_is_driving_direction = true for lane l4 and centerline_is_driving_direction = false for lane l2 in image HighwayExit .

Note
The centerline_is_driving_direction is defined for type = TYPE_DRIVING .

◆ left_adjacent_lane_id

repeated Identifier osi3::Lane::Classification::left_adjacent_lane_id = 5

List of IDs of all lane segments that are directly adjacent to the lane on the left side (w.r.t.

ascending order of centerline points and lane boundary points). Note that lengths of lane segments are not synchronized and therefore there are multiple adjacent segments if there is a split/merge point in the adjacent lane.

Example: The lane l3 is the only left adjacent lane for lane l4 in image HighwayExit.

Note
The left_adjacent_lane_id is undefined for type = TYPE_INTERSECTION .
OSI uses singular instead of plural for repeated field names.
Rules
check_if this.type is_different_to 4 else do_check is_set

◆ right_adjacent_lane_id

repeated Identifier osi3::Lane::Classification::right_adjacent_lane_id = 6

List of IDs of all lane segments that are directly adjacent to the lane on the right side (w.r.t.

ascending order of centerline points and lane boundary points). Note that lengths of lane segments are not synchronized and therefore there are multiple adjacent segments if there is a split/merge point in the adjacent lane.

Example: right_adjacent_lane_id = (l5, l6) for lane l4 in image HighwayExit.

Note
The right_adjacent_lane_id is undefined for type = TYPE_INTERSECTION .
OSI uses singular instead of plural for repeated field names.
Rules
check_if this.type is_different_to 4 else do_check is_set

◆ lane_pairing

repeated LanePairing osi3::Lane::Classification::lane_pairing = 7

The antecessor/successor lane pairings of this lane.

There can be multiple pairings with the same antecessor and different successor lanes and vice versa. The antecessor lanes end in the same point that this lane starts from. The successor lanes start in the same point that this lane ends in.

Example: See image Intersection.

Note
OSI uses singular instead of plural for repeated field names.

◆ right_lane_boundary_id

repeated Identifier osi3::Lane::Classification::right_lane_boundary_id = 8

The right adjacent lane boundaries right_lane_boundary_id may only be shared with/as the left adjacent lane boundaries left_lane_boundary_id of the nearest right adjacent lane right_adjacent_lane_id.

Example: right_lane_boundary_id = (lb9, lb6) for reference lane l4 in image HighwayExit.

Note
Empty for intersections.
The right_lane_boundary_id is undefined for type = TYPE_INTERSECTION .
OSI uses singular instead of plural for repeated field names.
The boundary between adjacent lanes at different heights (e.g. a curb between a driving lane and a sidewalk) should not be shared, but modeled as two separate lane boundaries with individual ids. One for the upper, the other one for the lower lane.
Rules
check_if this.type is_different_to 4 else do_check is_set

◆ left_lane_boundary_id

repeated Identifier osi3::Lane::Classification::left_lane_boundary_id = 9

The left adjacent lane boundaries left_lane_boundary_id may only be shared with/as the right adjacent lane boundaries right_lane_boundary_id of the nearest left adjacent lane left_adjacent_lane_id.

Example: left_lane_boundary_id = lb5 for lane l4 in image HighwayExit.

Note
Empty for intersections.
The left_lane_boundary_id is undefined for type = TYPE_INTERSECTION .
OSI uses singular instead of plural for repeated field names.
The boundary between adjacent lanes at different heights (e.g. a curb between a driving lane and a sidewalk) should not be shared, but modeled as two separate lane boundaries with individual ids. One for the upper, the other one for the lower lane.
Rules
check_if this.type is_different_to 4 else do_check is_set

◆ free_lane_boundary_id

repeated Identifier osi3::Lane::Classification::free_lane_boundary_id = 10

The free boundaries which have no/unknown assignment to left/right.

Example: free_lane_boundary_id = lb11 for lane l7 in image Intersection.

Note
Lane with type = TYPE_INTERSECTION use only free lane boundaries.
OSI uses singular instead of plural for repeated field names.
Rules
check_if this.type is_different_to 4 else do_check is_set

◆ road_condition

optional RoadCondition osi3::Lane::Classification::road_condition = 11

The condition of the lane, e.g.

influenced by weather.

◆ subtype

optional Subtype osi3::Lane::Classification::subtype = 12

The subtype of the lane.

This subtype specifies a lane more concretely.


  • osi_lane.proto