Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_boundary_departure_checker at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Alqudah Mohammad
- Maxime Clement
- Zulfaqar Azmi
Authors
Boundary Departure Checker
1. Introduction
The Boundary Departure Checker is a trajectory validation module designed to prevent the autonomous vehicle from crossing uncrossable road boundaries. It continuously evaluates the ego vehicle’s predicted path and outputs a departure severity status to the planning system to ensure safe lane following.
2. Input and Output
Input
-
Vehicle Information (
vehicle_info): Used to generate geometric footprints and filter boundaries based on the vehicle’s elevation. -
Kinematic State (
/localization/kinematic_state): Provides ego vehicle velocity, used to calculate the minimum physical braking distance. -
Acceleration (
/localization/acceleration): Used alongside velocity to calculate the minimum braking distance. -
Candidate Trajectories (
/planning/generator/concatenated/candidate_trajectories): The predicted paths to be evaluated, requiring accurate time-from-start values. -
Vector Map (
/map/vector_map): The Lanelet2 map used to extract uncrossable boundary locations, such asroad_border.
Output
-
Status: The departure severity classification (
NONE,APPROACHING_DEPARTURE, orCRITICAL_DEPARTURE). - Score: A numerical value used for trajectory cost evaluation.
- Processing Time: Execution time in milliseconds for system monitoring.
- Debug Markers: Visualizations for the ego footprint, boundaries, and geometric projections.
3. What the Module Does
The module evaluates whether the ego vehicle’s predicted trajectory will safely stay within the road boundaries. It splits the vehicle’s footprint into distinct left and right sides to evaluate the environment asymmetrically. By computing the geometric intersection between the vehicle’s predicted footprint and mapped uncrossable boundaries, it classifies the trajectory’s safety based on physical braking limits and predefined time thresholds. It also applies time-based hysteresis to prevent status flickering caused by noisy trajectory predictions.
4. Parameters
The module uses a structured parameter configuration to define thresholds, footprint margins, and buffer times. Below is a high-level representation of the parameter schema:
{{ json_to_markdown(“common/autoware_boundary_departure_checker/schema/boundary_departure_checker.schema.json”) }}
5. Process Overview
- Footprint Generation: The module generates geometric footprints for the ego vehicle at every point along the candidate trajectory. It expands the footprint size using margins to account for localization uncertainty.
-
Boundary Extraction and Filtering: Uncrossable boundaries (e.g.,
road_border) are extracted from the Lanelet2 map and stored in a spatial R-tree. Boundaries significantly above or below the vehicle’s Z-axis height are filtered out to prevent false positives from overpasses. - Distance Calculation: The system calculates the shortest lateral distance from the left and right footprint segments to the nearest filtered boundary.
-
Severity Evaluation: A minimum physical braking distance is dynamically calculated using current speed, acceleration, maximum allowed deceleration, jerk, and brake delay. The departure severity is assigned as follows:
- NONE: The footprint lateral distance is greater than the critical lateral margin.
- APPROACHING: A departure is detected, but it is farther than the braking distance AND the time to departure is greater than the cutoff threshold.
- CRITICAL: A departure is detected within the braking distance OR before the cutoff time expires.
-
Hysteresis Logic: To ensure stability, an ON-Time buffer suppresses the
CRITICALstate until the departure is continuously detected for a set duration. If a collision is imminent, this buffer is bypassed. An OFF-Time buffer ensures the status does not revert toNONEuntil the trajectory is continuously evaluated as safe.
6. Possible Scenarios and Expected Behavior
-
Scenario 1: The ego vehicle’s footprint overlaps with a map boundary that does not have the
road_bordertag (or other defined uncrossable tags).-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 2: The ego vehicle’s footprint does not overlap the defined lateral gap to the
road_border.-
Expected Behavior: Evaluated as safe (
NONE).
-
Expected Behavior: Evaluated as safe (
-
Scenario 3: The footprint overlaps the lateral gap to the
road_border, AND the arc length to the overlap is less than the minimum braking distance, AND the time to reach it is less than the cutoff time.-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 4: The footprint overlaps the lateral gap, and the time to reach the overlap is less than the cutoff time, even if the arc length is greater than the minimum braking distance.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 5: The footprint overlaps the lateral gap, and the arc length to the overlap is less than the minimum braking distance, even if the time to reach the overlap exceeds the cutoff time.
-
Expected Behavior: Evaluated as a departure (
CRITICAL_DEPARTURE).
-
Expected Behavior: Evaluated as a departure (
-
Scenario 6: The footprint overlaps the lateral gap, the longitudinal distance to the overlap is greater than the minimum braking distance, and the time to reach it is greater than the cutoff time.
-
Expected Behavior: Evaluated as approaching departure (
APPROACHING_DEPARTURE)
-
Expected Behavior: Evaluated as approaching departure (
| Scenario | Condition / Description | Lateral Overlap? | Lon > Braking Dist? | Time > Cutoff? | Expected Result |
|---|---|---|---|---|---|
| 1: Wrong Tag | Boundary lacks road_border tag |
N/A | N/A | N/A | NONE |
| 2: Safe Lateral | Vehicle stays within lateral gap | No | N/A | N/A | NONE |
| 3: Imminent | Too close and too fast | Yes | No | No | CRITICAL |
| 4: Late Warning | Low time buffer to crossing | Yes | Yes | No | CRITICAL |
| 5: High Speed | Insufficient braking distance | Yes | No | Yes | CRITICAL |
| 6: Approaching | Within margin, but buffers are safe | Yes | Yes | Yes | APPROACHING |
Changelog for package autoware_boundary_departure_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(boundary_departure): report NEAR_BOUNDARY as a low caution risk (#13345)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(boundary_departure): separate hysteresis state (#12986) fix(boundary_departure): separate hysteresis state (#3116)
- fix(boundary_departure): separate hysteresis state
- fix: separate hash
* fix: precommit ---------Co-authored-by: Yuxuan Liu <<619684051@qq.com>>
-
feat(boundary_departure): visualize segments where departure occurs (#12984)
- feat(boundary_departure): visualize segments where departure occurs (#3094)
- fix: add wall marker to visualize boundary departure
- remove unused header edit
* fix: make text marker white ---------
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* Update common/autoware_boundary_departure_checker/src/detail/debug.cpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>> ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Zulfaqar Azmi
0.52.0 (2026-06-30)
-
chore: align package versions to 0.51.0 and reset changelogs
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(boundary_departure): boundary departure checker minimal implementation (#12421)
- start a copy of boundary departure checker
- docs
- fix: precommit and some debug marker related changes.
* Revert "fix: precommit and some debug marker related changes." This reverts commit 532a781255b57a3576c4b184e09a147c07969d03.
* Revert "docs" This reverts commit 82eda0dca26a84ffabb17438763789ce4af0a9db.
- addtional changes
- feat: docs
- fix: precommit
- fix: rework initializer
- fix: remove pyplotter
- fix: remove rclcpp from test
- fix: sync debug marker with e2e
- remove changelog
- fix: major changes
- fix: remove dependencies
- fix: minor refactoring
* fix(boundary_departure): fix false negative when ego overlap with boundary on front or rear segment. (#2892) fix(boundary_departure): fix false negative
- fix: failing test, and bypass ON time buffer if departure point is less than ON time buffer
- fix: unit test, remove unused includes and added nodiscard
- lanelet_map_ptr_ as rtree member
- refactor: move private imp to detail
- docs: add readme and parameter schema
- fix: documents
- fix: schema
- fix: schema naming
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_trajectory_validator |