Livox LiDAR点云数据类型的转化——livox_ros_driver/CustomMsg到sensor_msgs/PointCloud2

2023-05-16

在做Lidar与IMU数据之间的标定时,出现了数据无法读取的问题

主要是代码里读取lidar数据是需要下面的语句

 // add lidar msg
        sensor_msgs::PointCloud2ConstPtr lidar_msg = m.instantiate<sensor_msgs::PointCloud2>();

查看bag文件的数据类型

rosbag info XXX.bag

可以明显看出,用的是自带的sensor_msgs/PointCloud2类型的读取函数,因此这里需要对数据格式进行一个转换
请添加图片描述如图可以看出两种数据类型的区别

进行转换需要首先分析这两种数据类型的存储格式

livox存储格式看这

Livox defined msg format is :
请添加图片描述
CustomPoint format:
请添加图片描述
代码部分:

点云部分

for (int i = 0; i < point_num; i++)
  {
    cloud.points[i].x = msg.points.at(i).x;
    cloud.points[i].y = msg.points.at(i).y;
    cloud.points[i].z = msg.points.at(i).z;
    cloud.points[i].intensity = msg.points.at(i).reflectivity;
  }

其他信息:

  ros_msg.header.stamp = msg.header.stamp;
  ros_msg.header.frame_id = "rslidar";
  ros_msg.header.seq = 0;
  ros_msg.height = 1;
  ros_msg.width = cloud.width;
  ros_msg.point_step = sizeof(pcl::PointXYZI);
  ros_msg.row_step =
      static_cast<uint32_t>(sizeof(pcl::PointXYZI) * ros_msg.width);
  ros_msg.is_dense = false;
  livoxbag.write("/horizontal_laser_3d", ros_msg.header.stamp, ros_msg);

main函数:

int main(int argc, char* argv[])
{
  std::string bag_path = "/home/u/ws_livox_pc2/src/data/livox.bag";
  livoxbag.open(bag_path, rosbag::bagmode::Write);

  ros::init(argc, argv, "livox2pointcloud2");
  ros::NodeHandle nh;
  ros::Subscriber imu_sub = nh.subscribe("/livox/imu", 100, &imuCallback);  
  ros::Subscriber livox_sub = nh.subscribe("/livox/lidar", 100, &laserCallback);

  ros::spin();

  return 0;
}

这段代码这里是输入一个新的包进行数据写入

然后打开一个新终端
roscore
输入
./XXX
再打开一个新的终端
rosbag play XXX.bag

就可以实现类型的转换啦
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Livox LiDAR点云数据类型的转化——livox_ros_driver/CustomMsg到sensor_msgs/PointCloud2 的相关文章

随机推荐

  • Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile

    问题描述 Failed to execute goal org apache maven plugins maven compiler plugin 3 7 0 compile default compile on project xxx
  • 文本比对工具【UltraCompare附安装包】Mac和Windows下载使用

    UltraCompare 强大的文件 xff0c 文件夹 xff0c PDF Word和Excel比较 文件夹同步 xff0c 二进制 十六进制比较 下载一个免费的全功能试用版 xff0c 看看为什么 适用于Windows Mac和Linu
  • 面试问MongoDB和Redis有什么区别?

    MongoDB是一种文档型数据库 xff0c 它以JSON格式存储数据 它适合存储大量的复杂数据 xff0c 例如存储大量结构化数据的应用程序 它提供强大的查询功能和支持分布式部署 Redis则是一种基于内存的数据存储系统 xff0c 它适
  • 在MySQL中查看慢 SQL

    进入 MySQL 命令行工具 可以在终端输入 mysql u 用户名 p xff0c 然后输入密码来登录到 MySQL 输入以下命令开启慢查询日志 xff1a span class token keyword SET span span c
  • 怎么防止SQL注入?

    首先SQL注入是一种常见的安全漏洞 xff0c 黑客可以通过注入恶意代码来攻击数据库和应用程序 以下是一些防止SQL注入的基本措施 xff1a 数据库操作层面 使用参数化查询 xff1a 参数化查询可以防止SQL注入 xff0c 因为参数化
  • WARMING! ! ! BIOS Recovery mode has been detected. Please put the file “ASUS. CAp“ into HDD or a rem

    文章目录 问题场景 xff1a 解决方案 xff1a 步骤1 xff1a 下载适当的BIOS文件步骤2 xff1a 将BIOS文件复制到可移动设备或硬盘驱动器中步骤3 xff1a 进入BIOS恢复模式步骤4 xff1a 恢复BIOS步骤5
  • 如何比较本地git分支与其远程分支?

    如何查看本地分支和远程分支之间的diff xff1f 1楼 第一种 a href http www javaxxz com thread 377026 1 1 html git a branch a 获取可用分支列表 在输出上你可能会看到类
  • VuePress1.x使用及个人博客搭建

    文章目录 介绍快速开始安装目录页面配置 介绍 VuePress 由两部分组成 xff1a 一个以 Vue 驱动的主题系统的简约静态网站生成工具 xff0c 和一个为编写技术文档而优化的默认主题 它是为了支持 Vue 子项目的文档需求而创建的
  • Git项目同时推送到GitHub和Gitee详细操作

    文章目录 前言一 创建仓库 Create a new repository 二 初始化三 配置公钥四 密钥验证五 代码推送 总结 前言 将Git项目同时推送到GitHub和Gitee的好处如下 xff1a 提高代码可见性和协作性 xff1a
  • VMware虚拟机安装CentOS8详细教程

    文章目录 一 下载安装包二 创建虚拟机1 安装 VMware2 创建虚拟机3 编辑虚拟机设置 三 系统安装1 开始安装2 时区设置3 分区设置4 配置网络6 开机密码7 配置安装源8 安装 四 系统配置1 网络检查2 配置静态IP地址 一
  • ChatGPT API调用+服务器部署【附Git地址】

    文章目录 一 关键代码二 使用步骤1 获取代码2 服务器部署 总结 运行对话效果图 一 关键代码 span class token keyword public span span class token keyword class spa
  • zookeeper超详细安装集群部署

    文章目录 一 zookeeper官网下载二 JDK环境安装三 zookeeper安装1 zookeeper解压2 zookeeper配置文件介绍 克隆服务器1 网络检查2 集群配置3 启动集群4 错误记录 一 zookeeper官网下载 下
  • VMware虚拟机克隆、复制虚拟机

    文章目录 为什么要克隆一 环境检查二 开始克隆三 网卡静态配置 为什么要克隆 首先VMware 上创建的虚拟机是可以重复使用的 xff0c 安装好的虚拟机可以直接复制或者剪切到其它任意电脑上 xff0c 然后使用 VMware 打开使用 x
  • CentOS7【管理防火墙端口命令】

    查看防火墙状态 xff1a firewall span class token operator span cmd span class token operator span state 开启防火墙 xff1a systemctl sta
  • Package ‘ufw‘ has no installation candidate问题已解决

    错误提示 xff1a Reading package lists Done Building dependency tree Done Package aptitude is not available but is referred to
  • 用git下载单个分支

    原文发在github io博客 转载写明出处 xff1a http landerlyoung github io blog 2014 01 06 yong gitxia zai dan ge fen zhi 最近在玩octpress 开始一
  • ubuntu18 安装ros-melodic 的踩坑记录

    今天运行a loam程序才发现重装之后的ubuntu18没装ros 于是去查了怎么去查找ros系统的版本 先在终端输入roscore 打开新终端 xff0c 再输入 xff0c rosparam list 再输入rosparam get r
  • 二进制信号量和互斥量之间的区别

    二进制信号量和互斥量之间是否有任何区别 xff0c 或者它们基本相同 xff1f 1楼 它们的同步语义非常不同 xff1a 互斥锁允许序列化对给定资源的访问 xff0c 即多个线程一次等待一个锁 xff0c 并且如前所述 xff0c 该线程
  • SC-A-LOAM在aloam基础上添加了回环优化的代码运行

    知道aloam的朋友们知道这个代码是不包含回环检测的 而有大神们对此添加了sc回环检测 来试着改动一下这个代码 虽然大部分aloam本身的代码都没有改动 但经过博主我的精细对比发现了有如下不同 修改laserMapping cpp文件 添加
  • Livox LiDAR点云数据类型的转化——livox_ros_driver/CustomMsg到sensor_msgs/PointCloud2

    在做Lidar与IMU数据之间的标定时 xff0c 出现了数据无法读取的问题 主要是代码里读取lidar数据是需要下面的语句 span class token function add span lidar msg sensor msgs