liosam 速腾RoboSense 32线激光雷达数据适配,timestamp位数不够

本文讨论了在处理Robosense点云数据时,由于时间戳精度需求,将timestamp从float类型改为double的原因,以及如何相应地调整传感器类型定义和YAML配置。作者强调了float和double的有效数字位数区别,以及在代码中避免不必要的float转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是时间,RS的点云的时间是绝对时间,所以不能用加法。

自定义一个sensor类型KJW,随便什么名,我后来改为RS32了,因为是robosense32线

修改过后,scan start和end差距过大,六十多秒。

这里的timestamp要double转float,这里有个古老知识要复习,float是32位,有23位是数字,为什么只有8位一样?

首先,float 是 32位, 其中有23位用于存放尾数, 带有一个固定隐含位… 所以float的有24个二进制有效位位数.

其次,2^24共有8个十进制位. 所以有些编译器 float的有效数字位是 8位 , 有些有效数字位是 7位.(注意不是小数的位数, 是有效数字位)

而double有15~16位有效数字。

所以,timestamp用float是装不下的,所以需要把lio-sam的数据结构改double,从需求看,整数秒有10位,多出5位比毫秒还低,足够用了。

然后直接改VelodynePointXYZIRT的time数据类型为double就好了

不一定要修改这个,只是因为using PointXYZIRT = VelodynePointXYZIRT;

自己定义一个

最后就是回到问题原点,这里不要再加float转换了,不然白改。

别忘了yaml也一起改了,N_SCAN:32,Horizon_SCAN:1800

### 双线交叉激光雷达数据格式 双线交叉激光雷达通常用于获取环境中的三维空间信息。这类设备通过发射两束或多束不同角度的激光脉冲来测量物体的距离和反射强度。 #### 数据结构描述 每条扫描线由一系列点组成,每个点包含以下属性: - **距离 (Distance)**:表示目标物到传感器之间的直线距离,单位通常是米(m)[^1]。 - **强度 (Intensity)**:代表返回信号的能量大小,反映了表面材质特性[^1]。 - **时间戳 (Timestamp)**:记录该点被采集的具体时刻,有助于同步多源感知数据流。 - **角位置 (Angular Position)**:指明当前测距点相对于雷达原点的角度坐标,在水平面内以度(°)计量;垂直方向则可能采用不同的编码方式取决于具体型号规格。 对于双线配置而言,除了上述基本信息外,还需额外存储两条独立光束间的相对几何关系参数,比如夹角θ以及高度差h等物理量,以便于后续处理阶段能够准确重建场景模型。 #### 文件格式标准 常见的文件格式有PCAP、LAS/LAZ等形式,其中后者广泛应用于地理信息系统(GIS),支持高效压缩与快速索引访问功能。针对特定应用场景下的自定义二进制序列化方案也是可行的选择之一,这主要依赖于开发团队的技术栈偏好及项目需求考量。 #### 示例代码片段展示如何解析此类数据集 假设有一个名为`lidar_data.bin` 的二进制文件保存着来自某款双线交叉LiDAR装置所捕获的信息,则可以按照如下Python脚本读取并打印前几个样本点的内容: ```python import struct def read_lidar_binary(file_path): with open(file_path, 'rb') as f: while True: buffer = f.read(20) # 假设每个点占用20字节的空间布局 if not buffer or len(buffer)<20 : break distance, intensity, timestamp, angle_h, angle_v = \ struct.unpack('fBIfH', buffer[:14]) # 解析固定长度字段 print(f"Distance={distance:.3f}m Intensity={intensity} Timestamp={timestamp}s Angle_H={angle_h}° Angle_V={angle_v}") read_lidar_binary('./data/lidar_data.bin') ``` 此段程序仅作为概念验证用途,并未考虑实际硬件接口细节或更复杂的元数据管理机制。真实世界应用中往往还需要对接官方SDK文档说明来进行更加严谨细致的设计实现工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值