自定义点云的数据类型PointXYZIRT

news2024/9/25 7:24:13

PCL支持的点云数据类型有PointXYZ、PointXYZI等,但是对于速腾、Velodyne等激光雷达的原始点云中还包含了激光点线号ring和每个激光点的时间戳信息,在读取该类点云时需要基于PCL库自定义点云格式才能读到原始点云的所有信息,以速腾激光雷达点云为例,梳理自定义PCL点云的方法以及使用。

点云格式与数据类型

在这里插入图片描述
以文本的形式打开一个点云可以看到激光点云文件的具体信息,前面10行为点云的数据头,具体含义如下:

VERSION:指定版本号
FIELDS:指定每一个点所拥有的的维度名字
SIZE:每个维度占的字节大小
TYPE:每一个维度的类型
WIDTH:云点的数量表示点云数据集的宽度
HEIGHT:云点的数目表示点云数据集的高度
VIEWPOINT:指定数据集中点云的获取视点
POINTS:数据的总点数
DATA:表示数据存储的格式

对于不同的点云其对应的PCD文件数据头也不同,如:

  • 对于XYZ类型的点云对应的FIELDS为x y z
  • 对于XYZI类型的点云对应的FIELDS为x y z intensity
  • 对于XYZIRT类型的点云对应的FIELDS为x y z intensity ring timestamp

参考FIELDS可以设置自定义点云有哪些维度。

另外对于点云每个唯独的数据类型也各不一样,需要在自定义点云时注意,数据类型对应SIZETYPE,激光雷达不同点云的每个唯独的数据类型和字节数也不同,目前自定义点云支持的数据类型有:

I:表示有符号类型int8(char)、int16(short)、int32(int)
U:表示无符号类型uint8(unsigned char)、uint16(unsigned short)、uint32(unsigned int)
F:表示浮点型float

自定义点云数据类型

个人编码习惯,将自定义点云写在一个头文件中,方便其他所有的源码文件使用。主要包括以下两个部分:

  • 自定义点云数据结构struct PointXYZIRT
  • 对于自定义点云进行注册POINT_CLOUD_REGISTER_POINT_STRUCT
#ifndef PCL_TYPE_BASE_H
#define PCL_TYPE_BASE_H

#include <Eigen/Core>
#include <Eigen/Dense>

#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

struct PointXYZIRT
{
    PCL_ADD_POINT4D
    // PCL_ADD_INTENSITY
    float intensity;
    uint16_t ring;
    float timestamp;
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW   // make sure our new allocators are aligned
} EIGEN_ALIGN16;                    // enforce SSE padding for correct memory alignment

POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZIRT,
(float,x,x)
(float,y,y)
(float,z,z)
(float, intensity, intensity)
(uint16_t,ring,ring)
(float ,timestamp,timestamp)
)

typedef PointXYZIRT PointType;

#endif

使用自定义点云

其他PCL点云怎么使用自定义点云就怎么使用,不过对于某些PCL库的点云处理函数可能不支持自定义的点云。

PointType pt;
pcl::PointCloud<PointType>::Ptr cloud_xyzirt = boost::make_shared<pcl::PointCloud<PointType>>();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归测试:在不断变化的环境中确保软件的稳定性

软件开发是一个复杂的过程&#xff0c;需要不断变化和更新以满足客户不断变化的需求&#xff0c;但它们也可能产生新问题或导致旧问题重新出现。这就是回归测试的用武之地——它是在不断变化的环境中确保软件稳定性的重要组成部分。 在这篇文章中&#xff0c;我们将深入探讨什…

开放式耳机推荐排行榜、开放式耳机性价比推荐

随着无线耳机越来越普及&#xff0c;人们对于耳机的要求也越来越高。传统的入耳式耳机虽然音质好&#xff0c;但是长时间佩戴容易引起耳部不适&#xff0c;甚至可能导致听力损失。为此大家都开始选择入手舒适、安全的开放式耳机&#xff0c;现在耳机市场&#xff0c;各种品牌、…

*VS Code中的Ajax

下载插件并使用 下载插件,开放一个端口给要加载的资源&#xff0c;解决跨域问题&#xff0c;没有后端接收数据&#xff0c;用来做小模块很合适 建立文件夹&#xff0c;文件夹下放入jquery插件和json文件 data.json {"total": 4,"data": [{"name&qu…

11、SpringCloud -- 利用redis优化查询秒杀商品的数据(就是可以把商品数据先存到redis中)

目录 秒杀商品数据存到redis中并查询需求hash理解代码&#xff1a;RedisService商品数据初始化&#xff1a;查询 测试&#xff1a; 秒杀商品数据存到redis中并查询 需求 利用redis优化查询秒杀商品的数据&#xff0c;就是可以把商品数据先存到redis中&#xff0c;要查的时候先…

springboot整合日志,并在本地查看

目录 1.导入依赖 2.编写配置 3.使用 4.验证 5.打印错误信息 1.导入依赖 <!-- logback&#xff0c;向下兼容log4j,还支持SLF4J--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId> </depen…

IPv6地址配置方式

IPv6地址分类 IPv6地址分为单播地址、任播地址&#xff08;Anycast Address&#xff09;、组播地址三种类型。和IPv4相比&#xff0c;取消了广播地址类型&#xff0c;以更丰富的组播地址代替&#xff0c;同时增加了任播地址类型。 单播地址 IPv6单播地址标识了一个接口&…

桶装水送水多门店水票押金押桶小程序开发

桶装水送水多门店水票押金押桶小程序开发 用户注册和登录首页展示各门店的桶装水品牌和价格用户可以选择门店和水品牌&#xff0c;并下单购买桶装水用户可以选择送水时间和地址用户可以查看自己的订单历史和当前订单状态用户可以申请退款或修改订单信息门店可以登录后台管理系…

毕业设计基于SpringBoot+Vue智慧云办公系统源码+数据库+项目文档

智慧云办公管理系统 一、系统简介 智慧云办公系统是一个采用SpringBootVue技术开发的前后端分离的项目&#xff0c;云办公系统通过软件的方式&#xff0c;方便快捷处理中小型企业的公司日常事务&#xff0c;能够提高整体的管理运营水平&#xff0c;使得办公更加高效方便&…

WebDAV之π-Disk派盘 + 读出通知

手机各种推销通知太多,如何避免那些繁琐的通知内容,做出一键就能够阅读重要通知的最佳体验,帮助您更加快速和便捷的体验到那些应用内容?推荐大家使用读出通知。 读出通知APP可以设置接收通知的app,还可以用耳机操作,操作简单,你还可以指定播报设备,还有播报的声音的设置…

大数据四大阵营

一、OLTP 阵营 OLTP&#xff08;在线事务、交易处理&#xff09;&#xff1a;RDBMS( Relational Database Management System)、NoSQL、NewSQL OLTP阵营可以分为&#xff1a; 传统的关系型数据库NoSQLNewSQL 1、NoSQL NoSQL类系统普遍存在下面一些共同特征&#xff1a; 不需…

草柴返利APP如何领取天猫淘宝红包优惠券享淘礼金红包0元购物福利?

什么是草柴返利APP&#xff1f; 草柴APP是一款淘宝/天猫、京东等电商平台购物前查询领取大额内部隐藏优惠券&#xff0c;确认收货后拿购物返利的省钱工具。同时&#xff0c;草柴APP上线隐藏的红包功能&#xff0c;查询到淘宝/天猫、京东商品优惠券、返利结果&#xff0c;点击进…

uniapp @click点击事件在新版chrome浏览器点击没反应

问题描述 做项目时&#xff0c;有一个弹出选择的组件&#xff0c;怎么点都不出来&#xff0c;最开始还以为是业务逻辑限制了不能点击。后来才发现别人的电脑可以点出来&#xff0c;老版本的浏览器也可以点出来&#xff0c;最后定位到是新版的chrome就不行了 这是我的浏览器版本…

postman使用POST,却收到的是GET请求

现象&#xff1a; 可以看到我们postman发出的确实是post请求&#xff0c;message却报错这个接口不支持get请求&#xff0c;说明服务器实际上收到的是一个get请求。 产生原因分析 如果我们访问的是线上的接口&#xff0c;线上的nginx一般都会对http访问做一个302重定向&#xf…

掌握Google Play上的应用商店优化

对于Google Play而言&#xff0c;ASO不仅可以提高我们的应用程序的可见性&#xff0c;还可以对我们的应用在应用商店搜索结果中的性能产生深远的影响。 1、应用商店优化在Google Play中的作用。 能够增强应用在Google Play商店搜索结果中的性能并提高点击率 。在优化过程涉及各…

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…

Qwt QwtPlotMultiBarChart绘制多列柱状图

1.概述 QwtPlotMultiBarChart 是 Qwt 绘图库中的一个类&#xff0c;用于绘制多列柱状图。它可以显示多个柱状条并将它们按照不同的类别分组显示。每个类别下的柱状条可以有不同的颜色和宽度。 以下是类继承关系图&#xff1a; 2.常用方法 设置数据&#xff1a; void setSam…

不小心commit错误代码,还没push的回滚解决方法

命令&#xff1a;git reset --soft HEAD^ 第一步&#xff1a;找到项目所在文件夹 第二步&#xff0c;右键点击git base here 第三步&#xff0c;命令行输入git reset --soft HEAD^ 回车即可

【java】【MyBatisPlus】【三】【完】MyBatisPlus扩展

目录 一、分页查询lambdaQueryWrapper 二、自定义分页查询 1、UserMapper 2、UserMapper.xml 3、测试方法 三、MybatisX插件 1、安装 2、MybatisX代码快速生成 2.1 连接数据库 2.2 操作需要生成代码的表 3、MybatisX快速生成CRUD&#xff08;前提步骤2生成&#xff…

FPGA_Quartus 如何生成 jic 文件

打开要转换 jic 的工程文件&#xff0c;打开 File——Convert Programming Files。如图所示&#xff1a; 进入下面界面后&#xff0c;在框 1 处选择将要转换的目标文件类型&#xff08;jic&#xff09;&#xff0c;在框 2 处选择配置芯片的型号&#xff08;此处选择 EPCS16&a…

代码随想录Day32 动态规划01 LeetCodeT509 斐波那契数列 T70 爬楼梯 T746 爬楼梯的最小消耗

前言:动态规划基础 动态规划首先可以解决的问题有背包问题,打家劫舍问题,股票问题,子序列问题等,主要是将一个大的问题切分成多个重叠的子问题,所以动态规划一定是上一个状态递推过来的,有一个重要的状态转移方程,但是这也并不是解题的全部,我们将动态规划的题目基本分为五步来…