Struct Lane

Struct Documentation

struct Lane

A lane in the road network.

A lane is part of a road and mainly characterized by its center line. It also knows about any adjacent lanes, antecessor and successor lanes. The following images will be referred to by later comments. The lane l4 in image HighwayExit is used as reference if not mentioned otherwise.

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.

Public Members

optional Identifier osi3::Lane::id = 1

The ID of the lane. Example: l4 (see reference picture HighwayExit).

Note

Note ID is global unique.

optional Classification osi3::Lane::classification = 2

The classification of the lane.

struct Classification

Classification of a lane.

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.

Public Types

enum Type

Definition of available lane types.

Values:

TYPE_UNKNOWN = 0

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

TYPE_OTHER = 1

Any other type of lane.

TYPE_DRIVING = 2

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

TYPE_NONDRIVING = 3

A road where driving is normally not permitted. Example: Lane with ID l5 in image HighwayExit.

TYPE_INTERSECTION = 4

An intersection as a lane. Example: Lane with ID l7 in image Intersection.

../_images/OSI_X-Junction.svg

Public Members

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

The type of the lane.

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

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 CanditateLane in the DetectedLane .

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.

../_images/OSI_LaneCenterline.svg

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

Approximation error green line.

../_images/line_approximation_error.svg
Attention

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:

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.

Note

The centerline is defined only for type = TYPE_DRIVING and if exactly one or no lane_pairing pair exists.

Note

Intersections and non-driving lanes do not have a center line. A vehicle must calculate this individually and depending on the situation.

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 .

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. intended driving direction). 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 .

Note

OSI uses singular instead of plural for repeated field names.

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. intended driving direction). 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 .

Note

OSI uses singular instead of plural for repeated field names.

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.

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.

Note

The right_lane_boundary_id is undefined for type = TYPE_INTERSECTION .

Note

OSI uses singular instead of plural for repeated field names.

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.

Note

The left_lane_boundary_id is undefined for type = TYPE_INTERSECTION .

Note

OSI uses singular instead of plural for repeated field names.

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.

Note

OSI uses singular instead of plural for repeated field names.

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

The condition of the lane, e.g. influenced by weather.

struct LanePairing

The lane ID pairings of antecessor and successor lanes.

Note

In the example, the symbols l1, l2, … stand for the respective lane ids, i.e. for integers (uint64). The symbols cl1, cl2, … represent the osi3::Lane::Classification::centerline elements of the lanes with the respective ids.

Public Members

optional Identifier osi3::Lane::Classification::LanePairing::antecessor_lane_id = 1

The antecessor lane ID.

optional Identifier osi3::Lane::Classification::LanePairing::successor_lane_id = 2

The successor lane ID.

struct RoadCondition

The condition of the road surface.

Public Members

optional double osi3::Lane::Classification::RoadCondition::surface_temperature = 1

The temperature of the roads surface in Kelvin.

Unit: [K]

optional double osi3::Lane::Classification::RoadCondition::surface_water_film = 2

The height of the water film on top of the surface in mm.

Unit: [mm]

optional double osi3::Lane::Classification::RoadCondition::surface_freezing_point = 3

The temperature where the water on top of the surface would start to freeze or dew in Kelvin.

Unit: [K]

optional double osi3::Lane::Classification::RoadCondition::surface_ice = 4

The percentage of ice covering the road.

Unit: [%]

optional double osi3::Lane::Classification::RoadCondition::surface_roughness = 5

The coefficient representing the roughness or unevenness of the road. International Roughness Index (IRI) [1] values range from 0 = smooth ground (equivalent to driving on a plate of glass) up to 20 mm/m (a very rough road).

Estimated value ranges (IRI): 0.0 [mm/m] absolutely perfect evenness 0.3 - 1.8 [mm/m] airport runways and superhighways 1.4 - 3.4 [mm/m] new pavements 2.2 - 5.7 [mm/m] older pavements 3.2 - 9.8 [mm/m] maintained unpaved roads 4.0 - 11.0 [mm/m] damaged pavements 8.0 - > 20 [mm/m] rough unpaved roads

Speed of normal use (IRI): 30 [km/h] - 20 [mm/m] 50 [km/h] - 14.5 [mm/m] 60 [km/h] - 10.0 [mm/m] 80 [km/h] - 8.5 [mm/m] 100 [km/h] - 3.4 [mm/m]

Road conditions (IRI); 15 [mm/m] erosion gulleys and deep depressions 11 [mm/m] frequent shallow depressions, some deep 9 [mm/m] frequent minor depressions 5 [mm/m] surface imperfections

Unit: [mm/m]

References:

  • [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, University of Michigan Transportation Research Institute, 1998.

optional double osi3::Lane::Classification::RoadCondition::surface_texture = 6

The surface texture or fine roughness

Whereas the IRI-based roughness or unevenness measure only takes into account road wavelengths around 0.5m - 100m, the surface texture or fine roughness [2] measures only wavelengths below 0.5m. It is given as the standard height deviation of fine roughness

Unit: [m]

References:

  • [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, University of Michigan Transportation Research Institute, 1998.

  • [2] SCHNEIDER, R.: Modellierung der Wellenausbreitung fuer ein bildgebendes Kfz-Radar, Dissertation, Universitaet Karlsruhe, Mai 1998.