Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
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
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Satoshi Ota
- 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_direction
of 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
- Depending on the selected metric (e.g., TTC, RSS), the calculation method and decision logic differ. The chosen metric is computed, and the result is used to determine whether there is a potential collision risk.
-
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.47.0 (2025-08-11)
-
feat(rear_collision_checker): support selecting safety metric from TTC or RSS (#11072)
- fix: return distance to predicted collision point
- refactor: move to utils
- refactor: move to utils
- refactor: generalize function
- feat: selectable metric
- chore: rename variable for readability
* refactor: not use lambda ---------
-
refactor(planning_validator): refactor planning validator configuration and error handling (#11081)
- refactor trajectory check error handling
- define set_diag_status function for each module locally
* update documentation ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
refactor(rear_collision_checker): update parameter structure (#11067)
- refactor(rear_collision_checker): update parameter structure
* chore: remove unused msg type ---------
-
chore(rear_collision_checker): add maintainer (#11069)
-
feat(rear_collision_checker): improve collision detection logic (#10992)
- feat(rear_collision_checker): added a parameter to configure how many seconds ahead to predict collisions
* feat(rear_collision_checker): add parameter to enable collision check for forward obstacles ---------
-
feat(intersection_collision_checker): improve icc debug markers (#10967)
- add DebugData struct
- refactor and publish debug info and markers
- always publish lanelet debug markers
- refactor debug markers code
- remove unused functions
- pass string by reference
- set is_safe flag for rear_collision_checker debug data
- fix for cpp check
* add maintainer ---------
-
feat(intersection_collision_checker): improve feature to reduce false positive occurrence (#10899)
- keep a map of already detected target lanelets
- fix on/off time buffers logic
- add debug marker to visualize colliding object
- use resampled trajectory instead of raw trajectory
- fix overlap index computation
- fix on/off time buffers logic for rear collision checker
- fix planning .pages file, fix format
- update readme
- ignore not moving pcd object
* handle case when object is very close to overlap point ---------
-
feat(planning_validator): improve intersection collision checker implementation (#10839)
- use parameter generator library
- add pointcloud latency compensation
- change msg field name
- add readme file
- add parameters dection to readme
- publish planning factor for intersection_collision_checker
- refactor lanelet selection and filtering
- update readme
- set safety factor array in planning factor
- clean up includes
- publish planning factor for rear collision checker
- fix spelling
- rename variables to avoid shadowing
* Update
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
eigen |
libpcl-all-dev |