Skip to content

Commit d7c6c9f

Browse files
apply lint
Signed-off-by: Yuki Takagi <yuki.takagi@tier4.jp>
1 parent 57d7098 commit d7c6c9f

File tree

1 file changed

+14
-6
lines changed
  • planning/behavior_path_dynamic_avoidance_module

1 file changed

+14
-6
lines changed

planning/behavior_path_dynamic_avoidance_module/README.md

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Dynamic avoidance design
2+
23
This module is under development.
34

45
## Purpose / Role
6+
57
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.
68
Each module performs the following roles.
79
Dynamic Avoidance module: This module cuts off the drivable area according to the position and velocity of the target to be avoided.
@@ -18,36 +20,40 @@ The table below lists the avoidance modules that can be used for each situation.
1820
| avoid moving objects | Dynamic Avoidance Module + Obstacle Avoidance Module | No Module (Under Development) |
1921

2022
## Policy of algorithms
23+
2124
Here, we describe the policy of inner algorithms.
2225
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.
2326
If you are interested in more details, please see the code itself.
2427

2528
### Select obstacles to avoid
29+
2630
To decide whether to avoid an object, both the predicted path and the state (pose and twist) of each object are used.
2731
The type of objects the user wants this module to avoid is also required.
28-
Using this information, the module decides to *avoid* objects that *obstruct the ego's passage* and *can be avoided*.
32+
Using this information, the module decides to _avoid_ objects that _obstruct the ego's passage_ and _can be avoided_.
2933

30-
The definition of *obstruct own passage* is implemented as the object that collides within seconds.
34+
The definition of _obstruct own passage_ is implemented as the object that collides within seconds.
3135
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.
32-
The other, *can be avoided* denotes whether it can be avoided without risk to passengers or other vehicles.
36+
The other, _can be avoided_ denotes whether it can be avoided without risk to passengers or other vehicles.
3337
For this purpose, it is judged whether the obstacle can be avoided by satisfying the constraints of lateral acceleration and lateral jerk.
3438
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.
3539

3640
### Cuts off the drivable area against the selected obstacles
41+
3742
For the selected obstacles to be avoided, the module cuts off the drivable area.
3843
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.
3944
This design arises from that the predicted path of objects is not accurate enough to use the path modifications (at least currently).
4045
Furthermore, the output drivable area shape is designed as a rectangular cutout along the ego's path to make the computation scalar rather than planar.
4146

4247
#### Determination of lateral dimension
48+
4349
Lateral dimensions of the polygon is calculated as follows.
4450
The polygon's width to extract from the drivable area is the obstacle width and `drivable_area_generation.lat_offset_from_obstacle`.
4551
We can limit the lateral shift length by `drivable_area_generation.max_lat_offset_to_avoid`.
4652

4753
![drivable_area_extraction_width](./image/drivable_area_extraction_width.drawio.svg)
4854

49-
5055
#### Determination of longitudinal dimension
56+
5157
Then, extracting the same directional and opposite directional obstacles from the drivable area will work as follows considering TTC (time to collision).
5258

5359
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.).
@@ -59,13 +65,13 @@ Opposite directional obstacles (Parameter names may differ from implementation)
5965
![opposite_directional_object](./image/opposite_directional_object.svg)
6066

6167
## Example
68+
6269
<figure>
6370
<img src="./image/image-20230807-151945.png" width="800">
6471
<figcaption>Avoidance for the bus depature</figcaption>
6572
</figure>
6673

67-
68-
<figure>
74+
<figure>
6975
<img src="./image/image-20230807-152835.png" width="800">
7076
<figcaption>Avoidance on curve </figcaption>
7177
</figure>
@@ -81,13 +87,15 @@ Opposite directional obstacles (Parameter names may differ from implementation)
8187
</figure>
8288

8389
## Future works
90+
8491
Currently, the path shifting length is limited to 0.5 meters or less by `drivable_area_generation.max_lat_offset_to_avoid`.
8592
This is caused by the lack of functionality to work with other modules and the structure of the planning component.
8693
Due to this issue, this module can only handle situations where a small avoidance width is sufficient.
8794
This issue is the most significant for this module.
8895
In addition, the ability of this module to extend the drivable area as needed is also required.
8996

9097
## Parameters
98+
9199
Under development
92100

93101
| Name | Unit | Type | Description | Default value |

0 commit comments

Comments
 (0)