Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
Messages
Services
Plugins
Recent questions tagged autoware_compare_map_segmentation at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- amc-nu
- Yukihiro Saito
- Dai Nguyen
- Yoshi Ri
- Akihisa Nagata
- Taekjin Lee
- Kaan Colak
Authors
- Open Perception
- Julius Kammerl
- William Woodall
autoware_compare_map_segmentation
Purpose
The autoware_compare_map_segmentation is a package that filters the ground points from the input pointcloud by using map info (e.g. pcd, elevation map or split map pointcloud from map_loader interface).
Inner-workings / Algorithms
Compare Elevation Map Filter
Compare the z of the input points with the value of elevation_map. The height difference is calculated by the binary integration of neighboring cells. Remove points whose height difference is below the height_diff_thresh.
Distance Based Compare Map Filter
This filter compares the input pointcloud with the map pointcloud using the nearestKSearch function of kdtree and removes points that are close to the map point cloud. The map pointcloud can be loaded statically at once at the beginning or dynamically as the vehicle moves.
Voxel Based Approximate Compare Map Filter
The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them.
Voxel Based Compare Map Filter
The filter loads the map pointcloud (static loading whole map at once at beginning or dynamic loading during vehicle moving) and utilizes VoxelGrid to downsample map pointcloud.
For each point of input pointcloud, the filter use getCentroidIndexAt combine with getGridCoordinates function from VoxelGrid class to check if the downsampled map point existing surrounding input points. Remove the input point which has downsampled map point in voxels containing or being close to the point.
Voxel Distance based Compare Map Filter
This filter is a combination of the distance_based_compare_map_filter and voxel_based_approximate_compare_map_filter. The filter loads the map point cloud, which can be loaded statically at the beginning or dynamically during vehicle movement, and creates a voxel grid and a k-d tree of the map point cloud. The filter uses the getCentroidIndexAt function in combination with the getGridCoordinates function from the VoxelGrid class to find input points that are inside the voxel grid and removes them. For points that do not belong to any voxel grid, they are compared again with the map point cloud using the radiusSearch function of the k-d tree and are removed if they are close enough to the map.
Lanelet Elevation Filter
The Lanelet Elevation Filter filters point clouds based on lanelet elevation information. It creates a grid-based elevation map from lanelet data and filters out points that deviate significantly from the expected road surface height. This filter is useful for removing floating objects, overpass structures, and other non-road elements that should not be considered for ground-level navigation.
The filter processes lanelet maps to extract elevation information at regular grid intervals and uses this information to validate incoming point cloud data. Points that are too far above or below the expected lanelet surface elevation are filtered out.
If incoming point cloud frame differs from target_frame, points will be transformed to target_frame before elevation check.
Inputs / Outputs
Compare Elevation Map Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/points |
sensor_msgs::msg::PointCloud2 |
reference points |
~/input/elevation_map |
grid_map::msg::GridMap |
elevation map |
Output
| Name | Type | Description |
|---|---|---|
~/output/points |
sensor_msgs::msg::PointCloud2 |
filtered points |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
map_layer_name |
string | elevation map layer name | elevation |
map_frame |
float | frame_id of the map that is temporarily used before elevation_map is subscribed | map |
height_diff_thresh |
float | Remove points whose height difference is below this value [m] | 0.15 |
Lanelet Elevation Filter
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
input point cloud |
~/input/lanelet_map |
autoware_map_msgs::msg::LaneletMapBin |
lanelet map |
Output
| Name | Type | Description |
|---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
filtered point cloud |
~/debug/elevation_markers |
visualization_msgs::msg::MarkerArray |
elevation grid visualization |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
grid_resolution |
double | Grid cell size in meters for elevation processing | 1.0 |
height_threshold |
double | Maximum height difference from lanelet elevation (meters) | 2.0 |
sampling_distance |
double | Distance between sampled points along lanelet boundaries (meters) | 0.5 |
extension_count |
int | Number of cells to extend around original lanelet points | 5 |
target_frame |
string | Target coordinate frame for processing | map |
cache_directory |
string | Directory for cached grid files | $(find-pkg-share autoware_compare_map_segmentation)/data/lanelet_grid_cache |
require_map_coverage |
bool | If true, only keep points with direct map coverage; reject points requiring interpolation | true |
enable_debug |
bool | Enable debug mode (includes elevation markers and processing time publisher) | false |
Other Filters
Input
File truncated at 100 lines see the full file
Changelog for package autoware_compare_map_segmentation
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
fix(pre-commit): update pre-commit-hooks-ros to v0.10.3 and adapt include guards (#13083)
- chore: sync files
* fix(pre-commit): adapt include guards to pre-commit-hooks-ros v0.10.3 ros-include-guard v0.10.3 only recognises an include guard when #endif is the last non-empty line of the file, so that feature test macros are no longer mistaken for guards. 29 headers failed that check. 25 headers wrap the guard in "// clang-format off" / "// clang-format on" because the #endif comment plus its // NOLINT exceeds the 100 column limit. Drop only the trailing "on" marker; the "off" marker then runs to end of file and still protects the line from being wrapped. 3 CUDA headers ended with "/* INDENT-ON /". Move it above the #endif so it stays paired with the "/ INDENT-OFF */" near the top of the file. autoware_behavior_path_planner/test/input.hpp closed its guard immediately after opening it, leaving the entire body unguarded. Move the #endif to the end. Also hold clang-format at v21.1.8. clang-format 22 migrates "AlignAfterOpenBracket: AlwaysBreak" to "BreakAfterOpenBracketIf: true", which forces a break after every "if (" whose condition does not fit on one line and reformats 88 files. ---------Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Mete Fatih Cırıt <<mfc@autoware.org>>
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, awf-autoware-bot[bot]
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
chore(perception): move perception node configuration file to each package (#12440) move perception node configuration file to each package
-
refactor(autoware_universe): use autoware_ament_auto_package in perception utility packages (#12281) Co-authored-by: github-actions <<github-actions@github.com>>
-
revert: feat(compare_map_filter) apply agnocast publisher to [voxel_compare_map_filter]{.title-ref} (#12346) Revert "feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)" This reverts commit d702d678392837529fad335c4fce38cfff95f64b.
-
feat(compare_map_filter): apply agnocast publisher to [voxel_based_compare_map_filter]{.title-ref} (#12304)
- apply agnocast publisher to voxel_based_compare_map_filter
- style(pre-commit): autofix
- delete agnocastlib dependency
- add agnocast dependency to voxel_based_compare_map_filter.launch.xml
- add TODO coment
- style(pre-commit): autofix
- clang-format
* dummy change for ci ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
fix(compare_map_segmentation): ignore Werror=array-bounds (#12316)
-
perf(perception): use emplace_back and emplace to avoid temporary object creation (#12201)
- perf(perception): use emplace_back to avoid temporary object creation
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/compare_elevation_map_filter.launch.xml
-
- compare_elevation_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/compare_elevation_map_filter.param.yaml]
- input [default: /input]
- input_elevation_map [default: /input/elevation_map]
- output [default: /output]
- launch/distance_based_compare_map_filter.launch.xml
-
- distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/lanelet_elevation_filter.launch.xml
-
- input_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud]
- input_lanelet_map [default: /map/vector_map]
- output_pointcloud [default: /perception/object_recognition/detection/pointcloud_map_filtered/pointcloud_lanelet_filtered]
- config_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/lanelet_elevation_filter.param.yaml]
- launch/voxel_based_approximate_compare_map_filter.launch.xml
-
- voxel_based_approximate_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_approximate_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]
- launch/voxel_based_compare_map_filter.launch.xml
-
- voxel_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- pose_with_covariance [default: /localization/pose_estimator/pose_with_covariance]
- output [default: /output]
- map_loader_service [default: /map/get_differential_pointcloud_map]
- launch/voxel_distance_based_compare_map_filter.launch.xml
-
- voxel_distance_based_compare_map_filter_param_file [default: $(find-pkg-share autoware_compare_map_segmentation)/config/voxel_distance_based_compare_map_filter.param.yaml]
- input [default: /input]
- input_map [default: /map]
- output [default: /output]