Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path
Messages
Services
Plugins
Recent questions tagged behavior_path_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/ieiauto/autodrrt.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
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
Authors
- Takamasa Horibe
- Satoshi Ota
- Fumiya Watanabe
- Zulfaqar Azmi
- Kosuke Takeuchi
- Yutaka Shimizu
- 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 actively interacts with 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 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/v1.0/design/autoware-architecture/planning/) Document 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 following scene modules
Name | Description | Details |
---|---|---|
Lane Following | this module generates reference path from lanelet centerline. | LINK |
Avoidance | this module generates avoidance path when there is objects that should be avoid. | LINK |
Dynamic Avoidance | WIP | LINK |
Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | 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 |
Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | LINK |
Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | LINK |
Side Shift | (for remote control) shift the path to left or right according to an external instruction. | LINK |
!!! Note
click on the following images to view the video 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/v1.0/design/autoware-architecture/planning/#supported-functions) for some additional behavior.
How to add or implement new module?
All scene modules are implemented by inheriting base class scene_module_interface.hpp
.
!!! Warning
The remainder of this subsection is 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 [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_auto_perception_msgs::msg::PredictedObjects |
dynamic objects from perception module. |
~/input/occupancy_grid_map | ○ | nav_msgs::msg::OccupancyGrid |
occupancy grid map from perception module. This is used for only Goal Planner module. |
~/input/traffic_signals | ○ | autoware_perception_msgs::msg::TrafficSignalArray |
traffic signals information from the perception module |
~/input/vector_map | ○ | autoware_auto_mapping_msgs::msg::HADMapBin |
vector map information. |
~/input/route | ○ | autoware_auto_mapping_msgs::msg::LaneletRoute |
current route from start to goal. |
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_drivable_area_expansion_param_path