激光雷达基础:工作原理、常见参数与数据格式
大家好,我是你们这门课的主讲。今天咱们来聊聊激光雷达最核心的基础知识。说实话,我见过不少同学一上来就急着调算法、跑点云,结果连雷达怎么工作的都没搞明白,最后踩坑踩得怀疑人生。所以,这一章咱们把地基打牢。
核心观点:激光雷达本质上就是个「激光尺子」——发射激光,等它反射回来,算时间差或频率差,从而知道前方物体的距离。
一、工作原理:TOF 与 FMCW
目前主流的激光雷达,工作原理就两种:TOF 和 FMCW。我个人的习惯是,先理解 TOF,因为它最直观。
1. TOF(飞行时间法)
TOF 的全称是 Time of Flight,说白了就是「计时」。雷达发射一束激光脉冲,打到物体上反射回来,接收器收到信号。用光速乘以时间的一半,就是距离。
公式很简单:
距离 = (光速 × 飞行时间) / 2
嗯,这里要注意:光速是 3×10⁸ m/s,时间精度要求极高。比如测 1 米远的物体,飞行时间只有大约 6.7 纳秒。所以 TOF 雷达的核心难点在于——如何精确计时。
我的经验:我在项目中遇到过一款国产 16 线雷达,标称精度 ±2cm,但实际在强光下误差能到 5cm。后来排查发现是接收器的噪声抑制没做好。所以选型时别只看参数表,实际测一测才靠谱。
2. FMCW(调频连续波)
FMCW 是另一种思路。它不发射脉冲,而是发射频率连续变化的激光。发射信号和反射信号之间会有频率差,这个差值和距离成正比。
为什么会有频率差?因为激光在往返过程中,发射频率已经变了。你想想看,就像你对着山谷喊一声,回声回来时你的声音已经变了调——FMCW 就是利用这个「变调」来测距。
FMCW 的优势很明显:
- 可以直接测量速度(多普勒效应)
- 抗干扰能力强
- 对弱反射物体更敏感
但缺点也很突出:成本高、技术复杂。目前只有少数厂商(比如 Aeva、Mobileye)在量产。
避坑指南:我曾经帮一家公司做方案选型,他们想用 FMCW 做低速园区车。结果发现 FMCW 在近距离(<1米)的测距精度反而不如 TOF,因为频率差太小了。所以,没有绝对的好坏,只有适不适合。
二、常见参数:看懂雷达的「身份证」
拿到一款激光雷达,你首先得看懂它的参数。我把它分成三类:空间能力、精度能力和环境能力。
1. 线数
线数就是激光束的数量。16 线、32 线、64 线、128 线……线数越多,点云越密,看到的细节越丰富。但线数多也意味着数据量大、成本高。
我个人建议:做低速机器人,16 线够用;做高速自动驾驶,至少 64 线起步。
2. 视场角(FOV)
视场角分水平视场角和垂直视场角。水平视场角通常 360° 或 120°(前向),垂直视场角一般在 30° 左右。
这里有个坑:垂直视场角决定了你能看到多近的地面。如果垂直视场角太小,车头前方的地面盲区会很大。
3. 精度
精度包括测距精度和角度精度。测距精度通常 ±1~3cm,角度精度 0.1° 左右。
我遇到过最离谱的事:某款雷达标称精度 ±1cm,但实际在雨天测距误差能到 10cm。后来发现是雨滴造成的多路径反射。所以,精度参数一定要看「典型值」还是「全工况值」。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 线数 | 16 / 32 / 64 / 128 | 线数越高,点云越密 |
| 水平视场角 | 360° / 120° | 360° 用于环视,120° 用于前向 |
| 垂直视场角 | 30°(±15°) | 决定地面盲区大小 |
| 测距精度 | ±2cm | 注意区分典型值和极限值 |
| 最大测距 | 100m / 200m | 受反射率影响很大 |
三、数据格式:点云长什么样?
激光雷达输出的数据,我们叫它「点云」。每个点包含 x、y、z 坐标,以及反射强度(intensity)。
常见的存储格式有三种:
1. PCD(Point Cloud Data)
PCD 是 PCL 库的标准格式。可读性好,支持 ASCII 和二进制两种方式。我平时调试最喜欢用 ASCII 格式,可以直接用文本编辑器打开看。
# .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 1000
HEIGHT 1
POINTS 1000
DATA ascii
1.23 2.34 3.45 128
1.24 2.35 3.46 130
...
2. BIN(二进制文件)
BIN 格式没有文件头,直接存储二进制数据。每个点通常占 16 字节(4 个 float:x, y, z, intensity)。
为什么用 BIN?因为读取速度快,文件体积小。我处理大规模点云时,一定会转成 BIN 格式。
// 读取 BIN 文件的伪代码
float data[4];
while (fread(data, sizeof(float), 4, fp) == 4) {
float x = data[0];
float y = data[1];
float z = data[2];
float intensity = data[3];
}
3. PCAP(网络抓包)
PCAP 是网络数据包格式。激光雷达通常通过 UDP 协议发送数据,PCAP 就是把这些网络包原样保存下来。
为什么要用 PCAP?因为你可以回放数据,模拟真实的雷达运行环境。我在做算法测试时,经常用 PCAP 文件来复现路测场景。
小技巧:如果你拿到的是 PCAP 文件,可以用 Wireshark 打开,过滤出雷达的 UDP 端口,然后导出成 CSV 或 BIN。我一般用 Python 的 scapy 库来解析,效率很高。
四、知识体系总览
下面这张图是我自己画的,把本章的核心内容串起来了。你可以把它当作一张「地图」,后面每学一个新知识点,都能在这张图上找到位置。
这张图把三大模块串起来了。你从「工作原理」出发,理解雷达怎么测距;然后看「常见参数」,知道怎么选型;最后学「数据格式」,知道怎么处理数据。每一步都是下一章的基础。
本章小结:
- TOF 靠计时测距,FMCW 靠频率差测距
- 线数、视场角、精度是选型三大核心参数
- PCD 适合调试,BIN 适合大规模处理,PCAP 适合回放
好了,这一章就到这里。下一章咱们开始动手——我会带你搭建一个激光雷达的仿真环境,让你在电脑上就能生成点云数据。到时候你会发现,理解了这些基础,后面的路会顺很多。