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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_trajectory_ranker 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-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
- Zulfaqar Azmi
- Alqudah Mohammad
Authors
- Go Sakayori
Trajectory Ranker
Purpose/Role
This package provides a C++ library that scores candidate trajectories and selects the best one. Ranking combines three independently configurable terms:
-
Safety — penalty from the validator risk level (
RiskLevel) - Source — penalty from the trajectory generator (diffusion vs backup planners)
- Quality — optional metric-plugin evaluation (comfort / progress / consistency)
The library can be embedded into a calling ros node (such as autoware_trajectory_selector) via TrajectoryRankerWrapper.
Architecture
| Component | Role |
|---|---|
TrajectoryRankerWrapper |
Owns parameters, metric Evaluator, and TrajectoryRanker; entry point used by the selector |
TrajectoryRanker |
Applies safety / source / quality penalties and computes the final scalar score |
Evaluator |
Loads and runs quality metric plugins (only when evaluation.enable is true) |
Algorithm Overview
For each call to TrajectoryRanker::process():
-
Safety evaluation (
safety.enable): map each trajectory’sRiskLevelto a penalty viasafety.levels/safety.penalty. -
Source evaluation (
source.enable): map each trajectory’sTrajectorySourceto a penalty viasource.levels/source.penalty. -
Quality evaluation (
evaluation.enable, default off): resample each trajectory relative to ego odometry, run the configured metric plugins, and setquality_penalty = 1 - quality_score. Skipped if route handler or odometry is unavailable. -
Score aggregation:
[
\mathrm{score} = 1 - \frac{
s{\mathrm{safety}}\,p{\mathrm{safety}}
- s{\mathrm{source}}\,p{\mathrm{source}}
- s{\mathrm{eval}}\,p{\mathrm{quality}} }{ s{\mathrm{safety}} + s{\mathrm{source}} + s{\mathrm{eval}} } ] where (s_) are the configured scales and (p__) are the per-trajectory penalties (zero when that term is disabled).
-
Best selection: the trajectory with the highest score is retained as
best_trajectory_infoand used to update trajectory history / previous points for subsequent quality metrics.
Trajectory sources
TrajectorySource |
Typical generator name prefix | Default source level string |
|---|---|---|
DIFFUSION_PLANNER |
DiffusionPlanner_ |
diffusion_planner |
BACKUP_PLANNER_GO |
MinimumRuleBasedPlanner_Go |
backup_planner_go |
BACKUP_PLANNER_STOP |
MinimumRuleBasedPlanner_Stop |
backup_planner_stop |
Source mapping from generator names is performed in the calling node (e.g trajectory_selector_node) before calling the ranker.
Default penalties (from config/trajectory_ranker.param.yaml)
| Term | Levels / order | Penalties | Scale | Enabled by default |
|---|---|---|---|---|
| Safety |
safe, low_caution, high_caution, danger, fatal
|
0.0, 0.1, 0.4, 1.0, 1.0
|
20.0 |
yes |
| Source |
diffusion_planner, backup_planner_go, backup_planner_stop
|
0.0, 0.45, 0.5
|
5.0 |
yes |
| Quality | metric plugins under evaluation.plugin_names
|
derived from metric score | 1.0 |
no |
Quality Metrics
Used only when evaluation.enable is true. Plugins are loaded by Evaluator from evaluation.plugin_names.
| Metric | Type | Description | Class name |
|---|---|---|---|
| TravelDistance | Maximization | Progress along the trajectory | autoware::trajectory_ranker::metrics::TravelDistance |
| LateralAcceleration | Deviation | Lateral acceleration comfort | autoware::trajectory_ranker::metrics::LateralAcceleration |
| LongitudinalJerk | Deviation | Longitudinal jerk smoothness | autoware::trajectory_ranker::metrics::LongitudinalJerk |
| LateralDeviation | Deviation | Deviation from preferred lane centerline | autoware::trajectory_ranker::metrics::LateralDeviation |
| SteeringConsistency | Deviation | Consistency vs previous steering command | autoware::trajectory_ranker::metrics::SteeringConsistency |
| TrajectoryConsistency | Deviation | Consistency vs recent best trajectories | autoware::trajectory_ranker::metrics::TrajectoryConsistency |
- Maximization: higher raw values are better
- Deviation: lower raw values are better
When quality evaluation is enabled, trajectories are resampled to evaluation.sampling_number points at evaluation.sampling_resolution seconds relative to the current ego pose.
Interface
This package is primarily a C++ library consumed by trajectory_selector_node. The selector owns the ROS I/O and passes:
-
RankerInputTrajectories— each entry has aCandidateTrajectory, validatorrisk_level, andTrajectorySource -
RankerContext— odometry, route handler, and generator info (needed for quality metrics and output generator metadata)
Selector-side topics
| Direction | Topic name | Message Type | Description |
|---|---|---|---|
| Publisher | ~/output/scored_trajectories |
autoware_internal_planning_msgs/msg/ScoredCandidateTrajectories |
Scored candidates from the integrated ranker |
Parameters
{{ json_to_markdown(“planning/autoware_trajectory_ranker/schema/trajectory_ranker.schema.json”) }}
Changelog for package autoware_trajectory_ranker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(planning): fix ENABLE_AGNOCAST=1 build and startup of trajectory_selector (#13364)
- fix(trajectory_selector): fix ENABLE_AGNOCAST=1 build
* build(trajectory_ranker): add autoware_agnocast_wrapper_setup to the library target ---------
-
feat(trajectory_ranker): implement and integrate ranker into selector node (#13353)
- feat(trajectory_ranker): implement new ranker module and integrate into selector component (#3208)
- add trajectory_ranker_wrapper framework
- refactor trajectory ranker parameter handling
- implement trajectory_ranker class framework
- implement core ranker logic
- add logic to evaluate trajectories based on risk level
- add logic to evaluate trajectories based on source
- use existing metrics based evaluation to evaluate trajectory quality
- integrate new ranker into trajectory_selector_node
- refactor code
- remove obsolete ranker node
- refactor for debugging
- add flag to enable/disable ranker within selectory node
- fix parameter update logic, cleanup code
- update launch files
- disable quality evaluation by default
- fix topic name
- minor refactor
- output debug to console when best trajectory has low score
- support new backup planner dual go/stop trajectories
- populate generator info of ScoredCandidateTrajectories
- filter out shadow mode metrics before assigning combined trajectory risk level
- update source penalties
- add integration tests for trajectory ranker
- add ranker parameters schema, update readme
- remove simple_trajectory_ranker_node
- remove launch prefix
- pass active_filter_names to validator from wrapper
* add missing includes ---------
- replace rclcpp::Node usage by agnocast_wrapper::Node
- fix selector node tests
* add missing selector config file ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
feat(simple_trajectory_ranker): apply agnocast_wrapper::Node to simple_trajectory_ranker (#13065)
- feat: apply agnocast
- fix; test
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(diffusion_planner,trajectory_ranker,trajectory_adapter): populate turn_indicator field on CandidateTrajectory (#12922)
- add turn_indicator into cantidate trajectory
- rename field
- fix rebase misstake
- changes for turn_indicator topic publisher from adapter
* fix turn_indicators_command timestamp ---------
-
fix(diffusion_planner, trajectory ranker): remove builder pattern (#12944) remove builder pattern
-
Contributors: Kotakku, Ryohsuke Mitsudome, Taekjin LEE, Yutaro Kobayashi, mkquda
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(planning): apply autoware_agnocast_wrapper to diffussion
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_selector |