Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(start_planner): show typical usecase of start planner and limitaion #6264

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
b334217
Add start planner module and related images
kyoichi-sugahara Feb 1, 2024
f40f100
delete images
kyoichi-sugahara Feb 1, 2024
0fcf20c
style(pre-commit): autofix
pre-commit-ci[bot] Feb 1, 2024
970339c
Update geometric pull out path generation in shoulder lane
kyoichi-sugahara Feb 1, 2024
b63e84e
Update README.md with additional path generation feature
kyoichi-sugahara Feb 1, 2024
e1f8358
style(pre-commit): autofix
pre-commit-ci[bot] Feb 1, 2024
f13fc13
fix
kyoichi-sugahara Feb 1, 2024
53f2e49
style(pre-commit): autofix
pre-commit-ci[bot] Feb 1, 2024
cc4afa6
Update README.md with path generation examples
kyoichi-sugahara Feb 1, 2024
45a809a
chore(radar_tracks_msgs_converter): fix README (#6226)
scepter914 Jan 31, 2024
6896651
feat(start_planner): disable safety check against dynamic objects whe…
kyoichi-sugahara Feb 1, 2024
0b3d78f
fix(obstacle_stop): add vector size guard (#6254)
yuki-takagi-66 Feb 1, 2024
edfca37
chore(radar_tracks_noise_filter): add config (#6211)
scepter914 Feb 1, 2024
0928cb6
chore(simple_object_merger): add config (#6212)
scepter914 Feb 1, 2024
c9b446b
chore(radar_tracks_msgs_converter): add config (#6213)
scepter914 Feb 1, 2024
2e8bec7
chore(radar_object_clustering): fix config arg name (#6214)
scepter914 Feb 1, 2024
a8593f5
chore(radar_crossing_objects_noise_filter): add config file (#6210)
scepter914 Feb 1, 2024
b8f14ad
chore(tier4_perception_launch): fix arg name radar lanelet filter (#6…
scepter914 Feb 1, 2024
feefb4a
Merge branch 'main' into docs/start_planner_concept
kyoichi-sugahara Feb 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
Loading