激光雷达基础:工作原理、点云数据格式与选型对比
做机器人路径规划,激光雷达就是我们的「眼睛」。说实话,没有它,后面讲的实时避障、地图构建全是空中楼阁。这一章我带你把激光雷达的底裤扒干净——从物理原理到数据格式,再到怎么挑一款适合你项目的雷达。
2.1 工作原理:TOF 与三角测距
市面上主流的激光雷达,测距原理就两派:TOF(飞行时间法)和三角测距法。我当年刚入行时也纠结过,到底选哪个?后来踩了坑才明白,它们各有各的脾气。
2.1.1 TOF 原理
TOF 说白了就是「打一枪,听回声」。激光器发射一个脉冲,打到物体上反射回来,接收器捕获。光速是已知的,测出时间差,距离就出来了。
核心公式:
距离 = (光速 × 飞行时间) / 2
除以 2 是因为光走了个来回。
TOF 雷达的优点是测距远(几十米到上百米),精度受距离影响小。我在做园区无人车时,用的就是 16 线 TOF 雷达,30 米外的行人也能稳定检测到。
个人经验:TOF 雷达对温度敏感。夏天暴晒下,内部激光器功率会漂移,导致测距偏差。我习惯在固件里加一个温度补偿表,实测能减少 2-3cm 的误差。
2.1.2 三角测距原理
三角测距就有点「几何学霸」的味道了。激光器以固定角度发射一束光,物体反射后,接收器(通常是 CMOS 或 CCD)上的光斑位置会偏移。根据偏移量,用三角公式算出距离。
核心逻辑:
距离 = 基线长度 × 焦距 / 光斑偏移量
基线越长,测距精度越高,但雷达体积也越大。
三角测距的优点是近距离精度极高(毫米级),而且成本低。我见过很多扫地机器人用的就是这种方案,几块钱的模组就能用。但缺点也很明显——距离一远,光斑偏移量太小,精度断崖式下跌。超过 10 米基本就废了。
避坑指南:我曾经在一个仓储 AGV 项目里用了三角测距雷达,结果货架通道 15 米远的地方,雷达直接「失明」了。后来换成 TOF 才解决问题。记住:室内短距离(<10m)选三角,室外或长距离选 TOF。
2.2 点云数据格式
雷达扫出来的原始数据叫「点云」。你想想看,每个点包含什么信息?最基本的是距离和角度,但实际工程中远不止这些。
2.2.1 单线雷达数据格式
单线雷达(如 RPLIDAR A1)每次扫描输出一帧数据,包含 N 个采样点。每个点通常用结构体表示:
struct LaserPoint {
float angle; // 角度,单位度
float distance; // 距离,单位毫米
float intensity; // 反射强度,0-255
uint8_t quality; // 质量等级
};
intensity 这个字段很多人忽略,其实很有用。我在做地面检测时,就靠反射强度区分沥青路面和白色车道线——强度值差异很明显。
2.2.2 多线雷达数据格式
多线雷达(如 Velodyne VLP-16)的数据就复杂多了。每个点除了距离和角度,还有线束 ID 和时间戳。标准格式是:
struct PointXYZIRT {
float x; // 笛卡尔坐标 X
float y; // 笛卡尔坐标 Y
float z; // 笛卡尔坐标 Z
float intensity; // 反射强度
uint16_t ring; // 线束编号
double timestamp; // 时间戳,单位微秒
};
我的习惯:拿到原始点云后,第一件事就是做「去畸变」。因为雷达在旋转时,机器人也在运动,导致一帧点云里的点对应的是不同时刻的位置。我会用 IMU 数据做运动补偿,把点云统一到同一时刻的坐标系下。
2.2.3 点云存储格式
工程中常用的点云文件格式有:
- PCD(Point Cloud Data):ROS 生态标配,支持 ASCII 和二进制,带 header 描述字段。
- PLY(Polygon File Format):支持顶点和面片,常用于三维重建。
- LAS/LAZ:测绘行业标准,带分类标签(地面、植被、建筑等)。
- BIN:裸二进制,我写实时算法时最爱用,解析快,不浪费 CPU。
注意:PCD 的 ASCII 格式虽然可读性好,但文件体积巨大。一个 10 万点的 PCD 文本文件可能有 50MB,换成二进制只有 10MB。做实时系统,永远用二进制格式。
2.3 常用激光雷达选型对比
选雷达就像选车——没有最好的,只有最合适的。我根据项目经验,把主流雷达分成三类,你对照着看。
| 型号 | 原理 | 线数 | 测距范围 | 精度 | 适用场景 | 参考价格 |
|---|---|---|---|---|---|---|
| RPLIDAR A1 | 三角测距 | 1 | 0.15-12m | ±1% | 扫地机器人、教学 | ¥500 |
| RPLIDAR S2 | TOF | 1 | 0.05-40m | ±3cm | 室内导航、AGV | ¥2000 |
| Velodyne VLP-16 | TOF | 16 | 0.5-100m | ±3cm | 无人车、室外机器人 | ¥30000 |
| Livox Mid-40 | TOF(非重复扫描) | 1(但视场覆盖广) | 0.5-260m | ±2cm | 自动驾驶、测绘 | ¥8000 |
| Hesai PandarXT-16 | TOF | 16 | 0.3-80m | ±2cm | 机器人、低速无人车 | ¥15000 |
选型建议:
- 预算有限 + 室内短距:RPLIDAR A1 够用,但别指望它在阳光下工作。
- 室内导航 + 需要建图:RPLIDAR S2 或 YDLIDAR G4,性价比高。
- 室外无人车:至少 16 线,Velodyne 或 Hesai 都行。Livox 的 Mid-40 虽然只有 1 线,但非重复扫描方式能覆盖很大视场,适合低速场景。
- 测绘级应用:直接上 64 线或 128 线,别省钱。
我的踩坑经历:有次给巡检机器人选雷达,图便宜买了某国产 8 线 TOF。结果在雨天测试时,水滴反射导致大量噪点,路径规划直接崩溃。后来换了带「雨雾模式」的雷达(通过多回波检测滤除雨滴),才稳定下来。所以,环境适应性比参数更重要。
2.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你一看就明白:从物理原理到数据格式,再到选型,是一条完整的链路。