Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zulfaqar Azmi
- Fumiya Watanabe
- Kyoichi Sugahara
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Takamasa Horibe
- Satoshi Ota
- Kosuke Takeuchi
- Kyoichi Sugahara
- Takayuki Murooka
- Go Sakayori
- Mamoru Sobue
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Takayuki Murooka
- Ryohsuke Mitsudome
Behavior Path Planner
The Behavior Path Planner’s main objective is to significantly enhance the safety of autonomous vehicles by minimizing the risk of accidents. It improves driving efficiency through time conservation and underpins reliability with its rule-based approach. Additionally, it allows users to integrate their own custom behavior modules or use it with different types of vehicles, such as cars, buses, and delivery robots, as well as in various environments, from busy urban streets to open highways.
The module begins by thoroughly analyzing the ego vehicle’s current situation, including its position, speed, and surrounding environment. This analysis leads to essential driving decisions about lane changes or stopping and subsequently generates a path that is both safe and efficient. It considers road geometry, traffic rules, and dynamic conditions while also incorporating obstacle avoidance to respond to static and dynamic obstacles such as other vehicles, pedestrians, or unexpected roadblocks, ensuring safe navigation.
Moreover, the planner responds to the behavior of other traffic participants, predicting their actions and accordingly adjusting the vehicle’s path. This ensures not only the safety of the autonomous vehicle but also contributes to smooth traffic flow. Its adherence to traffic laws, including speed limits and compliance with traffic signals, further guarantees lawful and predictable driving behavior. The planner is also designed to minimize sudden or abrupt maneuvers, aiming for a comfortable and natural driving experience.
!!! note
The [Planning Component Design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) documentation outlines the foundational philosophy guiding the design and future development of the Behavior Path Planner module. We strongly encourage readers to consult this document to understand the rationale behind its current configuration and the direction of its ongoing development.
Purpose / Use Cases
Essentially, the module has three primary responsibilities:
- Creating a path based on the traffic situation.
- Generating drivable area, i.e. the area within which the vehicle can maneuver.
- Generating turn signal commands to be relayed to the vehicle interface.
Features
Supported Scene Modules
Behavior Path Planner has the following scene modules
Name | Description | Details |
---|---|---|
Lane Following | This module generates a reference path from lanelet centerline. | LINK |
Static Obstacle Avoidance | This module generates an avoidance path when there are objects that should be avoided. | LINK |
Dynamic Obstacle Avoidance | WIP | LINK |
Avoidance By Lane Change | This module generates a lane change path when there are objects that should be avoided. | LINK |
Lane Change | This module is performed when it is necessary and a collision check with other vehicles is cleared. | LINK |
External Lane Change | WIP | LINK |
Goal Planner | This module is performed when the ego vehicle is in a driving lane and the goal is in the shoulder lane. The ego vehicle will stop at the goal. | LINK |
Start Planner | This module is performed when the ego vehicle is stationary and the footprint of the ego vehicle is included in the shoulder lane. This module ends when the ego vehicle merges into the road. | LINK |
Side Shift | This module shifts the path to the left or right based on external instructions, intended for remote control applications. | LINK |
!!! Note
Click on the following images to view videos of their execution
<div align="center">
<table>
<tr>
<td><img src="./image/supported_module_lane_following.svg" alt="Lane Following Module" width="300"></td>
<td><a href="https://www.youtube.com/watch?v=A_V9yvfKZ4E"><img src="./image/supported_module_avoidance.svg" alt="Avoidance Module" width="300"></a></td>
<td><img src="./image/supported_module_avoidance_by_lane_change.svg" alt="Avoidance by Lane Change Module" width="300"></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=0jRDGQ84cD4"><img src="./image/supported_module_lane_change.svg" alt="Lane Change Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=xOjnPqoHup4"><img src="./image/supported_module_start_planner.svg" alt="Start Planner Module" width="300"></a></td>
<td><a href="https://www.youtube.com/watch?v=ornbzkWxRWU"><img src="./image/supported_module_goal_planner.svg" alt="Goal Planner Module" width="300"></a></td>
</tr>
</table>
</div>
!!! Note
Users can refer to [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module
All scene modules are implemented by inheriting the base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is a work in progress (WIP).
Planner Manager
The Planner Manager’s responsibilities include:
- Activating the relevant scene module in response to the specific situation faced by the autonomous vehicle. For example, when a parked vehicle blocks the ego vehicle’s driving lane, the manager would engage the avoidance module.
- Managing the execution order when multiple modules are running simultaneously. For instance, if both the lane-changing and avoidance modules are operational, the manager decides which should take precedence.
- Merging paths from multiple modules when they are activated simultaneously and each generates its own path, thereby creating a single functional path.
!!! note
To check the scene module's transition – i.e., registered, approved and candidate modules – set `verbose: true` in the [Behavior Path Planner configuration file](https://github.com/autowarefoundation/autoware_launch/blob/0cd5d891a36ac34a32a417205905c109f2bafe7b/autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml#L3).

!!! note
For more in-depth information, refer to the [Manager design](./docs/behavior_path_planner_manager_design.md) document.
Inputs / Outputs / API
Input
Name | Required? | Type | Description |
---|---|---|---|
~/input/odometry | ○ | nav_msgs::msg::Odometry |
For ego velocity |
~/input/accel | ○ | geometry_msgs::msg::AccelWithCovarianceStamped |
For ego acceleration |
~/input/objects | ○ | autoware_perception_msgs::msg::PredictedObjects |
Dynamic objects from the perception module |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
Occupancy grid map from the perception module. This is used for only the Goal Planner module |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficLightGroupArray |
Traffic signal information from the perception module |
~/input/vector_map | ○ | autoware_map_msgs::msg::LaneletMapBin |
Vector map information |
~/input/route | ○ | autoware_planning_msgs::msg::LaneletRoute |
Current route from start to goal |
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_planner
0.47.0 (2025-08-11)
- fix(behavior_path_planner): resample the path before generating the drivable area (#10989)
- Contributors: Maxime CLEMENT
0.46.0 (2025-06-20)
-
Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
-
chore(default_adapi): rename package (#10756)
-
feat(hazard_lights_selector): add a hazard lights selector package (#10692) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix(lane_change, behavior_path_planner): fix failure to do lane change (#10694)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- set initial state of LC module to waiting approval, update RTC status when no valid path
- store deleted modules ptrs in vector
- revert unnecessary changes
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix format
* Update planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>> Co-authored-by: GitHub Action <<action@github.com>> Co-authored-by: Mamoru Sobue <<mamoru.sobue@tier4.jp>>
-
fix(planning): fix links in documentations (#10704)
- fix(planning): fix links in documentations
* fix pre-commit ---------
-
feat(autoware_behavior_path_bidirectional_traffic_module): add a functionality for bidirectional traffic (#10394)
- add bidirectional traffic module
- first version
- add virtual wall
- WIP
- apply new message type
- revert autoware_trajectory change
- WIP
- developping...
- fix bug
- update module
- remove stopping in BackToNormalLane mode
- fix bug maybe
- tidy
- add document
- rename images
- add test, tidy.
- catch up with latest branch
- fix
- style(pre-commit): autofix
- update
- downsizing svg files
- fix
- fix
- tidy
* fix
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Makoto Kurihara, TaikiYamada4, Takagi, Isamu, Yukinari Hisaki, Yuxuan Liu, mkquda
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/behavior_path_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_path_planner_launch_modules
- behavior_path_config_path
- behavior_path_planner_common_param_path
- behavior_path_planner_scene_module_manager_param_path
- behavior_path_planner_side_shift_module_param_path
- behavior_path_planner_avoidance_module_param_path
- behavior_path_planner_avoidance_by_lc_module_param_path
- behavior_path_planner_dynamic_avoidance_module_param_path
- behavior_path_planner_lane_change_module_param_path
- behavior_path_planner_goal_planner_module_param_path
- behavior_path_planner_start_planner_module_param_path
- behavior_path_planner_bidirectional_traffic_module_param_path
- behavior_path_planner_sampling_planner_module_param_path
- behavior_path_planner_drivable_area_expansion_param_path