From db28c38fd118f2f48f100559118e521ee0c81f41 Mon Sep 17 00:00:00 2001 From: Mamoru Sobue Date: Fri, 17 Nov 2023 03:00:48 +0900 Subject: [PATCH] define in-phase anti-phase signal group Signed-off-by: Mamoru Sobue --- .../README.md | 81 +- .../docs/occlusion-with-tl.drawio.svg | 1760 ++++++++--------- .../docs/signal-phase-group.drawio.svg | 547 +++++ .../docs/ugly-intersection.drawio.svg | 326 +++ 4 files changed, 1814 insertions(+), 900 deletions(-) create mode 100644 planning/behavior_velocity_intersection_module/docs/signal-phase-group.drawio.svg create mode 100644 planning/behavior_velocity_intersection_module/docs/ugly-intersection.drawio.svg diff --git a/planning/behavior_velocity_intersection_module/README.md b/planning/behavior_velocity_intersection_module/README.md index 241510f41fb49..cbce465a302b5 100644 --- a/planning/behavior_velocity_intersection_module/README.md +++ b/planning/behavior_velocity_intersection_module/README.md @@ -8,7 +8,7 @@ The intersection module is responsible for safely passing urban intersections by 2. recognizing the occluded area in the intersection 3. reacting to each color/shape of associated traffic lights -This module is designed to be agnostic to left-hand/right-hand traffic rules and work for crossroads, T-shape junctions, etc. +This module is designed to be agnostic to left-hand/right-hand traffic rules and work for crossroads, T-shape junctions, etc. Roundabout is not formally supported in this module. ![topology](./docs/intersection-topology.drawio.svg) @@ -18,36 +18,50 @@ This module is activated when the path contains the lanes with turn_direction ta ## Requirements/Limitations -- The HDMap needs to have the information of turn_direction tag (which should be one of straight, left, right) for all the lanes in intersections and right_of_way tag for specific lanes (refer to [RightOfWay](#how-to-set-rightofway-tag) section for more details). See [lanelet2_extension document](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md) for more detail. +- The HDMap needs to have the information of turn_direction tag (which should be one of straight, left, right) for all the lanes in intersections and right_of_way tag for specific lanes (refer to [RightOfWay](#how-towhy-set-rightofway-tag) section for more details). See [lanelet2_extension document](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md) for more detail. - WIP(perception requirements/limitations) - WIP(sensor visibility requirements/limitations) ## Attention area -The attention area in the intersection is defined as the set of lanes that are conflicting with ego path and their preceding lanes up to `common.attention_area_length` meters. By default RightOfWay tag is not set, so the attention area convers all the conflicting lanes and its preceding lanes as shown in the first row. RightOfWay tag is used to rule out the lanes that each lane has priority given the traffic light relation and turn_direction priority. In the second row, purple lanes are set as the yield_lane of the ego_lane in the RightOfWay tag. +The attention area in the intersection is defined as the set of lanes that are conflicting with ego path and their preceding lanes up to `common.attention_area_length` meters. By default RightOfWay tag is not set, so the attention area covers all the conflicting lanes and its preceding lanes as shown in the first row. RightOfWay tag is used to rule out the lanes that each lane has priority given the traffic light relation and turn_direction priority. In the second row, purple lanes are set as the yield_lane of the ego_lane in the RightOfWay tag. ![attention_area](./docs/intersection-attention.drawio.svg) intersection_area, which is supposed to be defined on the HDMap, is an area converting the entire intersection. -### How to set RightOfWay tag +### In-phase/Anti-phase signal group + +The terms "in-phase signal group" and "anti-phase signal group" are introduced to distinguish the lanes by the timing of traffic light regulation as shown in below figure. + +![phase signal group](./docs/signal-phase-group.drawio.svg) + +The set of lanes whose color is almost always the same as lane L1 is called the in-phase signal group of L1, and the set of lanes whose color is almost always the opposite of L1 is called the anti-phase signal group. + +### How-to/Why set RightOfWay tag Ideally RightOfWay tag is unnecessary if ego has perfect knowledge of all traffic signal information because: -- it can distinguish which conflicting lane should be checked because it is BLUE currently -- it can distinguish which conflicting lane can be ignored because it is RED currently +- it can distinguish which conflicting lanes should be checked because they are GREEN currently and possible collision occur with the vehicles on those lanes +- it can distinguish which conflicting lanes can be ignored because they are RED currently and there is no chance of collision with the vehicles on on those lanes unless they violate the traffic rule + +That allows ego to generate the attention area dynamically using the real time traffic signal information. However this ideal condition rarely holds unless the traffic signal information is provided through the infrastructure. Also there maybe be vary complicated/bad intersection maps where multiple lanes overlap in a complex manner. + +- If there is an perfect access to entire traffic light signal, then you can set `common.use_map_right_of_way` to false and there is no need to set RightOfWay tag on the map. The intersection module will generate the attention area by checking traffic signal and corresponding conflicting lanes. This feature is not implemented yet. +- If traffic signal information is not perfect, then set `common.use_map_right_of_way` to true. If you do not want to detect vehicles on the anti-phase signal group lanes, set them as yield_lane for ego lane. +- Even if there are no traffic lights if the intersection lanes are overlapped in a ugly manner, you may need to set RightOfWay tag. For example if adjacent intersection lanes of the same in-phase group are not sharing the boundary line and overlapped a little bit, you may need to set RightOfWay to each other for them in order to avoid unnecessary stop for vehicle on such unrelated lane. -Then ego can generate the attention area dynamically using the real time traffic signal information. However this ideal condition rarely holds unless the traffic signal information is provided through the infrasturcture. To help the intersection module care only a limited set of lanes, RightOfWay tag needs to be configured. +To help the intersection module care only a set of limited lanes, RightOfWay tag needs to be properly set. -Following table shows an example of how to assign right_of_way tag and set yield_lanes to each lane in intersections. +Following table shows an **example** of how to set yield_lanes to each lane in a intersection w/o traffic lights. Straight lanes with traffic lights are exceptionally handled to detect no lanes because commonly it has priority over all the other lanes, so no RightOfWay setting is required. -| turn direction / traffic light | w/ traffic light | w/o traffic light | -| ------------------------------ | --------------------------------------------------------------- | ------------------------------------------------ | -| straight | Highest priority of all | Priority over left/right lanes of the same group | -| left(Left hand traffic) | Priority over the other group and right lanes of the same group | Priority over right lanes of the same group | -| right(Left hand traffic) | Priority only over the other group | priority only over the other group | -| left(Right hand traffic) | Priority only over the other group | Priority only over the other group | -| right(Right hand traffic) | Priority over the other group and left lanes of the same group | priority over left lanes of the same group | +| turn direction of right_of_way | yield_lane(with traffic light) | yield_lane(without traffic light) | +| ------------------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------- | +| straight | not need to set yield_lane(this case is special) | left/right conflicting lanes of the in-phase group | +| left(Left hand traffic) | all conflicting lanes of the anti-phase group and right conflicting lanes of in-phase group | right conflicting lanes of the in-phase group | +| right(Left hand traffic) | all conflicting lanes of the anti-phase group | no yield_lane | +| left(Right hand traffic) | all conflicting lanes of the anti-phase group | no yield_lane | +| right(Right hand traffic) | all conflicting lanes of the anti-phase group and right conflicting lanes of in-phase group | left conflicting lanes of the in-phase group | This setting gives the following `attention_area` configurations. @@ -55,6 +69,15 @@ This setting gives the following `attention_area` configurations. ![attention_area_ll_rr](./docs/intersection-attention-ll-rr.drawio.svg) ![attention_area_lr_rl](./docs/intersection-attention-lr-rl.drawio.svg) +For complex/bad intersection map like the one illustrated below, additional RightOfWay setting maybe necessary. + +![bad-map](./docs/ugly-intersection.drawio.svg) + +The bad points are: + +1. ego lane is overlapped with adjacent lane of the in-phase group. In this case you need to set this lane as yield_lane additionally because otherwise attention area is generated for its preceding lanes as well, which may cause unwanted stop. +2. ego lane is overlapped with unrelated lane. In this case the lane is right-turn only and there is no chance of collision in theory. But you need to set this lane as yield_lane additionally for the same reason as (1). + ## Possible stop lines Following figure illustrates important positions used in the intersection module. Note that each solid line represents ego front line position and the corresponding dot represents the actual inserted stop point position for the vehicle frame, namely the center of the rear wheel. @@ -63,7 +86,11 @@ Following figure illustrates important positions used in the intersection module To precisely calculate stop positions, the path is interpolated at the certain interval of `common.path_interpolation_ds`. -closest_idx denotes the path point index which is closest to ego position. first_attention_stopline denotes the first path point where ego footprint intersects with the attention_area. If a stopline is associated with the intersection lane on the map, that line is used as the default_stopline for collision detection. Otherwise the point which is `common.default_stopline_margin` meters behind first_attention_stopline is defined as the default_stopline instead. occlusion_peeking_stopline is a bit ahead of first_attention_stopline as described later. occlusion_wo_tl_pass_judge_line is the first position where ego footprint intersects with the centerline of the first attention_area lane. +- closest_idx denotes the path point index which is closest to ego position. +- first_attention_stopline denotes the first path point where ego footprint intersects with the attention_area. +- If a stopline is associated with the intersection lane on the map, that line is used as the default_stopline for collision detection. Otherwise the point which is `common.default_stopline_margin` meters behind first_attention_stopline is defined as the default_stopline instead. +- occlusion_peeking_stopline is a bit ahead of first_attention_stopline as described later. +- occlusion_wo_tl_pass_judge_line is the first position where ego footprint intersects with the centerline of the first attention_area lane. ## Target objects @@ -79,6 +106,20 @@ Objects that satisfy all of the following conditions are considered as target ob ## Overview of decision process +There are several behaviors depending on the scene. + +| behavior | scene | action | +| ------------------------ | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Safe | Ego detected no occlusion and collsion | Ego passes the intersection | +| StuckStop | The exit of the intersection is blocked by traffic jam | Ego stops before the intersection or the boundary of attention area | +| YieldStuck | Another vehicle stops to yield ego | Ego stops before the intersection or the boundary of attention area | +| NonOccludedCollisionStop | Ego detects no occlusion but detects collision | Ego stops at the default_stop_line | +| FirstWaitBeforeOcclusion | Ego detected occlusion when entering the intersection | Ego stops at the default_stop_line at first | +| PeekingTowardOcclusion | Ego detected occlusion and but no collision within the FOV (after FirstWaitBeforeOcclusion) | Ego approaches the boundary of the attention area slowly | +| OccludedCollisionStop | Ego detected both occlusion and collision (after FirstWaitBeforeOcclusion) | Ego stops immediately | +| TrafficLightArrowSolidOn | Ego is fully prioritized by the RED/Arrow signal | Ego only cares vehicles still runnng inside the intersection. Occlusion is ignore | +| OverPassJudgeLine | Ego is already inside the attention area and/or cannot stop before the boundary of attention area | Ego does not detect collision/occlusion anymore and passes the intersection | + ```plantuml @startuml @@ -103,7 +144,7 @@ state check_occlusion <> check_tl_priority --> check_occlusion: IF not prioritized state Safe -State Prioritized { +State "Prioritized by traffic light" as Prioritized { state check_collision_prioritized <> check_tl_priority --> check_collision_prioritized: IF prioritized State TrafficLightArrowSolidOn @@ -182,13 +223,13 @@ The occlusion is detected as the common area of occlusion attention area(which i If the nearest occlusion cell value is below the threshold, occlusion is detected. It is expected that the occlusion gets cleared as the vehicle approaches the occlusion peeking stop line. -### Occlusion source estimation with traffic light +### Occlusion source estimation at intersection with traffic light -At intersection with traffic light, the whereabout of occlusion is estimated by checking if there are any objects between ego and the nearest occlusion cell. While the occlusion is estimated to be caused by some object (DYNAMICALLY occluded), intersection_wall will be inserted. If no objects are found between ego and the nearest occlusion cell (STATICALLY occluded), after ego stopped for the duration of `occlusion.static_occlusion_with_traffic_light_timeout` plus `occlusion.occlusion_detection_hold_time`, occlusion is intentionally ignored to avoid stuck. The remaining time is visualized on the intersection_occlusion virtual wall(TODO: add image). +At intersection with traffic light, the whereabout of occlusion is estimated by checking if there are any objects between ego and the nearest occlusion cell. While the occlusion is estimated to be caused by some object (DYNAMICALLY occluded), intersection_wall is at all times. If no objects are found between ego and the nearest occlusion cell (STATICALLY occluded), after ego stopped for the duration of `occlusion.static_occlusion_with_traffic_light_timeout` plus `occlusion.occlusion_detection_hold_time`, occlusion is intentionally ignored to avoid stuck. The remaining time is visualized on the intersection_occlusion virtual wall(TODO: add image). ![occlusion_detection](./docs/occlusion-with-tl.drawio.svg) -### Occlusion handling without traffic light +### Occlusion handling at intersection without traffic light At intersection without traffic light, if occlusion is detected, ego makes a brief stop at the default_stopline and first_attention_stopline respectively. After stopping at the first_attention_area_stopline this module inserts `occlusion.absence_traffic_light.creep_velocity` velocity between ego and occlusion_wo_tl_pass_judge_line while occlusion is not cleared. If collision is detected, ego immediately stops. Once the occlusion is cleared or ego has passed occlusion_wo_tl_pass_judge_line this module does not detect collision and occlusion because ego footprint is already inside the intersection. diff --git a/planning/behavior_velocity_intersection_module/docs/occlusion-with-tl.drawio.svg b/planning/behavior_velocity_intersection_module/docs/occlusion-with-tl.drawio.svg index 61cc030ff10e9..4edce74d53a7c 100644 --- a/planning/behavior_velocity_intersection_module/docs/occlusion-with-tl.drawio.svg +++ b/planning/behavior_velocity_intersection_module/docs/occlusion-with-tl.drawio.svg @@ -5,1140 +5,505 @@ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" - width="2757px" - height="1161px" - viewBox="-0.5 -0.5 2757 1161" - content="<mxfile host="Electron" modified="2023-11-14T20:53:54.396Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="al64YRbxadlPAbybABpd" version="20.3.0" type="device"><diagram name="intersection" id="0L5whF3ImEvTl2DSWTjR">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</diagram></mxfile>" + width="2756px" + height="1160px" + viewBox="-0.5 -0.5 2756 1160" + content="<mxfile host="Electron" modified="2023-11-16T18:11:51.253Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="We-lIkMB6x38qlI8vT1w" version="20.3.0" type="device"><diagram name="intersection" id="0L5whF3ImEvTl2DSWTjR">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</diagram></mxfile>" > - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + ego + +
+
+
+
+ ego +
+
+ + + + + + +
+
+
+ + nearest occlusion cell + +
+
+
+
+ nearest occlusion... +
+
+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - ego - -
-
-
-
- ego -
-
- - - - - - - - - -
-
-
- - nearest occlusion cell - -
-
-
-
- nearest occlusion... -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1992,6 +1355,643 @@ statically occluded because no detected object is blocking
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/planning/behavior_velocity_intersection_module/docs/signal-phase-group.drawio.svg b/planning/behavior_velocity_intersection_module/docs/signal-phase-group.drawio.svg new file mode 100644 index 0000000000000..6a268a9b83c6e --- /dev/null +++ b/planning/behavior_velocity_intersection_module/docs/signal-phase-group.drawio.svg @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + Urban crossroads with traffic light +
+
+ (Left-hand traffic) +
+
+ inphase signal group + of lane + L1 +
+
+
+
+
+
+
+ Urban crossroads with traffic light... +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + Urban crossroads with traffic light +
+
+ (Right-hand traffic) +
+
+
+ + antiphase signal group + of lane + L1 + + +
+
+
+
+
+
+
+ Urban crossroads with traffic light... +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ L1 +
+
+
+
+ L1 +
+
+ + + +
+
+
+ L1 +
+
+
+
+ L1 +
+
+
+ + + + Text is not SVG - cannot display + + +
diff --git a/planning/behavior_velocity_intersection_module/docs/ugly-intersection.drawio.svg b/planning/behavior_velocity_intersection_module/docs/ugly-intersection.drawio.svg new file mode 100644 index 0000000000000..2e0581e8da378 --- /dev/null +++ b/planning/behavior_velocity_intersection_module/docs/ugly-intersection.drawio.svg @@ -0,0 +1,326 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + complex/bad intersection map +
+
+
+
+
+
+
+ complex/bad intersection map +
+
+ + + +
+
+
+ + (1) ego lane is overlapped with adjacnet lane. +
+ This causes unnecessary attention lanes. +
+
+
+
+
+
+ (1) ego lane is overlapped with adjacnet lane.... +
+
+ + + + + +
+
+
+ + (2) ego lane is overlapped with unrelated lane +
+
+
+
+
+
+  (2) ego lane is overlapped with unrelated lane +
+
+ + + + + + + + + +
+ + + + Text is not SVG - cannot display + + +