激光雷达选型与数据协议:机械式与固态雷达对比、点云数据格式、串口与网络通信协议
做机器人项目,选激光雷达往往是第一道坎。我见过不少团队,算法写得漂亮,结果雷达选错了,点云数据一塌糊涂,整个运动控制全乱套。说白了,选雷达不是挑贵的,是挑对的。
这一章,咱们就聊聊机械式雷达和固态雷达到底差在哪,点云数据长什么样,以及怎么跟雷达“对话”。嗯,内容有点干,但都是实战里必须啃下来的硬骨头。
机械式 vs 固态:两种雷达的“脾气”不一样
先看一张对比图,把核心差异摆出来。
| 对比维度 | 机械式激光雷达 | 固态激光雷达 |
|---|---|---|
| 扫描方式 | 电机带动激光头旋转 | 电子扫描(OPA/Flash) |
| 视场角 | 360° 水平覆盖 | 通常 90°~120°(可拼接) |
| 线数 | 16线、32线、64线、128线 | 等效线数,但分辨率更灵活 |
| 寿命 | 受限于电机轴承,约 1~3 万小时 | 无运动部件,5 万小时以上 |
| 成本 | 高(尤其是多线) | 中低(量产优势明显) |
| 典型场景 | 自动驾驶、高精度地图 | AGV、服务机器人、安防 |
我个人习惯,做室内移动机器人优先考虑固态雷达。为什么?因为机械式雷达那个旋转电机,在震动环境下容易出问题。我曾经在一个仓储AGV项目里,用了某款16线机械雷达,跑了三个月,轴承磨损导致扫描角度偏移,点云直接歪了5厘米。排查了两天才找到原因,从那以后,我对机械雷达的可靠性就多留了个心眼。
但话说回来,如果你需要360°全向感知,比如做园区无人车,机械式雷达目前还是绕不开的选择。固态雷达虽然可以通过多台拼接实现360°,但成本和同步复杂度会直线上升。
核心结论: 机械式雷达适合“转着看”,固态雷达适合“盯着看”。选型时先问自己:我的机器人需要多大的水平视场角?运动控制对点云实时性的要求有多高?
点云数据格式:你拿到的“原始数据”长什么样
不管哪种雷达,最终给你的都是一堆点。每个点包含三个核心信息:距离、角度、反射强度。有些雷达还会输出时间戳和信噪比。
最常见的点云格式有两种:
- 原始极坐标格式:直接输出 (距离, 角度, 强度) 三元组。优点是数据量小,解析快;缺点是需要你自己做坐标转换。
- 笛卡尔坐标格式:输出 (x, y, z, 强度)。省去了转换步骤,但数据量稍大。
举个例子,某款单线雷达的原始数据包长这样:
// 极坐标格式示例(16进制)
AA 55 00 01 // 帧头 + 设备ID
0A 1B 2C 3D // 时间戳
01 02 03 04 // 第1个点:距离0x0102,角度0x0304,强度0x05
05 06 07 08 // 第2个点
...
FF EE // 校验和 + 帧尾
你想想看,如果直接拿这种原始数据做运动控制,CPU得累死。所以一般会在驱动层先做一步处理:把极坐标转成笛卡尔坐标,再丢给上层算法。
我的经验: 在嵌入式平台上,建议在雷达驱动里就完成坐标转换。别把原始数据往上抛,否则主控芯片的算力会被频繁的三角函数计算吃掉。我曾经在一个STM32项目里,就是因为没做这步优化,导致控制周期从10ms拖到了30ms。
串口与网络通信协议:怎么跟雷达“说话”
雷达跟主控通信,主流就两种方式:串口(UART)和网络(Ethernet/UDP)。选哪种,取决于你的数据量和实时性要求。
串口通信:简单可靠,但带宽有限
串口适合单线或低线数雷达,波特率通常 115200 或 921600。协议一般长这样:
- 帧头:固定字节(如 0xAA 0x55)
- 数据段:按固定长度打包,每个点占 3~5 字节
- 校验:CRC16 或累加和
- 帧尾:固定字节(如 0xFF 0xEE)
我建议,写串口驱动时一定要做超时处理和帧同步。为什么?因为串口线一松动,数据流就可能错位。我曾经遇到过一帧数据中间丢了一个字节,结果后面所有点的距离值都偏移了,机器人直接撞墙。从那以后,我的串口驱动里都会加一个“帧同步状态机”,确保每次解析都从帧头开始。
网络通信:高带宽,但延迟不稳定
多线雷达(16线以上)基本都用网络接口。协议通常是 UDP,因为 TCP 的重传机制会引入不确定延迟,对运动控制来说是灾难。
典型的网络数据包结构:
// UDP 数据包结构
struct LidarPacket {
uint16_t packet_type; // 包类型(点云/状态/配置)
uint16_t packet_len; // 数据长度
uint32_t timestamp; // 时间戳(微秒)
uint8_t data[]; // 点云数据(变长)
uint16_t checksum; // 校验和
};
这里有个坑:UDP 不保证包序。如果你的雷达数据包被拆成了多个 UDP 报文,接收端必须做重组和排序。我习惯在驱动层维护一个环形缓冲区,按时间戳排序后再往上抛。
注意: 网络通信的延迟抖动可能达到 5~10ms。如果你的运动控制周期是 20ms,这个抖动还能接受。但如果周期是 5ms,建议用串口或者带实时以太网(如 EtherCAT)的雷达。
一张图看懂本章知识体系
下面这张 SVG 图,把机械式 vs 固态、点云格式、通信协议的关系串起来了。你可以把它当作选型时的快速参考。
选型实战:一个简单的决策流程
说了这么多,到底怎么选?我总结了一个三步决策法:
- 看视场角需求:需要 360° 吗?是 → 机械式;否 → 固态。
- 看数据量:单线或 16 线以下 → 串口够用;32 线以上 → 必须上网络。
- 看环境:震动大、灰尘多 → 固态优先;户外远距离 → 机械式更成熟。
避坑指南: 我曾经在一个项目里,为了省钱选了某款低端固态雷达,结果它的视场角只有 90°,机器人转弯时存在大范围盲区。最后不得不加装第二台雷达,成本反而更高。所以,选型时别只看参数表,一定要结合你的运动控制算法来评估。