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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_motion_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
- Maxime Clement
- Alqudah Mohammad
- Yutaka Kondo
Authors
- Maxime Clement
Motion Velocity Planner
Overview
motion_velocity_planner is a planner to adjust the trajectory velocity based on the obstacles around the vehicle.
It loads modules as plugins. Please refer to the links listed below for detail on each module.
Each module calculates stop and slow down points to be inserted in the ego trajectory.
These points are assumed to correspond to the base_link frame of the ego vehicle as it follows the trajectory.
This means that to stop before a wall, a stop point is inserted in the trajectory at a distance ahead of the wall equal to the vehicle front offset (wheelbase + front overhang, see the vehicle dimensions.
Input topics
| Name | Type | Description |
|---|---|---|
~/input/trajectory |
autoware_planning_msgs::msg::Trajectory | input trajectory |
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/vehicle_odometry |
nav_msgs::msg::Odometry | vehicle position and velocity |
~/input/accel |
geometry_msgs::msg::AccelWithCovarianceStamped | vehicle acceleration |
~/input/dynamic_objects |
autoware_perception_msgs::msg::PredictedObjects | dynamic objects |
~/input/no_ground_pointcloud |
sensor_msgs::msg::PointCloud2 | obstacle pointcloud |
~/input/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | traffic light states |
~/input/occupancy_grid |
nav_msgs::msg::OccupancyGrid | occupancy grid |
Output topics
| Name | Type | Description |
|---|---|---|
~/output/trajectory |
autoware_planning_msgs::msg::Trajectory | Ego trajectory with updated velocity profile |
~/output/planning_factors/<MODULE_NAME> |
autoware_internal_planning_msgs::msg::PlanningFactorsArray | factors causing change in the ego velocity profile |
Services
| Name | Type | Description |
|---|---|---|
~/service/load_plugin |
autoware_motion_velocity_planner::srv::LoadPlugin | To request loading a plugin |
~/service/unload_plugin |
autoware_motion_velocity_planner::srv::UnloadPlugin | To request unloaded a plugin |
Node parameters
| Parameter | Type | Description |
|---|---|---|
launch_modules |
vector<string> | module names to launch |
In addition, the following parameters should be provided to the node:
- nearest search parameters;
- vehicle info parameters;
- common planning parameters;
- smoother parameters
- Parameters of each plugin that will be loaded.
Changelog for package autoware_motion_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
-
feat(motion_velocity_planner): apply autoware_agnocast_wrapper for CIE (#1187) Switch the motion_velocity_planner node registration from rclcpp_components_register_node to autoware_agnocast_wrapper_register_node (ROS2_EXECUTOR SingleThreadedExecutor, AGNOCAST_EXECUTOR CallbackIsolatedAgnocastExecutor) so the node can be isolated by the agnocast CIE thread configurator.
-
refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions (#1136)
* refactor(autoware_motion_velocity_planner): extract pure node logic into testable free functions Extract three pure pieces of MotionVelocityPlannerNode logic into free functions in an internal header (node_utils.hpp/.cpp), turning the node methods into thin wrappers with no public API change:
- process_traffic_signals: build the raw and last-observed traffic-light maps from a TrafficLightGroupArray, including the UNKNOWN-with-prior carry-over (keep prior body, refresh timestamp).
- resample_trajectory_by_min_interval: the min-interval point decimation previously inlined in generate_trajectory.
- select_pointcloud_transform_source: the TF transform-selection branch (at-stamp / time-zero fallback / none) from process_no_ground_pointcloud, expressed as a pure decision over canTransform results. Add focused unit tests (test_node_utils) covering the UNKNOWN carry-over, empty/single-point/all-close/threshold resampling cases, and the TF fallback/no-transform branches. Behavior preserving. Refs: autowarefoundation/autoware_core#1096
- refactor(autoware_motion_velocity_planner): address review feedback
- node_utils.hpp: include lanelet2_core/Forward.h instead of the heavy primitives/Lanelet.h since only lanelet::Id is needed for the map key (consistent with planner_data.hpp)
- node.cpp: correct the AtTimeZero fallback debug message; the branch is also taken when the stamp is valid but no transform exists at that stamp, so do not claim the pointcloud time is always invalid Refs: autowarefoundation/autoware_core#1096
* refactor(autoware_motion_velocity_planner): inline pointcloud transform-source selection Drop the select_pointcloud_transform_source() extraction per review: the seam captured only a trivial 3-bool decision while the real tf2 coupling (which time to look up, the 0.05s timeout, fallback order and side effects) stayed in the node untested. Inline the decision back into the no-ground-pointcloud handler and remove the PointcloudTransformSource enum and its unit tests. The process_traffic_signals and resample_trajectory_by_min_interval extractions are kept. Refs: autowarefoundation/autoware_core#1096 ---------
-
fix(planning): skip processing empty no_ground_pointcloud to avoid PCL warning spam (#1082)
-
Contributors: Mert Yavuz, Yutaka Kondo, atsushi yano, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
test(autoware_motion_velocity_planner): add unit tests (#518)
- test(autoware_motion_velocity_planner): add unit tests
- style(pre-commit): autofix
- fix(autoware_motion_velocity_planner): adapt tests to current codebase
- Fix service includes: srv moved from autoware_motion_velocity_planner to autoware_internal_planning_msgs
- Sync test configs with production configs (motion_velocity_planner, obstacle_stop, velocity_smoother params diverged significantly)
- Add yaml-cpp link dependency for test target
- Resolve CMakeLists.txt conflict (ament_auto_package rename)
- style(pre-commit): autofix
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libboost-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_planning |
Launch files
- launch/motion_velocity_planner.launch.xml
-
- common_param_path
- vehicle_param_file
- nearest_search_param_path
- motion_velocity_planner_launch_modules
- motion_velocity_config_path
- motion_velocity_planner_param_path
- motion_velocity_planner_param_file [default: $(find-pkg-share autoware_motion_velocity_planner)/config/motion_velocity_planner.param.yaml]