Package Summary
| Tags | No category tags. |
| Version | 0.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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.48.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-12-03 |
| 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.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker (#11519)
- feat(turn_signal_decider): add threshold based on distance to lane bound for turning off blinker
- fix default value in readme
- Update readme
* update parameter description ---------
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11544)
- fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points before processing.
- Removed the last point from the input path to avoid zero velocity issues.
- Updated lane ID and longitudinal velocity assignment logic in set_goal to streamline the process. These changes improve the robustness of the path planning by ensuring valid input and clearer handling of velocity data.
- refactor(utils): enhance lanelet handling in path processing
- Introduced a template function to retrieve unique lanelets from a given path, improving modularity and reusability.
- Updated [fillLaneIdsFromMap]{.title-ref} to utilize the new lanelet retrieval function, streamlining lane ID assignment.
- Enhanced [set_goal]{.title-ref} to incorporate the unique lanelets for more accurate lane ID filling. These changes aim to improve the efficiency and clarity of lanelet management within the path planning process.
* refactor(utils): reorder parameters in set_goal function for clarity ---------
- fix(utils): update lane ID assignment in fillLaneIdsFromMap function
* fix(utils): add TODO comment regarding potential segmentation fault in lane ID assignment ---------
-
Revert "fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)" (#11527) This reverts commit 98e1bec71bd6c7e783a5e099887a2cc87a92ce83.
-
fix(goal_planner): correct the lane_id and velocity interpolation logic in smooth_goal_connection (#11508)
- feat(goal_planner): enhance goal refinement with route handler integration
- Updated [set_goal]{.title-ref} and [refinePathForGoal]{.title-ref} functions to include a [route_handler]{.title-ref} parameter for improved path refinement.
- Introduced utility functions to fill lane IDs and longitudinal velocities based on the input path.
- Removed redundant lane ID filling logic to streamline goal setting process. This change aims to enhance the accuracy of goal positioning and path planning by leveraging route information.
- fix(utils): enhance longitudinal velocity handling in fillLongitudinalVelocityFromInputPath
- Added a check to ensure the input path has at least two points
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