Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
Messages
Services
Plugins
Recent questions tagged autoware_euclidean_cluster_object_detector at Robotics Stack Exchange
Package Summary
| Version | 1.9.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Dai Nguyen
Authors
autoware_euclidean_cluster_object_detector
Purpose
autoware_euclidean_cluster_object_detector is a package for clustering points into smaller parts to classify objects.
This package has two clustering methods: euclidean_cluster and voxel_grid_based_euclidean_cluster.
Inner-workings / Algorithms
euclidean_cluster
pcl::EuclideanClusterExtraction is applied to points. See official document for details.
voxel_grid_based_euclidean_cluster
- A centroid in each voxel is calculated by
pcl::VoxelGrid. - The centroids are clustered by
pcl::EuclideanClusterExtraction. - The input points are clustered based on the clustered centroids.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
input pointcloud |
Output
| Name | Type | Description |
|---|---|---|
output |
autoware_perception_msgs::msg::DetectedObjects |
detected objects |
debug/clusters |
sensor_msgs::msg::PointCloud2 |
colored cluster pointcloud for visualization |
Parameters
Core Parameters
euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_grid_based_euclidean_cluster
| Name | Type | Description |
|---|---|---|
use_height |
bool | use point.z for clustering |
min_cluster_size |
int | the minimum number of points that a cluster needs to contain in order to be considered valid |
max_cluster_size |
int | the maximum number of points that a cluster needs to contain in order to be considered valid |
tolerance |
float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
voxel_leaf_size |
float | the voxel leaf size of x and y |
min_points_number_per_voxel |
int | the minimum number of points for a voxel |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
File truncated at 100 lines see the full file
Changelog for package autoware_euclidean_cluster_object_detector
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering (#1124)
* perf(autoware_euclidean_cluster_object_detector): eliminate hot-loop allocations in clustering Build the output clusters in place with emplace_back instead of heap-allocating a pcl::PointCloud via new and deep-copying it into the output vector per cluster, and reserve the per-cluster point buffers up front. Cache the single unordered_map hash lookup per input point in the voxel path (previously map[index] was re-probed several times), reserve the map, and reserve the 2D-flatten loops in both implementations. Internal-only and behavior-preserving; the public cluster() API is unchanged. Characterization tests pinning cluster membership, per-point coordinates, the empty -input path, and the objects/clusters lockstep relationship are added first to prove equivalence. Refs: autowarefoundation/autoware_core#1096
- fix(autoware_euclidean_cluster_object_detector): address review feedback
- Replace pcl::PointCloud::emplace_back with push_back for PCL portability
- Correct centroid comment to match the asserted x/y bounds Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin empty-cloud input on implemented voxel cluster overload (#71) Add a characterization test calling the implemented 3-arg VoxelGridBasedEuclideanCluster::cluster(msg, objects, clusters) overload with an empty point cloud, pinning that it returns true with empty objects and clusters (no crash, no guard needed). Refs: autowarefoundation/autoware_core#1096
* test(autoware_euclidean_cluster_object_detector): pin clustering output via set comparison Rewrite the clustering test so the named input point sets are the single source of truth: sort the points within each cluster and the clusters themselves, then assert a single EXPECT_EQ against {near_points_, far_points_}. Drops the per-point if-reclassification and the tautological near/far counters that re-derived the production decision on the test side, per review. Refs: autowarefoundation/autoware_core#1096 ---------
-
Contributors: Yutaka Kondo, github-actions
1.8.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings (#938)
- fix(autoware_euclidean_cluster_object_detector): fix bugprone-narrowing-conversions warnings
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
refactor(autoware_crop_box_filter): extract CropBoxFilter logic class (#941)
- refactor(autoware_crop_box_filter): rename CropBoxFilter node class to CropBoxFilterNode
- refactor(autoware_crop_box_filter): extract CropBoxFilter logic class
- refactor(autoware_crop_box_filter): remove output_frame from CropBoxFilterConfig
* refactor(autoware_crop_box_filter): remove unnecessary member variables Convert tf_input_orig_frame_ and max_queue_size_ to local variables as they are only used in the constructor.
- test(autoware_crop_box_filter): add unit tests for preprocess and postprocess transform
- refactor(crop_box_filter): rename variable for clarity in transform handling
* refactor(crop_box_filter): simplify transform handling by removing has_value checks ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>>
-
chore(euclidean_cluster): move header files from include to src (#869)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_perception |
Launch files
- launch/euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- launch/voxel_grid_based_euclidean_cluster.launch.xml
-
- input_pointcloud [default: /sensing/lidar/top/pointcloud_raw]
- input_map [default: /map/pointcloud_map]
- output_clusters [default: clusters]
- use_low_height_cropbox [default: false]
- voxel_grid_based_euclidean_param_path [default: $(find-pkg-share autoware_euclidean_cluster_object_detector)/config/voxel_grid_based_euclidean_cluster.param.yaml]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]