单线激光雷达数据包
好的,我们来详细解释一下典型的单线激光雷达数据包(Data Packet) 的结构和含义。
单线激光雷达(如常见的RPLIDAR A系列、SICK TiM系列部分型号等)在机器人、AGV、扫地机等领域广泛应用。它通过快速旋转的激光发射器和接收器,在一个平面上扫描,获取一系列离散点的距离信息,形成一个“线”的轮廓。每次完整的360°旋转扫描到的所有点,或者由雷达内部或上位机软件组织成的特定数量的点集合,通常被打包成一个个“数据包”发送给上位机。
一个典型的单线激光雷达数据包通常包含以下几个核心部分,具体细节因雷达型号和通讯协议(如UDP, TCP, Serial)而异,务必参考具体雷达的通信协议手册。以下是一个通用化的描述:
-
起始头/同步头:
- 作用: 标识一个数据包的开始,让接收方能正确地识别数据包的起始位置。这对于串口或网络传输中避免数据粘包至关重要。
- 内容: 通常是固定的几个字节的特殊字符组合(如
0xAA,0x55,0x5A,0xA5或其组合),或者特定的ASCII字符串。 - 长度: 固定几个字节。
-
时间戳:
- 作用: 记录该数据包(或其中包含的扫描点数据)产生的时间点。
- 意义:
- 数据同步: 用于与IMU、里程计、其他传感器或上位机时间进行同步。
- 运动畸变补偿: 机器人自身移动时,扫描一圈需要时间(几十毫秒到几百毫秒),位于扫描圈起始、中间、结束处的点,其测量时刻对应的机器人位置是不同的。高精度应用需要利用时间戳补偿这个运动。
- 计算扫描频率: 对比连续数据包的时间戳可以精确计算雷达的实际扫描频率。
- 内容: 可能是雷达内部计数器(单位可能是ns, μs, ms),也可能是自雷达启动以来的时间(UTC时间戳不常见,多用于高级型号)。
- 长度/精度: 通常是4字节(uint32,单位ms或μs)或8字节(uint64, ns)。精度越高,对同步和补偿越有利。
-
扫描点数据集合:
- 作用: 数据包的核心部分,包含本次扫描获得的一个或多个点的测量信息。
- 结构: 每个扫描点本身通常由以下几个字段组成:
- 距离:
- 作用: 测量点到雷达中心的直线距离。
- 单位: 毫米(mm)最常见,部分雷达可能用厘米(cm)或米(m)。
- 类型: 通常是16位无符号整数(
uint16)或32位浮点数(float)。 - 范围与精度: 需要了解雷达的最大最小量程(如0.15m-12m),以及精度(例如±30mm)。超出量程的值通常是特定标识(如最大值
0xFFFF)。
- 角度:
- 作用: 测量点相对于雷达0°参考方向的角度。
- 单位: 度(°)最常见,有时用弧度(rad)。0°参考方向(机械0°)定义见雷达手册(通常在电机线束或特定标记位置)。
- 类型:
float或uint16(如0-36000代表0.00-359.99°)。更常见的是雷达直接给出角度值(float度)。 - 重要: 角度值是每个点独立测量的关键信息! 它定义了点在扫描线上相对于雷达零位的位置。这与通过旋转步进推算出来不同(雷达通常使用编码器记录每个脉冲的角度)。
- 质量/信号强度/置信度/错误标志(可选,但强烈推荐):
- 作用: 表示该测量点的可靠性或信号强度信息。
- 内容:
- 信号强度: 激光反射回来的光强度(如
uint8或uint16)。值越高,反射越强(如白墙),值越低反射越弱(如黑色物体、远距离物体、玻璃)。可用于过滤低质量点或区分材质。 - 置信度: 雷达计算出的对该点距离值的置信程度(百分比或0-100值)。
- 错误标志位: 标识该点是否无效(例如超过量程、信号过弱、硬件错误)。这比单纯给最大距离值更清晰。
- 信号强度: 激光反射回来的光强度(如
- 意义: 过滤噪声点、无效点,提高点云质量,对算法稳定性很重要。
- 距离:
-
扫描起始标志位(Scan Tag):
- 作用: 最重要的标记之一! 用于标识这个点是否是本次360°扫描的第一个点(或“新一圈扫描的开始点”)。
- 内容: 通常是一个布尔值(1位)或者一个特定的枚举值(如0=正常点, 1=扫描起始点),嵌入在每个扫描点数据中,或者作为数据包的一个独立字段。较新的设计普遍在每个点数据里包含一个
is_scan_start标志位。 - 意义:
- 分割扫描圈: 上位机需要依赖这个标志来确定从哪里开始算新的一圈扫描。没有它,连续的流数据无法被分割成完整的360°扫描帧。
- 计算角度增量: 相邻点间的角度增量(步进)很重要,但这个增量可能不均匀(电机转速波动、角度编码器分辨率、点云重采样等)。
scan_tag标识的起始点为计算相对角度提供了绝对参考。
- 注意: 不同雷达处理方式不同。有些雷达每个数据包包含一整圈或固定点数(如360点/圈),则包本身可能就代表一圈,不一定需要每点带标签。串行发送不定长点数据的雷达更依赖这个标志。查阅手册确认!
-
点数量/包长度:
- 作用: 指明该数据包中包含了多少个扫描点数据。
- 位置: 可能在数据包头(在时间戳之后),或者在数据包尾部(校验和前)。
- 类型: 通常是16位无符号整数(
uint16)。
-
校验和:
- 作用: 用于验证数据传输过程中是否出现错误(比特翻转、丢包等)。接收方计算数据包的校验和,与包内提供的校验和比较,不一致则丢弃该包。
- 类型: 常见的算法有
CRC8,CRC16,CRC32,XOR和(Checksum)。CRC16/CRC32更鲁棒。 - 位置: 几乎总是在数据包的尾部。
总结一个典型的单线激光雷达数据包流程:
- 接收方检测到起始头 -> 知道新包来了。
- 读取时间戳 -> 记录数据产生时间。
- 读取点数量 -> 知道后面要解析多少个点(如果包是固定点数或点在头中指定)。
- 循环读取
N(点数量)个扫描点数据:- 读取距离值,转换成实际距离(如mm)。
- 读取角度值,转换成实际角度(如°)。
- (可选)读取质量/强度/错误标志。
- 检查扫描起始标志 -> 如果是
True,则标识为新扫描圈的开始点。
- 读取校验和 -> 与前面计算的数据校验和对比,确认数据完整性。
- 上位机软件收到数据包后:
- 利用
scan_tag将连续的点流分割成一圈一圈的扫描。 - 根据每个点的距离和角度,计算该点在雷达坐标系下的笛卡尔坐标
(x, y):x = range * cos(angle)y = range * sin(angle)
- 结合时间戳进行时间同步或运动畸变补偿(若需要)。
- 利用质量信息过滤噪点或进行其他处理。
- 将点云用于SLAM建图、定位、避障等算法。
- 利用
关键点强调:
- 务必查阅具体雷达型号的官方通信协议手册! 字节顺序(大端/小端)、字段定义、起始头格式、是否包含转速(RPM)信息等细节都可能不同。
- 角度是雷达定义的点自身的角度值(相对于雷达0位),不是累计值,也不是步进值。计算点时需要这个值。
- 扫描起始标志是组织连续点流成完整扫描圈的关键。 知道如何识别每圈的起点非常重要。
- 时间戳对于需要精确融合或补偿的应用(特别是移动机器人)极其重要。
- 质量信息可以显著提升点云的可靠性。
例子(高度简化伪代码表示一个点数据包,仅表达概念):
[起始头: 2字节: 0xAA55]
[时间戳: 4字节 (uint32, ms): 123456789]
[点数量: 2字节 (uint16): 360] // 假设一圈360点
// 循环360次,每次读取一个点
FOR i=1 TO 360:
[距离: 2字节 (uint16, mm): 2530] // 表示2.53米
[角度: 4字节 (float32, degrees): 127.5] // 精确到小数点后
[质量: 1字节 (uint8, 信号强度): 200] // 0-255, 越高越好
[扫描起始标志: 1字节 (bool): 0] // 0 表示正常点,1 表示该点是扫描起点 (注意:对于一圈的第一个点,这里是1)
ENDFOR
[校验和: 2字节 (CRC16): 0x34D2]
希望这份详细的中文解释能帮助您理解单线激光雷达数据包的构造!
单线激光雷达是什么 如何选型
机器人 、无人驾驶 、 轨道交通、 测绘作业…这些年随着这些行业喷井式的爆发,激光雷达迅速占领了人们的眼球,享受到了弱水三千只取一瓢的待遇。那么激光雷达的选型就变得尤为重要,本文我们就
2022-07-06 17:34:56
delta2A激光雷达参考手册
Delta-2A SDK 包含了方便用户对 Delta-2A 系列进行性能评估与早期开发所需的数据手册、规格书、驱动包(Linux 和 ROS)和 Windows
资料下载
jf_55983519
2023-06-06 15:41:21
多线激光雷达和单线激光雷达区别
。是一家能提供单点、单线到多线全系列、dtof、itof全品类激光雷达方案定制化的公司,而且掌握了机器人移动底盘技术。在激光雷达核心硬件、专用芯
2022-02-10 18:36:41
多线与单线激光雷达的区别
集中于国外,包括美国的Velodyne、Quanegy以及德国的IBEO品牌等。以Velodyne为首的多线激光雷达价格昂贵,均在万元(美元)级别以上,一般车企难以承受如此高昂的价格。相比来说,单线
2019-08-13 14:09:41
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机