@@ -286,7 +286,7 @@ message LogicalLaneBoundary
286286// - The yellow line is the ReferenceLine of \c l1 . The ReferenceLine can be
287287// shared with other lanes. Because the ReferenceLine has the same direction
288288// as the driving direction of \c l1 in this example,
289- // <code>#reference_line_is_driving_direction == true </code>.
289+ // <code>#move_direction == #MOVE_DIRECTION_INCREASING_S </code>.
290290// - The red line marks the area where \c l2 is left of
291291// \c l1 - this info is recorded in #left_adjacent_lane of \c l1.
292292// - The red area is the area where \c l2 overlaps \c l1. This is recorded in
@@ -303,7 +303,7 @@ message LogicalLaneBoundary
303303// - The yellow line is the ReferenceLine of \c l2 . The ReferenceLine can be
304304// shared with other lanes. Because the ReferenceLine has the same direction
305305// as the driving direction of \c l2 in this example,
306- // <code>#reference_line_is_driving_direction == true </code>.
306+ // <code>#move_direction == #MOVE_DIRECTION_INCREASING_S </code>.
307307// - The green line marks the area where \c l1 is right of
308308// \c l2 - this info is recorded in #right_adjacent_lane of \c l2.
309309// - The red area is the area where \c l1 overlaps \c l2. This is recorded in
@@ -442,10 +442,7 @@ message LogicalLane
442442
443443 // \brief Definition of the intended driving direction.
444444 //
445- // \c true means driving direction is according to ascending S position.
446- // \c false means driving direction is according to descending S position.
447- //
448- optional bool reference_line_is_driving_direction = 8 ;
445+ optional MoveDirection move_direction = 8 ;
449446
450447 // \brief Lanes that are directly right of this lane, without gap or overlap.
451448 //
@@ -587,6 +584,10 @@ message LogicalLane
587584 // HighwayExit.
588585 // This matches the OpenDRIVE type "driving".
589586 //
587+ // Note: a lane with OpenDRIVE type "bidirectional" will have an OSI
588+ // type of TYPE_NORMAL, with <code>#move_direction ==
589+ // #MOVE_DIRECTION_BOTH_ALLOWED</code>.
590+ //
590591 TYPE_NORMAL = 2 ;
591592
592593 // A lane that is designated for bicylists.
@@ -694,6 +695,48 @@ message LogicalLane
694695 optional double end_s = 3 ;
695696 }
696697
698+ //
699+ // \brief Describes in which direction moving objects may typically move
700+ // along a lane.
701+ //
702+ // This describes the allowed typical driving direction on a lane, or (in
703+ // the case of pedestrian) the allowed walking direction.
704+ //
705+ // Note: Allowed overtaking (e.g. on country roads) does not automatically
706+ // make a lane bidirectional, since vehicles may normally only drive in the
707+ // other direction during the overtake maneuver, not for longer periods of
708+ // time.
709+ //
710+ enum MoveDirection
711+ {
712+ // Move direction is unknown. Do not use in ground truth.
713+ //
714+ MOVE_DIRECTION_UNKNOWN = 0 ;
715+
716+ // Move direction fits neither of the other categories.
717+ //
718+ // Example: a lane where cars may only drive in one direction, but
719+ // bikes may drive in both.
720+ //
721+ MOVE_DIRECTION_OTHER = 1 ;
722+
723+ // Objects may move in increasing S direction.
724+ //
725+ // This means they move in the same direction as the reference line.
726+ //
727+ MOVE_DIRECTION_INCREASING_S = 2 ;
728+
729+ // Objects may move in decreasing S direction.
730+ //
731+ // This means they move in the opposite direction as the reference line.
732+ //
733+ MOVE_DIRECTION_DECREASING_S = 3 ;
734+
735+ // Objects may move in both directions.
736+ //
737+ MOVE_DIRECTION_BOTH_ALLOWED = 4 ;
738+ }
739+
697740 //
698741 // \brief Connection to another lane (predecessor or successor)
699742 //
0 commit comments