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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_downsample_filters 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-06-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Kyoichi Sugahara
- Dai Nguyen
- Kenzo Lobos-Tsunekawa
- Yihsiang Fang
- Yoshi Ri
- David Wong
- Melike Tanrikulu
- Max Schmeller
- Xingang Liu
- Norah Xiong
Authors
autoware_downsample_filters
Overview
The autoware_downsample_filters is a package that that reduces the number of points of the pointcloud.
Design
The autoware_downsample_filters is implemented for reducing the computational load and improving the performance of the system.
Inner-workings / Algorithms
Random Downsample Filter
pcl::RandomSample is used, which points are sampled with uniform probability.
Voxel Grid Downsample Filter
pcl::VoxelGrid is used, which points in each voxel are approximated with their centroid.
Pickup Based Voxel Grid Downsample Filter
This algorithm samples a single actual point existing within the voxel, not the centroid. The computation cost is low compared to Centroid Based Voxel Grid Filter.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
input |
sensor_msgs::msg::PointCloud2 |
reference points |
Output
| Name | Type | Description |
|---|---|---|
output |
sensor_msgs::msg::PointCloud2 |
downsampled points |
Parameters
Launch file Parameters
| Name | Type | Default Value | Description |
|---|---|---|---|
input_frame |
string | ” “ | the frame id in which filtering is performed |
output_frame |
string | ” “ | output frame id of the filtered points |
max_queue_size |
size_t | 5 | max buffer size of input/output topics |
Node Parameters
random_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
sample_num |
size_t | 1500 | random sample number |
voxel_grid_downsample_filter_node
| Name | Type | Default Value | Description |
|---|---|---|---|
voxel_size_x |
double | 0.3 | x value of the voxel |
voxel_size_y |
double | 0.3 | y value of the voxel |
voxel_size_z |
double | 0.1 | z value of the voxel |
Usage
1.publish static tf from input pointcloud to target frame that is used for filtering, e.g
ros2 run tf2_ros static_transform_publisher 2.0 3.2 1.3 0 0 0 1 velodyne_top_base_link base_link
2.launch one of the downsample node
ros2 launch autoware_downsample_filters random_downsample_filter_node.launch.xml
3. launch rviz2 and AWSIM to check the downsample result
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_downsample_filters
1.9.0 (2026-06-24)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
fix([downsample_filters]{.title-ref}): add missing unit tests (#1206)
-
refactor([downsample_filters]{.title-ref}): split voxel-grid core logic (#1175)
- refactor([downsample_filters]{.title-ref}): split voxel-grid core logic
- extract ROS-independent voxel grid core logic from the node
- replace callback-based errors in faster voxel filter with ValidationResult
- propagate validation reasons through core and node logging
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): move field validation into validate_input
- move x/y/z and intensity field checks from set_field_offsets to validate_input
- simplify set_field_offsets to a plain void setter
- remove redundant result check in filter (validation is now upstream)
* bug: fix the following [cppcheck]{.title-ref} error
` /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: performance: inconclusive: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). [functionStatic] ValidationResult validate_input(const PointCloud2 & cloud) const; ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.cpp:31:49: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult VoxelGridDownsampleFilterCore::validate_input(const PointCloud2 & cloud) const ^ /__w/autoware_core/autoware_core/sensing/autoware_downsample_filters/src/voxel_grid_downsample_filter/voxel_grid_downsample_filter_core.hpp:42:20: note: Technically the member function 'autoware::downsample_filters::VoxelGridDownsampleFilterCore::validate_input' can be static (but you may consider moving to unnamed namespace). ValidationResult validate_input(const PointCloud2 & cloud) const; ^[ * bug: fix by `pre-commit]{.title-ref}- refactor([downsample_filters]{.title-ref}): align voxel-grid core file naming
- rename voxel_grid_downsample_filter_core.cpp/hpp to voxel_grid_downsample_filter.cpp/hpp
- fix: make [set_field_offsets]{.title-ref} private
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433757009
- refactor([downsample_filters]{.title-ref}): make voxel filter return [tl::expected]{.title-ref}
- change VoxelGridDownsampleFilterCore::filter to return tl::expected<PointCloud2, std::string>
- move input validation into filter to avoid accidental validation bypass
- simplify node call site to early-return on error
* update unit tests to use the new expected-based interface This fix is proposed by this PR review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433873891
- refactor([downsample_filters]{.title-ref}): set output stamp inside core filter
- Apply the following review comment:
- https://github.com/autowarefoundation/autoware_core/pull/1175#discussion_r3433884564
- style(pre-commit): autofix
- refactor([downsample_filters]{.title-ref}): align core/node naming conventions
- rename core class to VoxelGridDownsampleFilter in voxel_grid_downsample_filter.cpp/hpp
- rename ROS2 wrapper class to VoxelGridDownsampleFilterNode in *_node.cpp/hpp
- refactor([downsample_filters]{.title-ref}): avoid copy when publishing filter output
- refactor([downsample_filters]{.title-ref}): inline publish of moved filter result
- bug: fix missing package [tl_expected]{.title-ref}
- bug: fix build error for test code
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
feat([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node (#1161)
- refactor([downsample_filters]{.title-ref}): remove TF operations from voxel grid filter node
- style(pre-commit): autofix
- bug: fix wrong conflict resolve in a previous commit
- style(pre-commit): autofix
- bug: fix failing tests
* bug: remove tf-handling code from tests ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix: a bug which causes wrong [frame_id]{.title-ref} propagation in transformation (#1164)
- bug: fix wrong [frame_id]{.title-ref} propagation in transformation
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
Launch files
- launch/random_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw]
- output_topic_name [default: /sensing/lidar/top/random_downsample_filter/pointcloud]
- input_frame [default: ]
- output_frame [default: ]
- random_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/random_downsample_filter_node.param.yaml]
- launch/voxel_grid_downsample_filter_node.launch.xml
-
- input_topic_name [default: /sensing/lidar/top/pointcloud_raw_ex]
- output_topic_name [default: /sensing/lidar/top/voxel_grid_downsample_filter/pointcloud]
- input_frame [default: base_link]
- output_frame [default: base_link]
- voxel_grid_downsample_filter_param_file [default: $(find-pkg-share autoware_downsample_filters)/config/voxel_grid_downsample_filter_node.param.yaml]