Package symbol

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

Package symbol

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
jazzy

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange

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

autoware_point_types 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_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint 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_test_manager 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_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.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-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The point types definition to use point_cloud_msg_wrapper

Maintainers

  • David Wong
  • Max Schmeller
  • Cynthia Liu

Authors

No additional authors.

Autoware Point Types

Overview

This package provides a variety of structures to represent different types of point cloud data, mainly used for point cloud processing and analysis.

Design

Point cloud data type definition

autoware_point_types defines multiple structures (such as PointXYZI, PointXYZIRC, PointXYZIRCT, PointXYZIRADRT, PointXYZIRCAEDT, PointXYZCPE), each structure contains different attributes to adapt to different application scenarios.

  • autoware::point_types::PointXYZI: Point type with intensity information.
  • autoware::point_types::PointXYZIRC: Extended PointXYZI, adds return_type and channel information.
  • autoware::point_types::PointXYZIRCT: Extended PointXYZIRC, adds a per-point time_stamp (std::uint32_t, nanoseconds relative to the point cloud’s header stamp).
  • autoware::point_types::PointXYZIRADRT: Extended PointXYZI, adds ring, azimuth, distance, return_type and time_stamp information.
  • autoware::point_types::PointXYZIRCAEDT: Similar to PointXYZIRADRT, but adds elevation information and uses std::uint32_t as the data type for time_stamp.
  • autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.
    • PointXYZCPE::class_id is initialized to PointCloudClassification::INVALID=255 to represent an invalid or unset class_id value.
    • PointXYZCPE::entropy is initialized to NaN to represent an invalid or unset entropy value, then PointXYZCPE equality treats two NaN entropy values as equal, while a NaN entropy and a finite entropy are not equal.

Operator overload

Each structure overloads the == operator, allowing users to easily compare whether two points are equal, which is very useful for deduplication and matching of point cloud data.

Field generators

The field generator is implemented using macro definitions and std::tuple, which simplifies the serialization and deserialization process of point cloud messages and improves the reusability and readability of the code.

Registration mechanism

Register custom point cloud structures into the PCL library through the macro POINT_CLOUD_REGISTER_POINT_STRUCT, so that these structures can be directly integrated with other functions of the PCL library.

Usage

  • Create a point cloud object of PointXYZIRC type
#include "autoware/point_types/types.hpp"

int main(){
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr cloud(new pcl::PointCloud<autoware::point_types::PointXYZIRC>());

    for (int i = 0; i < 5; ++i) {
        autoware::point_types::PointXYZIRC point;
        point.x = static_cast<float>(i * 0.1);
        point.y = static_cast<float>(i * 0.2);
        point.z = static_cast<float>(i * 0.3);
        point.intensity = static_cast<std::uint8_t>(i * 10);
        point.return_type = autoware::point_types::ReturnType::SINGLE_STRONGEST;
        point.channel = static_cast<std::uint16_t>(i);

        cloud->points.push_back(point);
    }
    cloud->width = cloud->points.size();
    cloud->height = 1;

    return 0;
}

  • Convert ROS message to point cloud of PointXYZIRC type
ExampleNode::points_callback(const PointCloud2::ConstSharedPtr & points_msg_ptr)
{
    pcl::PointCloud<autoware::point_types::PointXYZIRC>::Ptr points_ptr(
    new pcl::PointCloud<autoware::point_types::PointXYZIRC>);

    pcl::fromROSMsg(*points_msg_ptr, *points_ptr);
}

CHANGELOG

Changelog for package autoware_point_types

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • feat(autoware_point_types): add PointXYZIRCT point type (#1422)

    * feat(autoware_point_types): add PointXYZIRCT point type Add PointXYZIRC extended by a per-point time_stamp (uint32 nanoseconds relative to the point cloud's header stamp), together with its field generator, layout check, field factory and PCL registration. This is the output point type for point clouds that no longer share a single sensor origin -- notably the concatenation of several LiDARs, where the azimuth/elevation/distance fields of PointXYZIRCAEDT lose their meaning but the per-point acquisition time is still needed by time-aware ML models. The layout is a strict superset of PointXYZIRC, so consumers that check is_data_layout_compatible_with_point_xyzirc() and read fields at their PointXYZIRC offsets remain compatible. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    • test(autoware_point_types): address review on the PointXYZIRCT tests

    - Drop TEST(PointLayout, PointXYZIRCT); the prefix property it pinned is already covered by the cross-type layout tests.

    - Cover xyzirct in every direction of MismatchedTypesReturnFalse, grouped by source layout like the surrounding cases.

    - Widen the superset test to all layouts extending xyzirc and shorten its comment to one line. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

    * docs(autoware_point_types): define time_stamp for PointXYZIRCT and PointXYZIRCAEDT Both are a non-negative offset in nanoseconds from the containing point cloud's header.stamp. This was only stated loosely for PointXYZIRCT and not at all for PointXYZIRCAEDT, though producers and consumers already rely on it. Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>> ---------Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • feat(point-types): add function that converts class name to PointCloudClassification (#1382)

  • fix(common): declare the dependencies these packages use (#1367) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers. Boost.Serialization is declared separately from libboost-dev because it needs its own library at link time.

  • feat(point_types, object_recognition_utils): segmentation pointcloud (#1288)

    • feat: add definition of point type for segmentation points
    • feat: add helper function for segmented pointcloud label
    • feat: replace default entropy value by Nan
    • feat: add PointCloudClassification::INVALID
    • refactor: move PointCloudClassification to autoware_point_types

    * docs: update README ---------

  • Contributors: Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, github-actions

1.9.0 (2026-06-24)

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

  • test(autoware_point_types): cover memory.hpp layout helpers and mark them inline (#1131) memory.hpp had zero test coverage for its eight is_data_layout_compatible_with_point_* overloads and four create_fields_point_* factories, and the free functions were defined non-inline in a header (an ODR hazard if the header is included in more than one translation unit).

    • Mark all memory.hpp free functions inline (additive, ODR-safe; existing signatures unchanged).
    • Add test/test_memory.cpp with round-trip (create -> is_compatible) checks for all four point types, exact create_fields_* content assertions, PointCloud2-overload forwarding, cross-type mismatch, and negative cases (wrong

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_point_types at Robotics Stack Exchange