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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_point_types at Robotics Stack Exchange
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
Maintainers
- David Wong
- Max Schmeller
- Cynthia Liu
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 usesstd::uint32_tas the data type for time_stamp. -
autoware::point_types::PointXYZCPE: Point type for segmented points, adds class_id, probability, and entropy information.-
PointXYZCPE::class_idis initialized toPointCloudClassification::INVALID=255to represent an invalid or unset class_id value. -
PointXYZCPE::entropyis initialized toNaNto represent an invalid or unset entropy value, thenPointXYZCPEequality treats twoNaNentropy values as equal, while aNaNentropy 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 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
Package Dependencies
System Dependencies
| Name |
|---|
| libpcl-all-dev |