激光雷达基础:工作原理、机械式与固态雷达、常见数据格式
聊到激光SLAM,绕不开的第一个话题就是——激光雷达本身。我刚开始接触这个领域时,总觉得算法才是核心,传感器嘛,买个贵的就行了。后来被现实狠狠教育了一顿:不懂雷达原理,你连数据都看不懂,更别说做特征提取了。
这一节,咱们就把激光雷达的底裤扒干净。从工作原理到分类,再到你每天都要打交道的那些数据格式,一次性说透。
一、工作原理:激光雷达是怎么“看”世界的?
说白了,激光雷达就是个“高级尺子”。它发射一束激光,打到物体上反射回来,通过计算时间差来测距。这个原理叫TOF(Time of Flight,飞行时间法)。
核心公式:距离 = 光速 × 飞行时间 / 2
除以2是因为激光走了个来回,别算错了。
我当年第一次调试雷达数据时,发现距离值总是不对,折腾了半天才发现是忘了除以2。嗯,这种低级错误,犯过一次就记住了。
除了TOF,还有三角测距法。这种方案成本低,短距离精度还行,但远距离就拉胯了。家用扫地机器人常用这种,工业级SLAM基本都上TOF。
二、机械式 vs 固态:两种主流方案
你打开任何一款激光雷达的规格书,第一个要看的分类就是:机械式还是固态?
机械式激光雷达
这种雷达有个旋转的“脑袋”,里面装着一组或多组激光收发模块。旋转的时候,激光束扫过周围环境,形成一圈一圈的点云。
- 优点:360°水平视场角,技术成熟,价格相对便宜
- 缺点:有机械旋转部件,怕震动,寿命有限
我在做AGV项目时用过一款16线机械雷达,装在车顶。有一次客户反馈说建图总出现“鬼影”,排查到最后发现是雷达的旋转轴承进了灰尘,导致角度编码器读数飘了。拆开清理后就好了——机械结构就是这么娇气。
固态激光雷达
固态雷达没有旋转部件,靠电子方式控制激光束的扫描方向。常见的有MEMS微振镜和OPA光学相控阵两种。
- 优点:体积小、寿命长、抗震动
- 缺点:视场角通常小于120°,价格偏高
你想想看,自动驾驶量产车为什么越来越倾向固态雷达?就是因为车规级要求高可靠性,机械式那套旋转结构很难通过10万公里的耐久测试。
| 对比项 | 机械式 | 固态 |
|---|---|---|
| 水平视场角 | 360° | 通常≤120° |
| 机械寿命 | 较短(有旋转部件) | 长(无运动部件) |
| 成本 | 较低 | 较高 |
| 典型应用 | AGV、机器人、测绘 | 自动驾驶、无人机 |
三、常见数据格式:你拿到的点云长什么样?
不管雷达是机械还是固态,最终给你的数据格式就那么几种。我整理一下最常见的:
1. PCD(Point Cloud Data)
PCL库的亲儿子,格式清晰,支持点云+法向量+颜色。做SLAM时我习惯用这个格式保存中间结果,方便调试。
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 640
HEIGHT 1
POINTS 640
DATA ascii
1.234 2.345 3.456 128
...
2. LAS/LAZ
测绘行业的标配,支持分类标签(比如地面、植被、建筑)。如果你做的是室外大场景SLAM,大概率会碰到这个格式。
避坑指南:我曾经从一台老旧雷达导出的LAS文件,坐标单位是厘米而不是米。导入PCL后整个地图缩放了100倍,找了半天原因。所以拿到数据第一件事——检查坐标单位!
3. ROS Bag中的sensor_msgs/LaserScan
做ROS开发的同学最熟悉了。2D雷达通常用这个格式,包含角度范围、角度分辨率、距离数组。
# 典型的LaserScan消息结构
Header header
float32 angle_min # 起始角度(弧度)
float32 angle_max # 终止角度(弧度)
float32 angle_increment # 角度分辨率
float32[] ranges # 距离数组(米)
float32[] intensities # 强度数组(可选)
4. ROS Bag中的sensor_msgs/PointCloud2
3D雷达的通用格式。结构比LaserScan复杂,但灵活性更高,可以携带任意字段。
注意:PointCloud2的字段顺序是固定的(x, y, z, 其他),但不同雷达厂商可能把intensity放在不同位置。解析时一定要先读fields定义,别硬编码偏移量。
四、知识体系总览
下面这张图,把这一节的核心逻辑串起来了。你可以把它当作一个快速索引:
这张图把工作原理、雷达分类、数据格式三层关系理清楚了。你从任何一个节点出发,都能找到上下游的关联。做SLAM时,遇到数据问题先看格式,遇到硬件问题先看分类,遇到精度问题先看原理——这是我最常用的排查思路。