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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_planning_validator_rear_collision_checker 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-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- kyoichi sugahara
- Maxime Clement
Authors
- Satoshi Ota
Rear Collision Checker
The rear_collision_checker is a plugin module of the autoware_planning_validator node. It validates the planned trajectory by verifying that it does not lead to a collision with other road users (primarily vehicles, but also pedestrian/cyclists/motorcycles) approaching from lateral/rear directions. In particular, it is designed to detect potential rear-end collisions and entrapment risks when the ego vehicle is making a right/left turn or merging into an adjacent lane.
Inner Workings
The module operates by:
-
Identifying conflict lanes
- Uses the current route and lanelet topology to determine lanes that the ego vehicle’s trajectory may intersect with during right/left turns or lane changes.
- Focuses on lanes where vehicles, bicycles, or motorcycles could approach from behind or from a lateral direction, posing a potential rear-end or entrapment risk.
- Considers the
turn_directionof the approaching lanelets to filter out irrelevant lanes.
-
Filtering perception data
- Subscribes to obstacle pointcloud and first filters by the conflict region, keeping only points that fall within relevant spatial bounds.
- Performs clustering on the filtered points to form obstacle candidates.
- Associates clusters with nearby lanelets and computes the nearest face of each obstacle along the lane direction.
- Applies configurable range gates (forward/backward, lateral, height) and basic outlier rejection to discard distant or irrelevant clusters.
-
Estimating motion
- For each selected object, determines its motion relative to the lane direction.
- Estimates speed and direction based on frame-to-frame position changes along the lane’s centerline.
- Maintains a per-lane tracking list to stabilize velocity estimation and reduce noise from perception flicker.
-
Calculating metrics
- The calculation method and decision logic vary based on the selected collision assessment metric (e.g., Time-to-Collision). The module calculates the chosen metric and uses the result to determine if a collision risk exists.
-
Judging collision risk
- Evaluates the selected metric results against predefined thresholds to determine whether a collision is likely.
- Applies hysteresis logic:
-
on_time_buffer: Hazardous state must persist for this duration before marking the trajectory unsafe. -
off_time_buffer: Safe state must persist for this duration before clearing the unsafe flag.
-
- If
check_on_unstoppable=false, the module will skip collision warnings in cases where the ego vehicle cannot realistically stop before the conflict area (to prevent unnecessary alerts when stopping is already infeasible).
Flowchart
WIP
General Parameters
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
on_time_buffer |
[s] | double | Time buffer before enabling detection after a relevant condition is met | 0.5 |
off_time_buffer |
[s] | double | Time buffer before disabling detection after the condition clears | 1.5 |
check_on_unstoppable |
[-] | bool | If true, the module continues collision checking even when the ego vehicle cannot stop before entering a potential collision area, and outputs an ERROR if a collision risk is detected. If false, checking is skipped in such cases to avoid unnecessary warnings. |
false |
Pointcloud Preprocess
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
pointcloud.range.dead_zone |
[m] | double | Distance in front of the ego vehicle ignored for collision detection | 0.3 |
pointcloud.range.buffer |
[m] | double | Additional margin around detection range | 1.0 |
pointcloud.crop_box_filter.x.max |
[m] | double | Maximum X coordinate for cropped detection range | 30.0 |
pointcloud.crop_box_filter.x.min |
[m] | double | Minimum X coordinate for cropped detection range | -100.0 |
pointcloud.crop_box_filter.z.max |
[m] | double | Maximum Z coordinate for cropped detection range | -1.0 |
pointcloud.crop_box_filter.z.min |
[m] | double | Minimum Z coordinate for cropped detection range | 0.3 |
pointcloud.voxel_grid_filter.x |
[m] | double | Voxel grid filter size in X direction | 0.1 |
pointcloud.voxel_grid_filter.y |
[m] | double | Voxel grid filter size in Y direction | 0.1 |
pointcloud.voxel_grid_filter.z |
[m] | double | Voxel grid filter size in Z direction | 0.5 |
pointcloud.clustering.cluster_tolerance |
[m] | double | Maximum distance between points to be considered part of the same cluster | 0.15 |
pointcloud.clustering.min_cluster_height |
[m] | double | Minimum height of a cluster to be considered valid | 0.1 |
pointcloud.clustering.min_cluster_size |
[points] | int | Minimum number of points in a valid cluster | 5 |
pointcloud.clustering.max_cluster_size |
[points] | int | Maximum number of points in a valid cluster | 10000 |
pointcloud.velocity_estimation.observation_time |
[s] | double | Time window used for velocity estimation | 0.3 |
pointcloud.velocity_estimation.max_acceleration |
[m/s^2] | double | Maximum allowed acceleration in velocity estimation | 10.0 |
pointcloud.latency |
[s] | double | Assumed system latency for point cloud processing | 0.3 |
Object Filtering
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
filter.min_velocity |
[m/s] | double | Minimum velocity threshold for objects to be considered moving | 1.0 |
filter.moving_time |
[s] | double | Minimum time duration an object must be moving to be considered as such | 0.5 |
TTC
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
time_to_collision.margin |
[s] | double | Additional margin added to time-to-collision calculation | 2.0 |
Ego Behavior
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
ego.reaction_time |
[s] | double | Reaction time of the ego vehicle | 1.2 |
ego.min_velocity |
[m/s] | double | Minimum considered velocity of the ego vehicle | 1.38 |
ego.max_velocity |
[m/s] | double | Maximum considered velocity of the ego vehicle | 16.6 |
ego.max_acceleration |
[m/s^2] | double | Maximum considered acceleration of the ego vehicle | 1.5 |
ego.max_deceleration |
[m/s^2] | double | Maximum considered deceleration of the ego vehicle (negative value) | -4.0 |
ego.max_positive_jerk |
[m/s^3] | double | Maximum allowed positive jerk for the ego vehicle | 5.0 |
ego.max_negative_jerk |
[m/s^3] | double | Maximum allowed negative jerk for the ego vehicle | -5.0 |
ego.nominal_deceleration |
[m/s^2] | double | Nominal deceleration used for calculations | -1.5 |
ego.nominal_positive_jerk |
[m/s^3] | double | Nominal positive jerk used for calculations | 0.6 |
ego.nominal_negative_jerk |
[m/s^3] | double | Nominal negative jerk used for calculations | -0.6 |
Collision Check For Blind Spot
| Name | Unit | Type | Description | Default value |
|---|---|---|---|---|
blind_spot.lookahead_time |
[s] | double | Lookahead time for blind spot detection | 4.0 |
File truncated at 100 lines see the full file
Changelog for package autoware_planning_validator_rear_collision_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(planning_validator): apply [agnocast_wrapper::Node]{.title-ref} to [planning_validator]{.title-ref} (#12964)
- apply agnocast_wrapper::node
- style(pre-commit): autofix
* fix(autoware_planning_validator): feed stop checker per odometry message Restore the original VehicleStopChecker behavior: subscribe to /localization/kinematic_state and call addTwist() on every odometry message, instead of feeding the latest polled odometry once per trajectory cycle.
- refactor(autoware_planning_validator): drop odometry subscriber comment
- refactor(planning_validator): migrate to polling:: API
- fix(planning_validator): adopt PlanningFactorInterfaceT<Node>
- fix(autoware_planning_validator): launch as a standalone node and fix the agnocast build wiring
- fix(autoware_planning_validator): pass the underlying rclcpp node to the planning test manager
- style(pre-commit): autofix
* refactor(autoware_planning_validator): declare the utils packages it includes and drop the stale comment ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
chore(planning): update package maintainers (#13186)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(planning_validator, control_validator): fix include path for angles header (#13026)
- fix include path for angles header
* add missing package dependency ---------
-
Contributors: Koichi Imai, Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, mkquda
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix: bound int 32 range for rqt_reconfigure older than 1.1.4 (#12349)
-
feat(lanelet2_extension): replace ported lanelet2_extension utilities functions (final) (#12173) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
feat(autoware_lanelet2_extension): replace remaining lanelet2_extension utilities functions - planning component (#12083)
- replace getArcCoordinates in planning component
- replace getCenterlineWithOffset in planning component
- replace getRight/LeftBoundWithOffset in planning component
- replace getExpandedLanelet(s) in planning component
- replace combineLaneletsShape in planning component
- remove log for empty combine_lanelet_opt
* bind reference to optional value ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
Contributors: Sarun MUKDAPITAK, Yuxuan Liu, github-actions
0.50.0 (2026-02-14)
- Merge remote-tracking branch 'origin/main' into humble
- fix(planning_validator_rear_collision_checker): use autoware_utils_geometry type (#11940)
- docs(rear_collision_checker): revise sentence from README. (#11837)
- Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.49.0 (2025-12-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| libpcl-all-dev |