osi3::Lane::Classification Struct Reference
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.
| ||||||||||||
|
- 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. |
◆ 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.
Example: In image HighwayExit, the centerline of lane l4 (black line) is given by (cl4_1, cl4_2, cl4_3, cl4_4, cl4_5).
- 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:
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 fortype
=TYPE_DRIVING
and if exactly one or nolane_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 fortype
=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 fortype
=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 fortype
=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 fortype
=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 fortype
=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
withtype
=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