Skip to content

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".

autoware_planning_validator

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
  • 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

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/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

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

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.rate_th double max valid steering rate along the trajectory [rad/s] 10.0
validity_checks.steering.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