第二章 传感器原理(上):激光雷达工作原理

各位同学,今天我们来聊聊激光雷达。这东西在机器人圈子里,可以说是「眼睛」一样的存在。我刚开始做SLAM那会儿,用的还是单线激光雷达,扫一圈就一条线,现在想想真是简陋。但不管多先进的雷达,核心原理其实就那几样。

2.1 激光雷达的两大测距原理

激光雷达怎么测距离?说白了就两种主流方法:TOF(飞行时间法)三角测距法。我当年在项目里两种都踩过坑,今天一并讲清楚。

2.1.1 TOF(飞行时间法)

TOF的原理特别直白:发射一束激光,打到物体上反射回来,记录时间差。光速是已知的,距离 = 光速 × 时间 / 2。嗯,就这么简单。

但实际做起来可没那么轻松。我印象很深,有一次调试一款16线TOF雷达,发现测距数据总在抖动。查了半天,原来是温度变化导致计时芯片的精度漂了。后来加了温补算法才稳住。

TOF的核心优势:

  • 测距远,几十米到上百米没问题
  • 不受物体颜色和纹理影响
  • 精度高,通常厘米级

注意:TOF雷达对多机干扰比较敏感。我曾经在同一个场地放了两台雷达,结果互相串扰,点云里全是鬼影。解决办法要么错开调制频率,要么加时间同步。

2.1.2 三角测距法

三角测距就更有意思了。它不直接测时间,而是利用激光发射点和接收相机之间的几何关系。激光打到物体上,在相机成像平面形成一个光斑。物体越近,光斑位置偏移越大。通过三角公式就能算出距离。

你想想看,这方法成本低啊,早期很多扫地机器人用的就是这种。但缺点也很明显——测距范围有限,一般就几米。而且精度随距离增加急剧下降。我有个朋友做服务机器人,用了三角测距雷达,结果在空旷大厅里直接「瞎」了,因为远处根本测不准。

对比项 TOF 三角测距
测距范围 远(可达100m+) 近(通常<10m)
精度 高,厘米级 近距离高,远距离差
成本
抗干扰 中等 易受环境光影响

2.2 点云数据格式

激光雷达输出的原始数据,就是点云。每个点包含三维坐标 (x, y, z) 和反射强度 (intensity)。有些雷达还会带时间戳和通道号。

我最早接触点云时,用的是最简单的文本格式——每行一个点,x y z intensity。后来数据量大了,才发现这种格式太占空间。一个64线雷达每秒能产生上百万个点,文本存法分分钟撑爆硬盘。

实际工程中,常见格式有这么几种:

  • PCD(Point Cloud Data):PCL库的标配,支持二进制和ASCII
  • PLY(Polygon File Format):带颜色和法向量信息
  • LAS/LAZ:测绘行业标准,压缩率高
  • BIN(二进制裸数据):我最常用的格式,没有冗余头信息,解析快

我的习惯:做实时SLAM时,我一般用BIN格式存点云。每帧数据固定大小,内存映射直接读,速度比解析PCD快一个数量级。但调试阶段还是用PCD,方便可视化。

下面是一个简单的点云读取示例,用Python演示:

import numpy as np

def load_bin_pointcloud(file_path):
    """
    加载二进制点云文件
    格式:每行4个float32 (x, y, z, intensity)
    """
    raw_data = np.fromfile(file_path, dtype=np.float32)
    points = raw_data.reshape(-1, 4)
    return points[:, :3], points[:, 3]  # 返回坐标和强度

# 使用示例
xyz, intensity = load_bin_pointcloud("scan_001.bin")
print(f"点云数量:{len(xyz)}")
print(f"X范围:{xyz[:,0].min():.2f} ~ {xyz[:,0].max():.2f}")

2.3 常见激光雷达介绍

市面上激光雷达品牌很多,我挑几个有代表性的说说。

2.3.1 机械旋转式

这是最经典的形态。激光器和接收器装在旋转机构上,一边转一边扫。Velodyne的HDL-64E就是代表作,64线,360度视野。我当年第一次用这玩意儿,感觉就像开了天眼——周围环境一览无余。

但机械式有个致命伤:旋转部件容易坏。我在户外项目里,雷达轴承进过沙,直接卡死。后来换成了固态雷达,才省心不少。

2.3.2 固态/混合固态式

没有旋转部件,靠光学相控阵或微振镜来改变激光方向。Livox的Horizon系列就是典型。优点是寿命长、体积小。缺点是视场角有限,一般不到100度。

我记得有一次做AGV导航,用了三台Livox拼接,才覆盖了360度。嗯,成本确实上去了,但可靠性也上去了。

2.3.3 MEMS微振镜式

这种介于机械和固态之间。用微小的镜片振动来偏转激光束。速腾聚创的RS-LiDAR-M1就是MEMS方案。性价比不错,目前很多量产车在用。

类型 代表产品 线数 测距 适用场景
机械旋转 Velodyne HDL-64E 64 120m 自动驾驶、高精地图
固态 Livox Horizon 非重复扫描 260m 机器人、AGV
MEMS 速腾聚创 M1 等效125线 150m 量产车、机器人

选型建议:如果你做室内机器人,三角测距或低线数TOF就够了。室外自动驾驶,至少16线起步,最好64线以上。预算有限的话,MEMS方案是很好的折中。

2.4 本章知识体系

下面这张图,是我自己梳理的激光雷达知识结构。你把它存下来,后面学SLAM时会经常用到。

激光雷达知识体系 测距原理 TOF(飞行时间法) 三角测距法 点云数据格式 PCD PLY LAS/LAZ BIN 常见激光雷达类型 机械旋转式 固态/混合固态 MEMS微振镜

这张图把本章内容串起来了。从测距原理到底层数据格式,再到具体硬件选型,每一步都是后面做SLAM的基础。你把它理解透了,后面学点云配准、特征提取时,就会轻松很多。

避坑指南:我曾经在项目里犯过一个低级错误——没仔细看雷达的数据手册,以为所有雷达输出的点云都是按固定顺序排列的。结果换了一款雷达后,点云解析全乱套了。记住:拿到新雷达,第一件事就是看它的数据格式定义,别想当然。

好了,这一章就到这里。激光雷达的原理和格式,是后面所有算法的基础。下一章我们接着聊IMU的原理,那也是组合里程计里不可或缺的一环。


公众号:蓝海资料掘金营,微信deep3321