Skip to content

Commit

Permalink
Add path shifter explanation
Browse files Browse the repository at this point in the history
Signed-off-by: Zulfaqar Azmi <[email protected]>
  • Loading branch information
zulfaqar-azmi-t4 committed Nov 10, 2023
1 parent 3bd4df7 commit 79252bb
Showing 1 changed file with 17 additions and 26 deletions.
43 changes: 17 additions & 26 deletions planning/behavior_path_planner/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,15 @@ To check the scene module's transition, i.e.: registered, approved and candidate

### Output

| Name | Type | Description | QoS |
| :--------------------------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | --- |
| ~/output/path | `autoware_auto_planning_msgs::msg::PathWithLaneId` | the path generated by modules. | |
| ~/output/turn_indicators_cmd | `autoware_auto_vehicle_msgs::msg::TurnIndicatorsCommand` | turn indicators command. | |
| ~/output/hazard_lights_cmd | `tier4_planning_msgs::msg::PathChangeModuleArray` | hazard lights command. | |
| ~/output/turn_indicators_cmd | `autoware_auto_vehicle_msgs::msg::TurnIndicatorsCommand` | turn indicators command. | |
| ~/output/path_candidate | `autoware_auto_planning_msgs::msg::Path` | the path the module is about to take. to be executed as soon as external approval is obtained. | |
| ~/output/ready_module | `tier4_planning_msgs::msg::PathChangeModule` | (for remote control) modules that are ready to be executed. | |
| ~/output/running_modules | `tier4_planning_msgs::msg::PathChangeModuleArray` | (for remote control) current running module. | |
| Name | Type | Description | QoS Durability |
| :--------------------------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | ----------------- |
| ~/output/path | `autoware_auto_planning_msgs::msg::PathWithLaneId` | the path generated by modules. | `volatile` |
| ~/output/turn_indicators_cmd | `autoware_auto_vehicle_msgs::msg::TurnIndicatorsCommand` | turn indicators command. | `volatile` |
| ~/output/hazard_lights_cmd | `tier4_planning_msgs::msg::PathChangeModuleArray` | hazard lights command. | `volatile` |
| ~/output/modified_goal | `autoware_planning_msgs::msg::PoseWithUuidStamped` | output modified goal commands. | `transient_local` |
| ~/output/path_candidate | `autoware_auto_planning_msgs::msg::Path` | the path the module is about to take. to be executed as soon as external approval is obtained. | `volatile` |
| ~/output/ready_module | `tier4_planning_msgs::msg::PathChangeModule` | (for remote control) modules that are ready to be executed. | `volatile` |
| ~/output/running_modules | `tier4_planning_msgs::msg::PathChangeModuleArray` | (for remote control) current running module. | `volatile` |

## How to enable or disable the modules

Expand Down Expand Up @@ -145,30 +145,21 @@ The `TurnIndicatorsCommand` message structure has a command field that can take

For more in-depth information, refer to [Turn Signal Design](./docs/behavior_path_planner_turn_signal_design.md) document.

Click for details.
## Generating Shifted Path

### Shifted path generation logic
The Behavior Path Planner uses a sophisticated methodology for path generation in autonomous vehicle navigation, particularly focusing on maneuvers like lane changes and avoidance. At the core of this design is the smooth lateral shifting of the reference path, achieved through a constant-jerk profile. This approach ensures a consistent rate of change in acceleration, facilitating smooth transitions and minimizing abrupt changes in lateral dynamics, crucial for passenger comfort and safety.

Some modules have to generate shifted path from reference path, then shift path generation logic is implemented as library **path shifter**. **path shifter** takes a reference path and shift lines and output a shifted path.
The design involves complex mathematical formulations for calculating the lateral shift of the vehicle's path over time. These calculations include determining lateral displacement, velocity, and acceleration, while considering the vehicle's lateral acceleration and velocity limits. This is essential for ensuring that the vehicle's movements remain safe and manageable.

```c++
struct ShiftLine
{
Pose start{}; // shift start point in absolute coordinate
Pose end{}; // shift start point in absolute coordinate
The `ShiftLine` struct (see [here](https://github.com/autowarefoundation/autoware.universe/blob/9000f430c937764c14e43109539302f1f878ed70/planning/behavior_path_planner/include/behavior_path_planner/utils/path_shifter/path_shifter.hpp#L35-L48) for the actual data structure) is utilized to represent points along the path where the lateral shift starts and ends. It includes details like the start and end points in absolute coordinates, the relative shift lengths at these points compared to the reference path, and the associated indexes on the reference path. This struct is integral to managing the path shifts, as it allows the path planner to dynamically adjust the trajectory based on the vehicle's current position and planned maneuver.

// relative shift length at the start point related to the reference path
double start_shift_length{};
Furthermore, the design and its implementation incorporate various equations and mathematical models to calculate essential parameters for the path shift. These include the total distance of lateral shift, the maximum allowable lateral acceleration and jerk, and the total time required for the shift. Practical considerations are also noted, such as simplifying assumptions in the absence of a specific time interval for most lane change and avoidance cases.

// relative shift length at the end point related to the reference path
double end_shift_length{};
The shifted path generation logic allows behavior path planner to dynamically generate safe and efficient paths, precisely controlling the vehicle’s lateral movements to ensure smooth execution of lane changes and avoidance maneuvers. This careful planning and execution adhere to the vehicle's dynamic capabilities and safety constraints, maximizing efficiency and safety in autonomous vehicle navigation.

size_t start_idx{}; // associated start-point index for the reference path
size_t end_idx{}; // associated end-point index for the reference path
};
```
!!! note

Click [here](./docs/behavior_path_planner_path_generation_design.md) for details.
If you're a math lover, refer to [Path Generation Design](./docs/behavior_path_planner_path_generation_design.md) for the nitty-gritty.

## References / External links

Expand Down

0 comments on commit 79252bb

Please sign in to comment.