Livox-Mid-360 固态激光雷达ROS格式数据分析

2023-12-29 21:44

本文主要是介绍Livox-Mid-360 固态激光雷达ROS格式数据分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

Livox-Mid-360 官方采用livox_ros_driver2ROS功能包发布ROS格式的数据,livox_ros_driver2可以把Livox原始雷达数据转化成ROS格式并以话题的形式发布出去。

下面列举一些雷达的基本概念:

  • 点云帧:雷达驱动每次向外发送的一组雷达数据集合称为一帧雷达数据。如果帧率是10HZ,那么每帧点云数据是100ms内雷达扫描的点云集合。每发布一次toptic就是一帧。注意:一帧激光点云数据并不一定是雷达旋转一周所扫描的点云数据。
  • 点云帧发布频率:1s内雷达发送的帧数,比如10HZ表示1s内雷达发送10帧的点云数据,即每100ms发送一帧点云数据。
  • 扫描频率:雷达的扫描频率一般是针对机械式旋转激光雷达而言的,指1s内雷达旋转的圈数。固态激光雷达的扫描方式和旋转式激光雷达不同,不同产品、厂商有不同的方式。

1.livox_ros_driver2

livox_ros_driver2包中用于处理livox-mid-360的接口有rviz_MID360.launch文件,负责连接到 MID360 LiDAR 设备、发布 pointcloud2 格式数据、自动加载 rviz。

Livox ros 2内部主要参数配置说明:

  • publish_freq:设置点云发布,浮点数据类型的频率,推荐值为5.0、10.0、20.0、50.0等。最大发布频率为 100.0 Hz。
  • multi_topic:如果 LiDAR 设备有独立的主题来发布点云数据 0 -- 所有 LiDAR 设备都使用相同的主题发布点云数据 1 -- 每个 LiDAR 设备都有自己的主题来发布点云数据
  • xfer_format:设置点云格式,0 -- Livox pointcloud2(PointXYZRTLT)点云格式, 1 -- Livox 自定义点云格式, 2 -- PCL 库中的标准点云 2 (pcl :: PointXYZI) 点云格式。

2.点云数据:

查看livox_ros_driver2发布出的话题,/livox/lidar 的消息类型为:sensor_msgs/PointCloud2,sensor_msgs/PointCloud2消息的内容为下(注意:这是一帧点云的消息类型,不是每个点云的信息):


其中每个参数的意义参考以下文章:

sensor_msgs/PointCloud2雷达数据信息-CSDN博客

2.1 PointCloud2数据结构

sensor_msgs/PointCloud2 Message
File: sensor_msgs/PointCloud2.msg
Raw Message Definition
# 该消息包含一个n维点的集合,它可能包含额外的信息,如法线、强度等。点数据以二进制blob的形式存储,其布局由“fields”数组的内容描述。# 点云数据可以组织为2d(类似图像)或1d(无序)。以二维图像组织的点云可以由立体或飞行时间等相机深度传感器产生。# 传感器数据采集时间,坐标坐标系ID (3d点)。
Header headeruint32 seqtime stamp			# topic发布的系统时间 unit:秒string frame_id		# topic发布的系统时间 unit:纳秒# 点云的二维结构。如果云是无序的,高度为1,宽度是点云的长度(个数)。
uint32 height            #也就是线数,固态激光雷达点云不分线数,所以是1
uint32 width# 描述通道及其在二进制数据块中的布局。
PointField[] fields				# 每个点的数据类型,不同枚举值对应不同类型bool    is_bigendian			# 字节的排列顺序
uint32  point_step				# 单点的数据字节步长
uint32  row_step				# 一行数据的字节步长
uint8[] data					# 存储点云的数组,总长度为row_step*heightbool is_dense					# 如果没有非法数据点为真

2.2 fields数据结构

sensor_msgs/PointField Message
File: sensor_msgs/PointField.msg
Raw Message Definition
# 该消息以PointCloud2消息格式保存一个 点 条目的描述。
PointCloud2 message format.
uint8 INT8    = 1
uint8 UINT8   = 2
uint8 INT16   = 3
uint8 UINT16  = 4
uint8 INT32   = 5
uint8 UINT32  = 6
uint8 FLOAT32 = 7
uint8 FLOAT64 = 8string name			# 名
uint32 offset		# 从点结构开始的偏移量
uint8  datatype		# 枚举数据类型
uint32 count		# 有多少个元素

2.3 实际数据分析

header: 					// 点云的头信息seq: 4873stamp: 					// 时间戳secs: 595nsecs: 698295140frame_id: "livox_frame"
height: 1					// 如果cloud 是无序的 height 是 1
width: 9984					// 点云的长度(点云中点的个数)
fields: 					// 该消息以PointCloud2消息格式保存一个 点 条目的描述。- name: "x"				// “x”坐标信息offset: 0				// 从点结构开始的偏移量datatype: 7				// 枚举数据类型		FLOAT32 count: 1				// 域中有多少个元素- name: "y"				// “y”坐标信息offset: 4datatype: 7				// FLOAT32  占4个字节count: 1- name: "z"				// “z”坐标信息offset: 8datatype: 7				// FLOAT32  占4个字节count: 1- name: "intensity"		// 反射强度坐标信息offset: 12datatype: 7				// FLOAT32  占4个字节count: 1- name: "tag"				// 回波信息offset: 16datatype: 2				// UINT8    占1个字节count: 1- name: "line"offset: 17datatype: 2				// UINT8    占1个字节count: 1
is_bigendian: False			// 数据存储方式,包括大端与小端,具体解释见后文参考链接
point_step: 18				// 一个点占的字节数 
row_step: 179712			// 一行的长度占用的字节数
data:[省略]
is_dense: True				// 没有非法数据点
---

这篇关于Livox-Mid-360 固态激光雷达ROS格式数据分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/550814

相关文章

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各