Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
jazzy

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro lyrical showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_map_height_fitter package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_specs autoware_geography_utils autoware_global_parameter_loader autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_map_height_fitter package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Takagi, Isamu

autoware_map_height_fitter

This library fits the given point with the ground of the point cloud map. The map loading operation is switched by the parameter enable_partial_load of the node specified by map_loader_name. The node using this library must use multi thread executor.

Parameters

{{ json_to_markdown(“map/autoware_map_height_fitter/schema/map_height_fitter.schema.json”) }}

Topic subscription

Topic Name Description
~/pointcloud_map The topic containing the whole pointcloud map (only used when enable_partial_load = false)

Service client

Service Name Description
~/partial_map_load The service to load the partial map
CHANGELOG

Changelog for package autoware_map_height_fitter

1.9.0 (2026-06-24)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree (#1107)

    * perf(autoware_map_height_fitter): extract testable ground-height kernel and use a cached KdTree Extract the pure ground-height search out of the Node/TF-bound pimpl Impl into free functions in a new internal header so the core algorithm becomes unit-testable without ROS:

    • get_ground_height_from_pointcloud(cloud[, kdtree], x, y, fallback_z)
    • get_ground_height_from_vector_map(map, x, y, fallback_z)

    - build_pointcloud_xy_kdtree(cloud) Impl::get_ground_height now delegates to these. The two full O(N) linear passes over the point cloud per fit() request are replaced with a pcl::KdTreeFLANN built once when the cloud is set (on_pcd_map / get_partial_point_cloud_map) and reused: nearestKSearch finds the closest point and radiusSearch restricts the lowest-z scan to a local candidate set, dropping per-call cost from O(N) to ~O(log N + k). Behavior is preserved: the KdTree indexes the horizontal (z = 0) projection so the 2D distance metric is unchanged, and the membership test is recomputed in double precision with the original strict '< (sqrt(min_dist2) + 1.0)\^2' comparison over the candidate set, so the selected point set (and thus the returned height) is identical to the original two-pass scan. The vector-map nearest-point lookup and all non-finite / empty / missing-map fallbacks are unchanged. Also fold in two cheap, behavior-preserving micro-optimizations flagged in the audit: radius2 is computed as r*r instead of std::pow(..., 2.0), and the partial-map merge loop reserves the total data size before concatenating grids. Add a gtest suite (test/test_map_height_fitter_kernel.cpp) covering the empty-cloud and single-point fallbacks, lowest-z-within-radius selection, the horizontal-only distance metric, the prebuilt-vs-convenience overload equivalence, the vector-map nearest height and its non-finite/empty fallbacks, and a 300-trial randomized characterization test asserting the new kernel matches the original two-pass scan exactly. The package previously had zero tests. Refs: autowarefoundation/autoware_core#1096

    * perf(autoware_map_height_fitter): preserve double-precision nearest search The KdTree path searched entirely in float: both the query and the indexed coordinates were rounded to float, and min_dist2 was taken from the single index returned by nearestKSearch. At large map coordinates (MGRS/UTM-derived) or for near-tied points the float nearest can differ from the true double-precision nearest, changing the radius and the selected height, so the documented bit-for-bit behavior preservation did not hold (demonstrably ~1 in 2000 at coordinates up to 2e6). Recompute min_dist2 in double precision over a margin-enlarged candidate set that is a guaranteed superset of the double-nearest point, and size both the nearest and the height radiusSearch margins from the coordinate magnitude (2 * coord_max * 2\^-23 + 1e-3) instead of a fixed 1e-3, so every point the strict double-precision test accepts is in the candidate set regardless of coordinate scale. The double-precision filter then reproduces the original membership exactly. Add a large-coordinate / near-tie characterization test (5000 trials, centers up to 2e6) that asserts bit-equality against the original two-pass scan; it fails on the previous float-only logic and passes now. Refs: autowarefoundation/autoware_core#1096

    * test(autoware_map_height_fitter): pin non-finite kernel inputs and guard NaN query (#67) Add edge-case kernel tests for non-finite cloud coords, query, and z against the in-test double-precision oracle; guard a non-finite query so the KdTree path returns fallback_z instead of tripping a FLANN assert, preserving the pre-PR scan behavior. Refs: autowarefoundation/autoware_core#1096

    • ci(autoware_map_height_fitter): add cspell:ignore for distance var names

    * refactor(autoware_map_height_fitter): move internal kernel header to src/ Address review: map_height_fitter_kernel.hpp is only used within this package (nothing outside includes it), so move it out of the public include/ tree into src/ as a non-installed internal header. Switch its include guard to the bare-filename form required for src/ headers, point the three includers at the relative path, and let the gtest reach it via target_include_directories(PRIVATE src). ---------

  • Contributors: Yutaka Kondo, github-actions

1.8.0 (2026-05-01)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • refactor(autoware_core): add USE_SCOPED_HEADER_INSTALL_DIR to map

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_map_height_fitter at Robotics Stack Exchange