Package Summary
Tags | No category tags. |
Version | 0.44.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-04-25 |
Dev Status | UNKNOWN |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Takamasa Horibe
- Kosuke Takeuchi
- Kyoichi Sugahara
- Alqudah Mohammad
Authors
- Takamasa Horibe
- Yutaka Shimizu
Planning Validator
The autoware_planning_validator
is a module that checks the validity of a trajectory before it is published. The status of the validation can be viewed in the /diagnostics
and /validation_status
topics. When an invalid trajectory is detected, the autoware_planning_validator
will process the trajectory following the selected option: “0. publish the trajectory as it is”, “1. stop publishing the trajectory”, “2. publish the last validated trajectory”.
Supported features
The following features are supported for trajectory validation and can have thresholds set by parameters:
- Invalid field : e.g. Inf, Nan
- Trajectory points interval : invalid if any of the distance of trajectory points is too large
- Curvature : invalid if the trajectory has too sharp turns that is not feasible for the given vehicle kinematics
- Relative angle : invalid if the yaw angle changes too fast in the sequence of trajectory points
-
Lateral acceleration : invalid if the expected lateral acceleration/deceleration is too large. Lateral acceleration is calculated using the formula:
\[a_{lat} = v_{lon}^2 * \kappa\]Where $v_{lon}$ is longitudinal velocity and $\kappa$ is curvature. Since the acceleration embedded in path points is perpendicular to the derived lateral acceleration, projections are not considered. The velocity and acceleration assigned to each point are directed toward the next path point.
-
Lateral jerk : invalid if the rate of change of lateral acceleration is too large. Lateral jerk is calculated using the formula:
\[j_{lat} = v_{lon}^3 * \frac{d\kappa}{ds} + 3 * v_{lon}^2 * a_{lon} * \kappa\]Where $v_{lon}$ is longitudinal velocity, $\kappa$ is curvature, $a_{lon}$ is longitudinal acceleration, and $\frac{d\kappa}{ds}$ is the rate of curvature change with respect to distance. In this implementation, the curvature change ($\frac{d\kappa}{ds}$) is not considered, simplifying the calculation to only the second term. The lateral jerk represents how quickly the lateral acceleration changes, which affects ride comfort and vehicle stability.
- Longitudinal acceleration/deceleration : invalid if the acceleration/deceleration in the trajectory point is too large
- Steering angle : invalid if the expected steering value is too large estimated from trajectory curvature
- Steering angle rate : invalid if the expected steering rate value is too large
- Velocity deviation : invalid if the planning velocity is too far from the ego velocity
- Distance deviation : invalid if the ego is too far from the trajectory
- Longitudinal distance deviation : invalid if the trajectory is too far from ego in longitudinal direction
- Forward trajectory length : invalid if the trajectory length is not enough to stop within a given deceleration
- Yaw difference : invalid if the difference between the ego yaw and closest trajectory yaw is too large
- Trajectory Shift : invalid if the lat./long. distance between two consecutive trajectories near the Ego exceed the thresholds.
The following features are to be implemented.
- (TODO) TTC calculation : invalid if the expected time-to-collision is too short on the trajectory
Inputs/Outputs
Inputs
The autoware_planning_validator
takes in the following inputs:
Name | Type | Description |
---|---|---|
~/input/kinematics |
nav_msgs/Odometry | ego pose and twist |
~/input/acceleration |
geometry_msgs/AccelWithCovarianceStamped | current acceleration of the ego vehicle |
~/input/trajectory |
autoware_planning_msgs/Trajectory | target trajectory to be validated in this node |
Outputs
It outputs the following:
Name | Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/Trajectory | validated trajectory |
~/output/validation_status |
planning_validator/PlanningValidatorStatus | validator status to inform the reason why the trajectory is valid/invalid |
/diagnostics |
diagnostic_msgs/DiagnosticStatus | diagnostics to report errors |
Parameters
The following parameters can be set for the autoware_planning_validator
:
System parameters
Name | Type | Description | Default value |
---|---|---|---|
handling_type.noncritical |
int | set the handling type for noncritical invalid trajectory. 0: publish invalid trajectory as it is, 1: stop publishing the trajectory, 2: publish last valid trajectory. |
0 |
handling_type.critical |
int | set the handling type for critical invalid trajectory. 0: publish the trajectory even if it is invalid, 1: stop publishing the trajectory, 2: publish the last validated trajectory. |
0 |
publish_diag |
bool | if true, diagnostics msg is published. | true |
diag_error_count_threshold |
int | Number of consecutive invalid trajectories to set the Diag to ERROR. (Fe.g, threshold = 1 means, even if the trajectory is invalid, the Diag will not be ERROR if the next trajectory is valid.) | 0 |
display_on_terminal |
bool | show error msg on terminal | true |
enable_soft_stop_on_prev_traj |
bool | if true, and handling type is 2: publish last valid trajectory , the soft stop is applied instead of using mrm emergency stop. |
true |
soft_stop_deceleration |
double | deceleration value to be used for soft stop action. | -1.0 |
soft_stop_jerk_lim |
double | jerk limit value to be used for soft stop action. | 0.3 |
Algorithm parameters
Latency Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.latency.enable |
bool | flag to enable/disable latency validation check | true |
validity_checks.latency.threshold |
double | max valid value for the age of the trajectory msg [s] | 1.0 |
validity_checks.latency.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Interval Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.interval.enable |
bool | flag to enable/disable interval validation check | true |
validity_checks.interval.threshold |
double | max valid distance between two consecutive trajectory points [m] | 100.0 |
validity_checks.interval.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Curvature Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.curvature.enable |
bool | flag to enable/disable curvature validation check | true |
validity_checks.curvature.threshold |
double | max valid value for the trajectory curvature [1/m] | 2.0 |
validity_checks.curvature.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Relative Angle Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.relative_angle.enable |
bool | flag to enable/disable relative angle validation check | true |
validity_checks.relative_angle.threshold |
double | max valid angle difference between two consecutive trajectory points [rad] | 2.0 |
validity_checks.relative_angle.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Acceleration Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.acceleration.enable |
bool | flag to enable/disable acceleration validation check | true |
validity_checks.acceleration.lateral_th |
double | max valid value for the lateral acceleration along the trajectory [m/ss] | 9.8 |
validity_checks.acceleration.longitudinal_max_th |
double | max valid value for the longitudinal acceleration along the trajectory [m/ss] | 9.8 |
validity_checks.acceleration.longitudinal_min_th |
double | min valid value for the longitudinal acceleration along the trajectory [m/ss] | -9.8 |
validity_checks.acceleration.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Lateral Jerk Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.lateral_jerk.enable |
bool | flag to enable/disable lateral jerk validation check | true |
validity_checks.lateral_jerk.threshold |
double | max valid value for the lateral jerk along the trajectory [m/sss] | 7.0 |
validity_checks.lateral_jerk.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Steering Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.steering.enable |
bool | flag to enable/disable steering validation check | true |
validity_checks.steering.threshold |
double | max valid steering value along the trajectory [rad] | 1.414 |
validity_checks.steering.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Steering Rate Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.steering_rate.enable |
bool | flag to enable/disable steering rate validation check | true |
validity_checks.steering_rate.threshold |
double | max valid steering rate along the trajectory [rad/s] | 10.0 |
validity_checks.steering_rate.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Deviation Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.deviation.enable |
bool | flag to enable/disable deviation validation check | true |
validity_checks.deviation.velocity_th |
double | max valid velocity deviation between ego and nearest trajectory point [m/s] | 100.0 |
validity_checks.deviation.distance_th |
double | max valid euclidean distance between ego and nearest trajectory point [m] | 100.0 |
validity_checks.deviation.lon_distance_th |
double | max valid longitudinal distance between ego and nearest trajectory point [m] | 2.0 |
validity_checks.deviation.yaw_th |
double | max valid yaw deviation between ego and nearest trajectory point [rad] | 1.5708 |
validity_checks.deviation.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Forward Trajectory Length Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.forward_trajectory_length.enable |
bool | flag to enable/disable latency validation check | true |
validity_checks.forward_trajectory_length.acceleration |
double | acceleration value used to calculate required trajectory length. [m/ss] | -5.0 |
validity_checks.forward_trajectory_length.margin |
double | margin of the required length not to raise an error when ego slightly exceeds the end point. [m] | 2.0 |
validity_checks.forward_trajectory_length.is_critical |
bool | if true, will use handling type specified for critical checks | false |
Trajectory Shift Check
Name | Type | Description | Default value |
---|---|---|---|
validity_checks.trajectory_shift.enable |
bool | flag to enable/disable trajectory shift validation check | true |
validity_checks.trajectory_shift.lat_shift_th |
double | max valid lateral distance between two consecutive trajectories (measured at nearest points to ego) [m] | 0.5 |
validity_checks.trajectory_shift.forward_shift_th |
double | max valid Longitudinal distance between two consecutive trajectories (measured at nearest point to ego) [m] | 1.0 |
validity_checks.trajectory_shift.backward_shift_th |
double | min valid longitudinal distance between two consecutive trajectories (measured at nearest point to ego) [m] | 0.1 |
validity_checks.trajectory_shift.is_critical |
bool | if true, will use handling type specified for critical checks | true |
Changelog for package autoware_planning_validator
0.44.0 (2025-04-18)
- Merge remote-tracking branch 'origin/main' into humble
- build(autoware_planning_validator): fix missing angles dependency (#10479)
- refactor(planning_validator): separate validation check for
steering and steering rate
(#10438)
- feat(planning_validator): refactor steering validation parameters and add steering_rate check
- fix(planning_validator): enable validity checks by default and initialize parameters
- feat(planning_validator): add steering rate validation parameters to README
* feat(planning_validator): add steering rate validity checks to node options ---------
- chore(autoware_planning_validator): add new maintainers to planning_validator (#10421) (autoware_planning_validator): add new maintainers to package.xml
- fix(planning): apply THROTTLE to frequent log (#10419)
- refactor(planning_validator): restructure planning validator
configuration
(#10401)
- refactor planning validator parameters
- check enable flag for all validity checks
- add missing parameters
- add debug markers and clean up code
- update planning validator readme
- update planning validator test
- properly set is_critical_error_ flag for all checks
* Update planning/autoware_planning_validator/include/autoware/planning_validator/parameters.hpp Co-authored-by: Satoshi OTA <<44889564+satoshi-ota@users.noreply.github.com>>
- run pre-commit checks
- fix cherry-pick errors
* remove unnecessary cherry-pick changes ---------Co-authored-by: Satoshi OTA <<44889564+satoshi-ota@users.noreply.github.com>>
- feat(planning_validator): improve lateral acc calculation
(#10385)
- feat: add functions to calculate interval distance and lateral acceleration
- refactor: rename array parameters to vector for clarity
* fix: simplify lateral acceleration calculation using std::hypot ---------
- Contributors: Esteve Fernandez, Kyoichi Sugahara, Ryohsuke Mitsudome, Takayuki Murooka, mkquda
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- feat: adaption to ROS nodes guidelines about directory structure (#10268)
- feat(planning_validator): add yaw deviation metric (#10258)
- feat(planning_validator): add diag to check planning component
latency
(#10241)
- feat(planning_validator): add diag to check planning component latency
- fix: relax threshold
- fix: lacking param
- fix: relax threshold
- fix: relax threshold
* fix: add time stamp ---------
- Contributors: Hayato Mizushima, Maxime CLEMENT, NorahXiong, Satoshi OTA, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- feat(planning_test_manager): abstract message-specific functions
(#9882)
- abstract message-specific functions
- include necessary header
- adapt velocity_smoother to new test manager
- adapt behavior_velocity_planner to new test manager
- adapt path_optimizer to new test manager
- fix output subscription
- adapt behavior_path_planner to new test manager
- adapt scenario_selector to new test manager
- adapt freespace_planner to new test manager
- adapt planning_validator to new test manager
- adapt obstacle_stop_planner to new test manager
- adapt obstacle_cruise_planner to new test manager
- disable test for freespace_planner
- adapt behavior_velocity_crosswalk_module to new test manager
- adapt behavior_path_lane_change_module to new test manager
- adapt behavior_path_avoidance_by_lane_change_module to new test manager
- adapt behavior_path_dynamic_obstacle_avoidance_module to new test manager
- adapt behavior_path_external_request_lane_change_module to new test manager
- adapt behavior_path_side_shift_module to new test manager
- adapt behavior_path_static_obstacle_avoidance_module to new test manager
- adapt path_smoother to new test manager
- adapt behavior_velocity_blind_spot_module to new test manager
- adapt behavior_velocity_detection_area_module to new test manager
- adapt behavior_velocity_intersection_module to new test manager
- adapt behavior_velocity_no_stopping_area_module to new test manager
- adapt behavior_velocity_run_out_module to new test manager
- adapt behavior_velocity_stop_line_module to new test manager
- adapt behavior_velocity_traffic_light_module to new test manager
- adapt behavior_velocity_virtual_traffic_light_module to new test manager
- adapt behavior_velocity_walkway_module to new test manager
- adapt motion_velocity_planner_node_universe to new test manager
- include necessary headers
* Odometries -> Odometry ---------Co-authored-by: Takayuki Murooka <<takayuki5168@gmail.com>>
- Contributors: Fumiya Watanabe, Mitsuhiro Sakamoto, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_planning_validator)!: tier4_debug_msgs changed to autoware_internal_debug_msgs in autoware_planning_validator (#9911) feat: tier4_debug_msgs changed to autoware_internal_debug_msgs in files planning/autoware_planning_validator
- Contributors: Fumiya Watanabe, Vishal Chauhan
0.40.0 (2024-12-12)
- Merge branch 'main' into release-0.40.0
- Revert "chore(package.xml): bump version to 0.39.0 (#9587)" This reverts commit c9f0f2688c57b0f657f5c1f28f036a970682e7f5.
- fix: fix ticket links in CHANGELOG.rst (#9588)
- chore(package.xml): bump version to 0.39.0
(#9587)
- chore(package.xml): bump version to 0.39.0
- fix: fix ticket links in CHANGELOG.rst
* fix: remove unnecessary diff ---------Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- fix: fix ticket links in CHANGELOG.rst (#9588)
- fix(cpplint): include what you use - planning (#9570)
- 0.39.0
- update changelog
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- chore(package.xml): bump version to 0.38.0
(#9266)
(#9284)
- unify package.xml version to 0.37.0
- remove system_monitor/CHANGELOG.rst
- add changelog
* 0.38.0
- Contributors: Esteve Fernandez, Fumiya Watanabe, M. Fatih Cırıt, Ryohsuke Mitsudome, Yutaka Kondo
0.39.0 (2024-11-25)
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- fix: fix ticket links to point to https://github.com/autowarefoundation/autoware_universe (#9304)
- chore(package.xml): bump version to 0.38.0
(#9266)
(#9284)
- unify package.xml version to 0.37.0
- remove system_monitor/CHANGELOG.rst
- add changelog
* 0.38.0
- Contributors: Esteve Fernandez, Yutaka Kondo
0.38.0 (2024-11-08)
- unify package.xml version to 0.37.0
- fix(autoware_planning_validator): fix unusedFunction (#8646) fix:unusedFunction
- fix(autoware_planning_validator): fix knownConditionTrueFalse (#7817)
- refactor(universe_utils/motion_utils)!: add autoware namespace (#7594)
- refactor(motion_utils)!: add autoware prefix and include dir (#7539) refactor(motion_utils): add autoware prefix and include dir
- feat(autoware_universe_utils)!: rename from tier4_autoware_utils (#7538) Co-authored-by: kosuke55 <<kosuke.tnp@gmail.com>>
- feat(planning_validator): rename to
include/autoware/{package_name}
(#7514)
- feat(planning_validator): rename to include/autoware/{package_name}
* fix
- refactor(test_utils): move to common folder
(#7158)
- Move autoware planning test manager to autoware namespace
- fix package share directory for behavior path planner
- renaming files and directory
- rename variables that has planning_test_utils in its name.
- use autoware namespace for test utils
- move folder to common
- update .pages file
- fix test error
- removed obstacle velocity limiter test artifact
* remove namespace from planning validator, it has using keyword ---------
- refactor(planning_validator)!: rename directory name (#7411) change directory name
- Contributors: Kosuke Takeuchi, Kyoichi Sugahara, Ryuta Kambe, Takayuki Murooka, Yutaka Kondo, Zulfaqar Azmi, kobayu858
0.26.0 (2024-04-03)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
tier4_planning_launch |
Launch files
- launch/invalid_trajectory_publisher.launch.xml
-
- input/trajectory [default: /planning/scenario_planning/velocity_smoother/trajectory]
- output/trajectory [default: /planning/scenario_planning/velocity_smoother/trajectory]
- launch/planning_validator.launch.xml
-
- planning_validator_param_path [default: $(find-pkg-share autoware_planning_validator)/config/planning_validator.param.yaml]
- input_trajectory [default: /planning/scenario_planning/velocity_smoother/trajectory]
- output_trajectory [default: /planning/scenario_planning/trajectory]