Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]
Messages
Services
Plugins
Recent questions tagged autoware_minimum_rule_based_planner at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takumi Odashima
- Hayate Sugahara
- Yuki Takagi
- Alqudah Mohammad
- Takayuki Murooka
Authors
autoware_minimum_rule_based_planner
Overview
A minimum rule-based trajectory planner that generates safe and feasible trajectories for autonomous driving. It follows the planned route by constructing trajectories from lanelet centerline and applies multi-stage optimization for geometric smoothness, velocity profiles, and obstacle avoidance.
Features
- Centerline-based path planning: Generates paths along lanelet centerline from the HD map, extending backward and forward from the ego vehicle’s position
- Smooth goal connection: Refines the path near the goal pose for smooth stopping
- Path shifting: Shifts the centerline path to start from the ego vehicle’s current pose, using curvature-aware shift distance calculation based on ego velocity and lateral acceleration limits
- Trajectory smoothing: Applies an Elastic Band smoother for geometric smoothing via a plugin interface
- Trajectory modification: Applies modifier plugins (e.g., obstacle stop) for safety modifications
- Velocity optimization: Computes a jerk-filtered velocity profile respecting constraints on acceleration, jerk, and lateral acceleration
-
Test mode: Supports bypassing path planning by directly receiving a
PathWithLaneIdtopic
Inputs / Outputs
Inputs
| Topic | Type | Description |
|---|---|---|
~/input/route |
LaneletRoute |
Planned route |
~/input/vector_map |
LaneletMapBin |
HD map |
~/input/odometry |
Odometry |
Ego pose and velocity |
~/input/acceleration |
AccelWithCovarianceStamped |
Ego acceleration |
~/input/objects |
PredictedObjects |
Surrounding obstacles |
~/input/test/path_with_lane_id |
PathWithLaneId |
Test mode: bypasses path planning |
Outputs
| Topic | Type | Description |
|---|---|---|
~/output/candidate_trajectories |
CandidateTrajectories |
Planned trajectory |
~/debug/path_with_lane_id |
PathWithLaneId |
Debug: planned path |
~/debug/trajectory |
Trajectory |
Debug: final output trajectory |
~/debug/shifted_trajectory |
Trajectory |
Debug: trajectory after path shifting |
~/debug/optimizer/{name}/trajectory |
Trajectory |
Debug: trajectory after each optimizer plugin |
~/debug/modifier/{name}/trajectory |
Trajectory |
Debug: trajectory after each modifier plugin |
~/debug/processing_time_detail_ms |
ProcessingTimeDetail |
Debug: processing time breakdown |
Parameters
{{ json_to_markdown(“planning/autoware_minimum_rule_based_planner/schema/minimum_rule_based_planner.schema.json”) }}
Parameters can be set via YAML configuration files in the config/ directory.
Jerk-filtered smoother parameters are defined in config/velocity_smoother/jerk_filtered_smoother.param.yaml.
EB smoother parameters are defined in config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml.
Changelog for package autoware_minimum_rule_based_planner
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
chore(autoware_trajectory_processor)!: rename to autoware_trajectory_modifier (#13389) rename processor -> modifier
-
feat(trajectory_modifier, minimum_rule_based_planner): integrate semseg pointcloud into modifier and backup planner modules (#13265)
- fix get_nearest_object_collision function to return distance to projected collision point instead of didistance to initial object state
- modify get_object_polygon lambda to simply polygon expansion for shape types other than POLYGON
- fix format
- refactor get_predicted_obj_pose_at_time() to use highest confidence non empty predicted path
- support new perception pointcloud interface using point type PointXYZCPE, and update pointcloud processing code in modifier and backup planner
- Switch obstacle-stop point type from pcl::PointXYZ to PointXYZCPE
- Filter input points by configurable target class labels (class_id) and axis-aligned range/height bounds
- Remove voxel-grid downsampling, Euclidean clustering, and convex-hull extraction from the obstacle-stop PCD pipeline
- Replace PCL CropBox / transform_pointcloud usage with manual x/y/z filtering and transform (PointXYZCPE has no PCL .data member)
- Add PointCloudClassification -> ObjectType mapping for semantic labels
- Replace voxel_grid_filter / clustering params with pointcloud.target_types in config, parameter structs, and schemas for both packages
- Default target_types to hazard, structure, and vegetation
- Add autoware_point_types dependency to trajectory_modifier
- Update trajectory_modifier obstacle-stop integration test params for the simplified filter path
- Share the simplified PointCloudFilter path with minimum_rule_based_planner obstacle_stop
- align PCD crop and clean up cluster debug leftovers
- Match MRBP obstacle-stop crop AABB to trajectory_modifier using std::minmax and a 1.0 m buffer so inverted corners after yaw do not empty the crop box
- Remove dead cluster_points debug path after clustering removal
- Publish filtered_points from MRBP obstacle_stop and update debug text to filtered -> target in both packages
- preserve PointXYZCPE fields in obstacle tracker
- Store full PointXYZCPE in PersistentPoint instead of xyz-only geometry_msgs positions
- Keep class_id, probability, and entropy when emitting active tracked points
- clean up code
- filter surround obstacle pointclouds by type and range
- Parse PointXYZCPE clouds in surround_obstacle_stop and keep only configured semantic labels before proximity checks
- Crop to the ego footprint expanded by front/side/back thresholds and hysteresis, then convert to PointXYZ for ProximityChecker
- Add target_objects.pointcloud params (default hazard/structure/vegetation) to config, parameter structs, and schemas in both packages
- Allow unknown labels in trajectory_modifier surround integration tests so XYZ-only fixtures still exercise the PCD path
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/config/minimum_rule_based_planner.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_minimum_rule_based_planner/param/minimum_rule_based_planner_parameters.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/config/trajectory_modifier.param.yaml Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
* Update planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/surround_obstacle_stop.cpp Co-authored-by: Kotaro Uetake <<60615504+ktro2828@users.noreply.github.com>>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/minimum_rule_based_planner.launch.xml
-
- common_param_path [default: $(find-pkg-share autoware_core_planning)/config/common.param.yaml]
- minimum_rule_base_planner_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/minimum_rule_based_planner.param.yaml]
- minimum_rule_base_planner_elastic_band_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/trajectory_optimizer_plugins/elastic_band_smoother.param.yaml]
- minimum_rule_base_planner_jerk_filtered_smoother_param_path [default: $(find-pkg-share autoware_minimum_rule_based_planner)/config/velocity_smoother/jerk_filtered_smoother.param.yaml]
- input_route [default: ~/input/route]
- input_vector_map [default: ~/input/vector_map]
- input_odometry [default: ~/input/odometry]
- input_acceleration [default: ~/input/acceleration]
- input_objects [default: ~/input/objects]
- input_pointcloud [default: ~/input/pointcloud]
- output_candidate_trajectories [default: ~/output/candidate_trajectories]