Skip to content

Commit

Permalink
docs(start_planner): show typical usecase of start planner and limita…
Browse files Browse the repository at this point in the history
…ion (#6264)

* Add start planner module and related images

* Update geometric pull out path generation in shoulder lane

* Update README.md with additional path generation feature

Signed-off-by: kyoichi-sugahara <[email protected]>

---------

Signed-off-by: kyoichi-sugahara <[email protected]>
  • Loading branch information
kyoichi-sugahara authored Feb 1, 2024
1 parent 742f44a commit a1d4df1
Show file tree
Hide file tree
Showing 10 changed files with 285 additions and 77 deletions.
69 changes: 61 additions & 8 deletions planning/behavior_path_start_planner_module/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,77 @@

## Purpose / Role

The Start Planner module is designed to generate a path from the current ego position to the driving lane, avoiding static obstacles and stopping in response to dynamic obstacles when a collision is detected.
This module generates and plans a path for safely merging from the shoulder lane or side of road lane into the center of the road lane.

Use cases include:
Specifically, it includes the following features:

- pull out from the side of the road lane to centerline.
- Plan the path to automatically start from the shoulder lane or side of road lane to center of road lane.
- When parked vehicles are present on the shoulder lane, the module generates a path that allows for starting with a gap of a specified margin.
- If a collision with other traffic participants is detected while traveling on the generated path, it will stop as much as possible.

<figure markdown>
![case1](images/start_from_road_side.drawio.svg){width=1000}
<figcaption>pull out from side of the road lane</figcaption>
![start_planner_module](images/start_planner_example.png){width=1100}
</figure>

- pull out from the shoulder lane to the road lane centerline.
## Use Cases

Give an typical example of how path generation is executed. Showing example of path generation starts from shoulder lane, but also from side of road lane can be generated.

<figure markdown>
![shift_pull_out_from_road_lane](images/shift_pull_out_path_from_road_lane.drawio.svg){width=1100}
</figure>

### **Use Case 1: Shift pull out**

In the shoulder lane, when there are no parked vehicles ahead and the shoulder lane is sufficiently long, a forward shift pull out path (a clothoid curve with consistent jerk) is generated.

<figure markdown>
![shift_pull_out](images/shift_pull_out_path.drawio.svg){width=1100}
</figure>

### **Use Case 2: Geometric pull out**

In the shoulder lane, when there are objects in front and the lane is not sufficiently long behind, a geometric pull out path is generated.

<figure markdown>
![geometric_pull_out](images/geometric_pull_out_path.drawio.svg){width=1100}
</figure>

### **Use Case 3: Backward and shift pull out**

In the shoulder lane, when there are parked vehicles ahead and the lane is sufficiently long behind, a path that involves reversing before generating a forward shift pull out path is created.

<figure markdown>
![shift_pull_out_with_back](images/shift_pull_out_path_with_back.drawio.svg){width=1100}
</figure>

### **Use Case 4: Backward and geometric pull out**

In the shoulder lane, when there is an object ahead and not enough space to reverse sufficiently, a path that involves reversing before making an geometric pull out is generated.

<figure markdown>
![case2](images/start_from_road_shoulder.drawio.svg){width=1000}
<figcaption>pull out from the shoulder lane</figcaption>
![geometric_pull_out_with_back](images/geometric_pull_out_path_with_back.drawio.svg){width=1100}
</figure>

### **Use Case 5: Freespace pull out**

If the map is annotated with the information that a free space path can be generated in situations where both shift and geometric pull out paths are impossible to create, a path based on the free space algorithm will be generated.

<figure markdown>
![freespace_path](images/freespace_pull_out.png){width=1100}
</figure>

**As a note, the patterns for generating these paths are based on default parameters, but as will be explained in the following sections, it is possible to control aspects such as making paths that involve reversing more likely to be generated, or making geometric paths more likely to be generated, by changing the path generation policy or adjusting the margin around static objects.**

## Limitations

Here are some notable limitations:

- If parked vehicles exist in front of, behind, or on both sides of the shoulder, and it's not possible to maintain a specified distance from them, a stopping path will be generated, leading to a potential deadlock.
- In the default settings of the behavior_path_planner, an avoidance module operates in a later stage and attempts to avoid objects. However, it is not guaranteed that the start_planner module will output a path that can successfully navigate around obstacles. This means that if an unavoidable path is generated, it could result in a deadlock.
- The performance of safety check relies on the accuracy of the predicted paths generated by the map_based_prediction node. It's important to note that, currently, predicted paths that consider acceleration are not generated, and paths for low-speed objects may not be accurately produced, which requires caution.
- Given the current specifications of the rule-based algorithms, there is a trade-off between the safety of a path and its naturalness to humans. While it's possible to adjust parameters to manage this trade-off, improvements are necessary to better reconcile these aspects.

## Design

```plantuml
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit a1d4df1

Please sign in to comment.