激光雷达基础:工作原理、类型与数据格式

大家好,我是你们的讲师。今天咱们聊聊激光雷达的基础知识。说实话,这玩意儿我接触了快十年,从最早的机械式一路做到现在的固态式,踩过的坑真不少。但别担心,我会把最核心的东西掰开揉碎了讲给你听。

一、激光雷达是怎么“看”世界的?

激光雷达,英文叫LiDAR,说白了就是“激光+雷达”。它跟咱们人眼不一样——人眼靠接收环境反射的可见光,而激光雷达是自己主动发射激光,然后等激光碰到物体弹回来,再根据时间差或者角度差算出距离。

目前主流的测距原理就两种:TOF(飞行时间法)和三角法。

1. TOF法:简单粗暴,但很有效

TOF的原理特别直白:我发射一束激光,记录下发射的时刻t1;等激光碰到物体反射回来,接收器收到信号,记录下时刻t2。那么距离d = c × (t2 - t1) / 2,其中c是光速。

你想想看,光速是3×10⁸ m/s,如果目标距离10米,来回也就66纳秒左右。所以TOF雷达的核心难点在于——时间测量必须极其精确。我在项目中用过一款TOF雷达,它的时间分辨率做到了几十皮秒级别,才能保证厘米级的测距精度。

核心公式:

d = c × Δt / 2

其中Δt = t₂ - t₁,c ≈ 3×10⁸ m/s

我的经验:TOF雷达在室外强光下容易受干扰。我曾经在正午阳光下调试一款TOF雷达,发现测距值频繁跳变。后来加了窄带滤光片,只让激光波长(通常是905nm或1550nm)通过,问题才解决。

2. 三角法:短距离的精度之王

三角法的思路不太一样。它把激光发射器和接收器(通常是CMOS或CCD)分开一段距离,形成一个三角形。激光打到物体上,反射光落在接收器上的位置会随着距离变化而移动。通过几何关系,就能算出距离。

三角法的优势在于近距离精度极高,可以达到微米级别。但缺点也很明显——距离越远,精度下降越快。所以它主要用于室内机器人、工业测量等场景。

对比项 TOF法 三角法
测距范围 几十米到几百米 几米到十几米
近距离精度 厘米级 毫米甚至微米级
远距离精度 相对稳定 急剧下降
抗环境光能力 中等(需滤光) 较强
典型应用 自动驾驶、测绘 AGV、工业检测

二、机械式 vs 固态式:两种截然不同的“扫描”方式

搞清楚了测距原理,咱们再来看看激光雷达是怎么“扫描”整个环境的。这里分两大流派:机械式和固态式。

1. 机械式激光雷达:老大哥,但依然能打

机械式雷达,顾名思义,就是靠电机带着激光收发模块旋转。我最早接触的是Velodyne的HDL-64E,64线,转起来嗡嗡响,像个小型电风扇。它通过旋转实现360°水平视场角,垂直方向则靠多组激光器堆叠(比如16线、32线、64线)。

优点很明显:视场角大、技术成熟、点云密度高。但缺点也让人头疼:

  • 有机械运动部件——电机、轴承、滑环,这些都会磨损。我记得有个项目,雷达用了半年,滑环接触不良,导致某几根扫描线数据时断时续,排查了好久才发现。
  • 体积大、重量重——64线雷达跟个小水桶似的,装在车顶特别显眼。
  • 成本高——早期一台64线雷达要几十万人民币。

2. 固态式激光雷达:后起之秀,未来趋势

固态式雷达没有旋转部件,靠电子方式控制激光束的偏转。主流技术路线有三种:

  • MEMS微振镜:用一个小镜子反射激光,镜子通过微电机快速摆动,实现扫描。我测试过一款MEMS雷达,体积只有火柴盒大小,但视场角能做到120°×30°。
  • OPA光学相控阵:通过控制阵列中每个发光单元的相位,让激光束在空间中干涉,实现无机械偏转。这技术听着很科幻,但目前还在实验室阶段。
  • Flash面阵:一次性发射一个大面积的激光脉冲,然后用焦平面阵列接收。有点像相机闪光灯,一次拍一张“深度图”。

注意:固态雷达虽然叫“固态”,但MEMS方案里其实还是有微小的机械运动(振镜摆动)。严格来说,只有OPA和Flash才是真正的全固态。别被名字骗了。

我个人更看好固态雷达的未来。为什么?因为它成本低、体积小、可靠性高。自动驾驶量产车现在基本都转向固态方案了。但固态雷达也有短板——视场角通常不如机械式大,而且远距离性能还在追赶。

三、点云数据格式:激光雷达的“语言”

激光雷达采集到的原始数据,经过处理后就是点云。点云说白了就是一大堆三维坐标点,每个点代表激光打到物体表面的一个位置。

1. 最基本的点云结构

一个点通常包含以下信息:

  • x, y, z:三维坐标,单位通常是米
  • intensity:反射强度,反映物体表面的反射特性
  • ring:线束编号(对于多线雷达)
  • timestamp:时间戳

在代码里,一个点可以这样表示:

// C++ 结构体示例
struct PointXYZI {
    float x;      // 4字节
    float y;      // 4字节
    float z;      // 4字节
    float intensity; // 4字节
};

2. 常见的点云文件格式

实际项目中,点云数据需要保存和交换。我常用的格式有这几种:

格式 特点 适用场景
PCD Point Cloud Library原生格式,支持多种字段 PCL处理、算法开发
PLY 支持顶点和面片,可带颜色 3D建模、可视化
LAS/LAZ 行业标准,压缩率高 测绘、地理信息
BIN 纯二进制,无头信息 高性能读写、嵌入式

我的习惯:做算法原型时用PCD格式,方便用PCL库直接读写。但部署到嵌入式设备上,我会转成BIN格式,省去解析头文件的开销,读写速度能快好几倍。

3. 点云数据在内存中的组织方式

点云不是简单的数组,它通常有特定的组织方式。对于多线机械式雷达,点云是按扫描线组织的:

// 伪代码:按线束组织点云
for (int ring = 0; ring < num_rings; ++ring) {
    for (int azimuth = 0; azimuth < points_per_ring; ++azimuth) {
        Point p = cloud[ring * points_per_ring + azimuth];
        // 处理点 p
    }
}

这种组织方式对后续的障碍物检测很重要。比如做地面分割时,我经常利用同一扫描线上相邻点的连续性来加速计算。

四、本章知识体系总览

说了这么多,咱们用一张图来总结一下本章的核心内容:

激光雷达基础:知识体系 工作原理 TOF法 三角法 d = c × Δt / 2(TOF核心公式) 雷达类型 机械式 固态式 有旋转部件 360°视场角 MEMS/OPA/Flash 无旋转部件 点云数据格式 PCD/PLY/LAS BIN格式 x, y, z, intensity, ring 核心:理解测距原理 → 选择合适雷达 → 解析点云数据

嗯,这张图把本章的三个核心模块串起来了。从工作原理出发,理解TOF和三角法的区别;然后根据应用场景选择机械式或固态式雷达;最后,不管用哪种雷达,最终都要面对点云数据的解析和处理。

我个人觉得,初学者最容易犯的错误是——一上来就调算法,却连雷达输出的点云是什么格式都没搞清楚。我曾经带过一个实习生,花了两周时间调聚类算法,结果发现他读进来的点云坐标单位是厘米,而算法默认是米,所有距离都差了100倍。这种低级错误,只要花10分钟看看数据格式就能避免。

好了,这一章的内容就到这里。记住,激光雷达是你的“眼睛”,但只有理解了它的工作原理和数据格式,你才能真正用好这双眼睛。

本章要点回顾:

  • TOF法测距远,适合室外;三角法近距离精度高,适合室内
  • 机械式雷达成熟但娇贵,固态雷达是未来趋势
  • 点云数据至少包含xyz坐标和强度值,不同格式各有优劣
  • 拿到雷达第一步:先搞清楚数据格式和坐标系
可可精品资料库