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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_obstacle_proximity_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
- Takumi Odashima
Authors
- Satoshi Ota
Obstacle Proximity Checker
Purpose
This package provides a reusable library for detecting obstacles in close proximity to the ego vehicle. It computes the minimum distance between an expanded ego footprint and nearby point cloud points or dynamic object polygons, and reports whether any obstacle is within a caller-defined distance threshold.
The core logic was extracted from autoware_surround_obstacle_checker so it can be shared across planning modules. Current consumers include:
Inner-workings / Algorithms
Get distance to nearest obstacle
Calculate the distance between the ego vehicle and the nearest obstacle. The minimum distance is computed between ego vehicle footprint and:
- all points in the input point cloud
- the polygons of enabled dynamic objects
The ego footprint is created based on vehicle info and user defined margins per obstacle type. For each given obstacle type (e.g car, pedestrian, pointcloud, etc) the following margins are defined:
surround_check_front_distancesurround_check_side_distancesurround_check_back_distance
Obstacle detection
An obstacle is considered nearby when:
nearest_distance < contact_distance_threshold
contact_distance_threshold is provided by the caller on each check() call.
This allows callers to implement distance hysteresis (for example, a tight threshold when entering stop and a wider threshold when clearing stop).
The library does not manage:
- ego stopped checks
- state machines (
PASS/STOP) - time-based hysteresis
- ROS subscriptions, publishers, or TF transforms
Those responsibilities remain in the calling node or plugin.
API
Input (Inputs)
| Field | Type | Description |
|---|---|---|
ego_pose |
geometry_msgs::msg::Pose |
Ego pose used for dynamic object checks |
pointcloud_in_base_link |
pcl::PointCloud<pcl::PointXYZ>::ConstPtr |
Obstacle point cloud in base_link
|
objects |
autoware_perception_msgs::msg::PredictedObjects::ConstSharedPtr |
Dynamic objects |
Callers must transform the point cloud to base_link before passing it to the library.
Output (CheckResult)
| Field | Type | Description |
|---|---|---|
is_obstacle_found |
bool |
true if the nearest obstacle is within contact_distance_threshold
|
nearest_obstacle |
std::optional<ProximityObstacle> |
Nearest obstacle and its distance, if any |
ProximityObstacle contains:
| Field | Type | Description |
|---|---|---|
is_point_cloud |
bool |
true if the nearest obstacle came from a point cloud |
nearest_distance |
double |
Minimum distance to the ego footprint [m] |
nearest_point |
geometry_msgs::msg::Point |
Nearest point in map coordinates |
uuid |
unique_identifier_msgs::msg::UUID |
Object UUID, or empty for point clouds |
Parameters (Parameters)
| Name | Type | Description |
|---|---|---|
pointcloud_enable_check |
bool |
Enable point cloud proximity checks |
object_type_enable_check |
unordered_map<string, bool> |
Enable checks per object label (car, truck, etc.) |
obstacle_types_map |
unordered_map<string, ObstacleTypeParameters> |
Per-type footprint margins |
ObstacleTypeParameters fields:
| Name | Type | Description | Typical value |
|---|---|---|---|
surround_check_front_distance |
double |
Front margin added to the ego footprint [m] | 0.5 |
surround_check_side_distance |
double |
Side margin added to the ego footprint [m] | 0.0–1.0 |
surround_check_back_distance |
double |
Rear margin added to the ego footprint [m] | 0.0–0.5 |
Supported object labels:
unknown, car, truck, bus, trailer, motorcycle, bicycle, pedestrian, animal, hazard, over_drivable, under_drivable, pointcloud
Assumptions / Known limits
- Point clouds must already be transformed to
base_link. - The library performs geometric proximity checks only. Stop/release decisions, velocity limits, and trajectory modification are handled by callers.
Changelog for package autoware_obstacle_proximity_checker
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(trajectory_modifier, minimum_rule_based_planner): improve obstacle stop feature (#13255)
- fix(trajectory_modifier): fix obstacle stop unstable stop wall (#3196)
- fix stop wall appears behind ego
- always publish modifier debug markers
- fix extend_trajectory() function
- use path curvature at end instead of relying on trajecory point orientations
- for low end speed trajectory, default to straight extension
- fix insert_stop_point logic to prevent wrong orientation stop pose
- introduce minimum stop margin below which duplicate_check_threshold is ignored
* handle zero stop_point_arc_length in insert_stop_point function ---------
* refactor(obstacle_stop): optimize collision check logic (#3024) refactor obstacle stop utility function get_nearest_object_collision, update default param values
- feat(trajectory_modifier): remove max object velocity threshold for obstacle stop (#3234)
- remove max_velocity_th param, fix collision check logic
- tune rss params
* apply pre-commit checks ---------
- feat(trajectory_modifier, backup_planner): enable filtering objects by type and shape (#3255)
- enable filtering objects by type and shape
- update obstacle_stop params in modifier and backup planner to specify enabled types per shape
- update surround_obstacle_stop params in modifier and backup planner to specify enabled types per shape
- modify ObjectFilter code in obstacle_stop_utils to support filtering by type and shape
- modify ObstacleProximityChecker class to support filtering by type and shape
- fix ObstacleTracker logic for ignoring orientation change
* Update planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_utils/obstacle_stop_utils.hpp Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* apply pre-commit checks ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
* fix cherry-pick errors ---------Co-authored-by: Maxime CLEMENT <<78338830+maxime-clem@users.noreply.github.com>>
-
chore(common): update package maintainers (#13182)
-
feat: support new object classification labels (#12956)
- fix(obstacle_proximity_checker): support new object classification labels
- feat(collision_detector): support new object classification labels
- feat(surround_obstacle_checker): support new object classification labels
* fix: apply pre-commit ---------
-
feat(trajectory_modifier): support new object classes in trajectory_modifier (#12910)
- support HAZARD & ANIMAL object classes in modifier obstacle stop
* add missing object types for surround_obstacle_stop ---------
-
feat(trajectory_modifier): add surround obstacle stop plugin to trajectory modifier (#12894)
- extract core logic from surround_obstacle_checker to new common package obstacle_proximit_checker
- add new modifier plugin surround_obstacle_stop which uses common package obstacle_proximity_checker
- apply pre-commit checks
- refactor implementation, add integration test for surround_obstacle_stop
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
| eigen |
| libpcl-all-dev |