You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: planning/behavior_path_dynamic_avoidance_module/README.md
+35-16
Original file line number
Diff line number
Diff line change
@@ -4,15 +4,16 @@ This module is under development.
4
4
5
5
## Purpose / Role
6
6
7
-
This module provides avoidance functions for vehicles, pedestrians, and obstacles in the vicinity of the ego's path in combination with the obstacle_avoidance module.
7
+
This module provides avoidance functions for vehicles, pedestrians, and obstacles in the vicinity of the ego's path in combination with the [obstacle_avoidance_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/).
8
8
Each module performs the following roles.
9
-
Dynamic Avoidance module: This module cuts off the drivable area according to the position and velocity of the target to be avoided.
10
-
Obstacle Avoidance module: This module modifies the path to be followed so that it fits within the drivable area received.
9
+
Dynamic Avoidance module cuts off the drivable area according to the position and velocity of the target to be avoided.
10
+
Obstacle Avoidance modulemodifies the path to be followed so that it fits within the received drivable area.
11
11
12
-
Avoidance functions are also provided by the Avoidance module, which allows avoidance through the outside of own lanes but not against moving objects.
12
+
Avoidance functions are also provided by the [Avoidance module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_avoidance_module/), but these modules have different roles.
13
+
The Avoidance module performs avoidance through the outside of own lanes but cannot avoid the moving objects.
13
14
On the other hand, this module can avoid moving objects.
14
-
For this reason, the word "dynamic" is used in its name.
15
-
The table below lists the avoidance modules that can be used for each situation.
15
+
For this reason, the word "dynamic" is used in the module's name.
16
+
The table below lists the avoidance modules that can handle each situation.
16
17
17
18
|| avoid within the own lane | avoid through the outside of own lanes |
@@ -22,22 +23,20 @@ The table below lists the avoidance modules that can be used for each situation.
22
23
## Policy of algorithms
23
24
24
25
Here, we describe the policy of inner algorithms.
25
-
The inner algorithms can be separated into two parts: The first decide whether to avoid the obstacles and the second cuts off the drivable area against the corresponding obstacle.
26
-
If you are interested in more details, please see the code itself.
26
+
The inner algorithms can be separated into two parts: The first decides whether to avoid the obstacles and the second cuts off the drivable area against the corresponding obstacle.
27
27
28
28
### Select obstacles to avoid
29
29
30
30
To decide whether to avoid an object, both the predicted path and the state (pose and twist) of each object are used.
31
31
The type of objects the user wants this module to avoid is also required.
32
32
Using this information, the module decides to _avoid_ objects that _obstruct the ego's passage_ and _can be avoided_.
33
33
34
-
The definition of _obstruct own passage_ is implemented as the object that collides within seconds.
35
-
This process wastes computational cost by doing it for all objects; thus, filtering by the relative position and speed of the object with respect to the ego's path is also done as an auxiliary process.
36
-
The other, _can be avoided_ denotes whether it can be avoided without risk to passengers or other vehicles.
37
-
For this purpose, it is judged whether the obstacle can be avoided by satisfying the constraints of lateral acceleration and lateral jerk.
38
-
For example, the module decides not to avoid an object that is too close or fast in the lateral direction because it cannot be avoided.
34
+
The definition of _obstruct the ego's passage_ is implemented as the object that collides within seconds.
35
+
The other, _can be avoided_ denotes whether it can be avoided without risk to the passengers or the other vehicles.
36
+
For this purpose, the module judges whether the obstacle can be avoided with satisfying the constraints of lateral acceleration and lateral jerk.
37
+
For example, the module decides not to avoid an object that is too close or fast in the lateral direction.
39
38
40
-
### Cuts off the drivable area against the selected obstacles
39
+
### Cuts off the drivable area against the selected vehicles
41
40
42
41
For the selected obstacles to be avoided, the module cuts off the drivable area.
43
42
As inputs to decide the shapes of cut-off polygons, poses of the obstacles are mainly used, assuming they move in parallel to the ego's path, instead of its predicted path.
@@ -46,7 +45,7 @@ Furthermore, the output drivable area shape is designed as a rectangular cutout
46
45
47
46
#### Determination of lateral dimension
48
47
49
-
Lateral dimensions of the polygon is calculated as follows.
48
+
The lateral dimensions of the polygon are calculated as follows.
50
49
The polygon's width to extract from the drivable area is the obstacle width and `drivable_area_generation.lat_offset_from_obstacle`.
51
50
We can limit the lateral shift length by `drivable_area_generation.max_lat_offset_to_avoid`.
52
51
@@ -56,14 +55,34 @@ We can limit the lateral shift length by `drivable_area_generation.max_lat_offse
56
55
57
56
Then, extracting the same directional and opposite directional obstacles from the drivable area will work as follows considering TTC (time to collision).
58
57
59
-
Regarding the same directional obstacles, obstacles whose TTC is negative will be ignored (e.g. The obstacle is in front of the ego, and the obstacle's velocity is larger than the ego's velocity.).
58
+
Regarding the same directional obstacles, obstacles whose TTC is negative will be ignored (e.g., The obstacle is in front of the ego, and the obstacle's velocity is larger than the ego's velocity.).
60
59
61
60
Same directional obstacles (Parameter names may differ from implementation)
### Cuts off the drivable area against the selected pedestrians
67
+
68
+
Then, we describe the logic to generate the drivable areas against pedestrians to be avoided.
69
+
Objects of this type are considered to have priority right of way over the ego's vehicle while ensuring a minimum safety of the ego's vehicle.
70
+
In other words, the module assigns a drivable area to an obstacle with a specific margin based on the predicted paths with specific confidences for a specific time interval, as shown in the following figure.
<figcaption> Restriction areas are generated from each pedestrian's predicted paths</figcaption>
75
+
</figure>
76
+
77
+
Apart from polygons for objects, the module also generates another polygon to ensure the ego's safety, i.e., to avoid abrupt steering or significant changes from the path.
78
+
This is similar to avoidance against the vehicles and takes precedence over keeping a safe distance from the object to be avoided.
79
+
As a result, as shown in the figure below, the polygons around the objects reduced by the secured polygon of the ego are subtracted from the ego's drivable area.
0 commit comments