Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_planner at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Zulfaqar Azmi
- Mamoru Sobue
- Takumi Odashima
Authors
- Taiki Tanaka
- Mamoru Sobue
- Satoshi Ota
- Kyoichi Sugahara
- Kosuke Takeuchi
- Yutaka Shimizu
- Tomohito Ando
- Yukihiro Saito
Behavior Velocity Planner
Overview
behavior_velocity_planner is a planner that adjust velocity based on the traffic rules.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
- Blind Spot
- Crosswalk
- Walkway
- Detection Area
- Intersection
- MergeFromPrivate
- Stop Line
- Virtual Traffic Light
- Traffic Light
- Occlusion Spot
- No Stopping Area
- Speed Bump
When each module plans velocity, it considers based on base_link(center of rear-wheel axis) pose.
So for example, in order to stop at a stop line with the vehicles’ front on the stop line, it calculates base_link position from the distance between base_link to front and modifies path velocity from the base_link position.
Input topics
| Name | Type | Description |
|---|---|---|
~input/path_with_lane_id |
autoware_internal_planning_msgs::msg::PathWithLaneId | path with lane_id |
~input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle velocity |
~input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/compare_map_filtered_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud filtered by compare map. Note that this is used only when the detection method of run out module is Points. |
~input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
Output topics
| Name | Type | Description |
|---|---|---|
~output/path |
autoware_planning_msgs::msg::Path | path to be followed |
~output/stop_reasons |
tier4_planning_msgs::msg::StopReasonArray | reasons that cause the vehicle to stop |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
forward_path_length |
double | forward path length |
backward_path_length |
double | backward path length |
max_accel |
double | (to be a global parameter) max acceleration of the vehicle |
system_delay |
double | (to be a global parameter) delay time until output control command |
delay_response_time |
double | (to be a global parameter) delay time of the vehicle’s response to control commands |
Traffic Light Handling in sim/real
The handling of traffic light information varies depending on the usage. In the below table, the traffic signal topic element for the corresponding lane is denoted as info, and if info is not available, it is denoted as null.
| module \ case |
info is null
|
info is not null
|
|---|---|---|
intersection_occlusion(is_simulation = *) <ul> <li>info is the latest non-null information</li></ul> |
GO(occlusion is ignored) | intersection_occlusion uses the latest non UNKNOWN observation in the queue up to present.<ul><li>If info is GREEN or UNKNOWN, occlusion is cared</li><li>If info is RED or YELLOW, occlusion is ignored(GO) </li> <li> NOTE: Currently timeout is not considered</li> </ul> |
traffic_light(sim, is_simulation = true) <ul> <li>info is current information</li></ul> |
GO | traffic_light uses the perceived traffic light information at present directly. <ul><li>If info is timeout, STOP whatever the color is</li> <li>If info is not timeout, then act according to the color. If info is UNKNOWN, STOP</li></ul> {: rowspan=2} |
traffic_light(real, is_simulation = false) <ul> <li>info is current information</li></ul> |
STOP | ⁠ {: style=”padding:0”} |
crosswalk with Traffic Light(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | <ul> <li>If disable_yield_for_new_stopped_object is true, each sub scene_module ignore newly detected pedestrians after module instantiation.</li> <li>If ignore_with_traffic_light is true, occlusion detection is skipped.</li></ul> |
map_based_prediction(is_simulation = *) <ul> <li>info is current information</li></ul> |
default | If a pedestrian traffic light is<ul> <li>RED, surrounding pedestrians are not predicted.</li> <li>GREEN, stopped pedestrians are not predicted.</li></ul> |
Changelog for package autoware_behavior_velocity_planner
1.1.0 (2025-05-01)
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers (#1114)
* refactor(autoware_behavior_velocity_planner): extract node-agnostic data-ingestion helpers Extract the byte-identical traffic-signal aggregation and velocity-buffer pruning logic that was copy-pasted between the legacy and experimental BehaviorVelocityPlannerNode variants into package-internal, node-agnostic free functions (data_processing::apply_traffic_signals and data_processing::prune_velocity_buffer). Both node variants now call one implementation, removing the duplicated logic from processOdometry/processTrafficSignals. The new free functions are pure transforms over PlannerData fields, which creates a unit-test seam that previously did not exist: the only test was a launch-style smoke test with zero scene plugins. Add gtests asserting the traffic-signal UNKNOWN-keep-last-observation contract (keep prior body, refresh timestamp; first UNKNOWN stored as-is) and the velocity-buffer time pruning (stale-from-back removal, exact-threshold boundary retention, future-stamp negative-time guard). This change is internal-only and behavior-preserving: no public node API, topics, or message types change. Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_behavior_velocity_planner): add <deque> include and bump new-file copyright year Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(planning, bvp): remove unused lanelet2_extension header (#902)
- remove unused lanelet2_extension in bvp modules
* remove unused lanelet2_extension in planning components ---------
-
fix(autoware_behavior_velocity_planner): fix bugprone-narrowing-conversions warnings (#939)
-
chore(bvp): port missing feature in behavior_velocity_planner's experimental version (#892) change tf2_ros to hpp header (616)
-
chore: organize maintainer (#857)
-
chore(planning, misc): remove unused header includes (#840)
-
Contributors: Mamoru Sobue, NorahXiong, Sarun MUKDAPITAK, Satoshi OTA, github-actions
1.7.0 (2026-02-14)
1.6.0 (2025-12-30)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- chore: tf2_ros to hpp headers (#616)
- Contributors: Tim Clephas, github-actions
1.5.0 (2025-11-16)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat: replace [ament_auto_package]{.title-ref} to [autoware_ament_auto_package]{.title-ref} (#700)
- replace ament_auto_package to autoware_ament_auto_package
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat(behavior_velocity_planner and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
Launch files
- launch/behavior_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- behavior_velocity_planner_launch_modules
- behavior_velocity_config_path
- behavior_velocity_smoother_type_param_path
- behavior_velocity_planner_param_path
- behavior_velocity_planner_common_param_path
- behavior_velocity_planner_blind_spot_module_param_path
- behavior_velocity_planner_crosswalk_module_param_path
- behavior_velocity_planner_walkway_module_param_path
- behavior_velocity_planner_detection_area_module_param_path
- behavior_velocity_planner_intersection_module_param_path
- behavior_velocity_planner_roundabout_module_param_path
- behavior_velocity_planner_stop_line_module_param_path
- behavior_velocity_planner_traffic_light_module_param_path
- behavior_velocity_planner_virtual_traffic_light_module_param_path
- behavior_velocity_planner_occlusion_spot_module_param_path
- behavior_velocity_planner_no_stopping_area_module_param_path
- behavior_velocity_planner_speed_bump_module_param_path
- behavior_velocity_planner_no_drivable_lane_module_param_path