velodyne的数据结构以及如何自定义一个点云库

阅读: 评论:0

velodyne的数据结构以及如何自定义一个点云库

velodyne的数据结构以及如何自定义一个点云库

velodyne的数据结构以及如何自定义一个点云库

velodyne数据结构

对于数据结构/velodyne_points,有三个返回值:

  1. point: 坐标(x,y,z)
  2. intensity: 反射值强度(0~255)
  3. ring: 第几线激光束(0~15)

· point就是雷达返回的点的坐标;
· 激光雷达除了返回距离之外,还返回反射值强度(Intensity),不同的障碍物材质反射的激光束的强度(Intensity)不同。Velodyne 测量 1m - 100m 物体的反射率(距离小于一米的点应该被忽略),其反射率的标定文件存储在VLP-16内置的FPGA中。当反射为漫反射(Diffuse Reflector)时,反射率的数值为0~100;当反射为逆反射(Retro-Reflector)时,数值为101~255。在Velodyne的配置页面中可以选择反射模型: Strongest, Last 或 Dual。

自定义一个点云库

先看一下代码 :

namespace plane_ground_filter
struct PointXYZIRL
{PCL_ADD_POINT4D;           //这将添加成员x,y,z,他们可以用point访问float intensity;           //反射值强度uint16_t ring;             //激光的环数(说明是第几根线)uint16_t label;            EIGEN_MAKE_ALIGNED_OPERATOR_NEW  //确保new操作符对齐操作
} EIGEN_ALIGN16;                 //强制SSE对齐

EIGEN_MAKE_ALIGNED_OPERATOR_NEW 是Eigen库的一个涉及字节对齐的问题,这个是对于固定维数的矩阵(雷达数据)会出现的错误,动态维数的矩阵不存在这样的问题。

下面是关于将PCL类型的点云数据转换为我们自定义的数据类型的代码:

SLRPointXYZIRL point;   //Plane_ground_filter::PointXYZIRL point
for (size_t i = 0; i < laserCloudIn.points.size(); i++)
{point.x = laserCloudIn.points[i].x;point.y = laserCloudIn.points[i].y;point.z = laserCloudIn.points[i].z;point.intensity = laserCloudIn.points[i].intensity;  point.ring = laserCloudIn.points[i].ring;  point.label = 0u; // 0 means unclusterg_all_pc->points.push_back(point);
}

本文发布于:2024-01-30 22:00:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662321623120.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23