point.h
#pragma once
#include <pcl/point_types.h>
struct PointXYZIDRALT { // 定义点类型结构
PCL_ADD_POINT4D; // 该点类型有4个元素
float intensity = 0.0;
float distance = 0.0;
uint16_t ring = 0;
uint16_t angle = 0;
uint16_t label = 0;
double timestamp = 0.0;
EIGEN_MAKE_ALIGNED_OPERATOR_NEW // 确保new操作符对齐操作
} EIGEN_ALIGN16; // 强制SSE对齐
POINT_CLOUD_REGISTER_POINT_STRUCT( // 注册点类型宏
PointXYZIDRALT,
(float, x, x)
(float, y, y)
(float, z, z)
(float, intensity, intensity)
(float, distance, distance)
(uint16_t, ring, ring)
(uint16_t, angle, angle)
(uint16_t, label, label)
(double, timestamp, timestamp)
)
test.cc
#include "point.h"
#include <pcl/point_cloud.h>
int main(int argc, char **argv) {
pcl::PointCloud<PointXYZIDRALT> cloud;
PointXYZIDRALT point;
point.x = point.y = point.z = 0;
point.intensity = 255;
point.distance = 100;
point.ring = 0;
point.angle = 0;
point.label = 0;
point.timestamp = 0;
cloud.push_back(point);
}