第2章 激光雷达基础:工作原理、常见类型与点云数据

大家好,我是你们这门课的主讲工程师。今天咱们来聊聊激光雷达的基础知识。说实话,很多新手一上来就急着调算法、跑建图,结果连雷达发出来的点云是啥意思都搞不清楚。我当年也犯过这个错,后来吃了不少亏才补上这一课。

这一章,我会从最核心的原理讲起,带你搞懂激光雷达到底是怎么“看”世界的。然后聊聊市面上常见的几种雷达,最后再手把手教你解析点云数据格式。嗯,内容有点干,但都是硬货。

2.1 激光雷达工作原理

激光雷达,英文叫LiDAR(Light Detection And Ranging)。说白了,它就是通过发射激光束,然后测量激光从发射到返回的时间或角度,来算出目标物体的距离。

目前主流的测距方式有两种:TOF(飞行时间法)三角测距法。这两种方法各有千秋,我分别讲讲。

2.1.1 TOF(飞行时间法)

TOF的原理非常直接:发射一束激光脉冲,打到物体上反射回来,接收器捕获到回波。记录下从发射到接收的时间差 Δt,然后乘以光速 c,再除以 2(因为光走了个来回),就得到了距离 d。

公式很简单:

d = (c × Δt) / 2

其中 c ≈ 3.0 × 10⁸ m/s。

TOF的优点很明显:测量距离远,几十米甚至上百米都没问题;精度高,误差通常在厘米级;受环境光影响小。我在做室外园区无人车项目时,用的就是TOF雷达,大太阳底下照样稳定输出。

但TOF也有缺点:成本高,因为需要高精度的计时芯片;对多回波处理要求高,比如遇到玻璃或者雨雾,容易产生噪点。

我的经验: 如果你做的是室外大场景建图,比如园区、矿区,优先选TOF雷达。别为了省钱买三角测距的,到时候建图飘了,哭都来不及。

2.1.2 三角测距法

三角测距的原理稍微绕一点。它利用的是激光发射器、目标物体和接收器(通常是CMOS或CCD相机)之间构成的三角形几何关系。

具体来说:激光器以固定角度发射一束光,打到物体上形成光斑。接收器在另一个位置拍摄这个光斑。物体距离不同,光斑在接收器上的成像位置也不同。通过三角几何计算,就能得到距离。

三角测距的优点是:成本低,结构简单;近距离精度高,几米范围内可以做到毫米级。很多扫地机器人用的就是这种。

缺点也很致命:测量距离短,一般不超过10米;受环境光影响大,在强光下容易失效。我记得有一次帮朋友调试一个室内导航小车,用的三角测距雷达,结果窗户边阳光一照,点云直接炸了。

避坑指南: 我曾经在室内走廊测试三角测距雷达,发现白墙和黑墙的测距结果差了十几厘米。后来才明白,不同颜色的物体对激光的反射率不同,三角测距对这种差异特别敏感。所以,如果你要建图的场景里有大量深色物体,慎用三角测距。

2.2 常见激光雷达类型

按扫描方式分,激光雷达主要有三类:单线多线固态。我一个个说。

2.2.1 单线激光雷达

单线雷达,顾名思义,只有一个激光发射器和接收器,通过旋转电机实现水平360°扫描。它输出的是一圈二维点云,只有x和y坐标,没有z轴信息。

单线雷达的优点是:便宜,几百到几千块;数据量小,处理起来快;适合2D SLAM。我最早入门SLAM时,用的就是RPLIDAR A1,几百块钱,跑个gmapping妥妥的。

缺点也很明显:没有高度信息,无法感知三维空间;容易漏掉障碍物,比如一个矮箱子,雷达扫过去可能完全没发现。

2.2.2 多线激光雷达

多线雷达,就是有多个激光收发对,同时发射和接收。常见的有16线、32线、64线,甚至128线。它通过多个不同俯仰角的激光束,实现三维空间扫描。

多线雷达的优点是:信息丰富,能获得三维点云;适合3D SLAM和自动驾驶。我参与过一个无人驾驶项目,用的就是Velodyne HDL-64E,64线雷达,一圈扫下来几十万个点,效果确实震撼。

缺点:,动辄几万甚至几十万;数据量大,对计算资源要求高;体积大,安装不方便。

类型 线数 典型代表 价格区间 适用场景
单线 1 RPLIDAR A1/A2 几百~几千 室内2D SLAM
多线 16/32/64/128 Velodyne、RoboSense 几万~几十万 自动驾驶、3D建图
固态 无旋转部件 Livox Horizon 几千~几万 机器人、无人机

2.2.3 固态激光雷达

固态雷达是近年来的新趋势。它没有旋转电机,而是通过光学相控阵(OPA)或微振镜(MEMS)来实现光束扫描。说白了,就是纯电子扫描,没有机械运动部件。

固态雷达的优点是:体积小,可以做得像火柴盒一样;寿命长,没有机械磨损;成本低,未来有望降到千元级。我最近在测试一款国产固态雷达,效果已经接近16线机械雷达了。

缺点:视场角有限,一般只有几十度,不像机械雷达能转360°;技术还在发展,稳定性有待验证。

2.3 点云数据格式

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

常见的点云格式有:

  • PCD(Point Cloud Data):PCL库的原生格式,支持ASCII和二进制,可读性好。
  • PLY(Polygon File Format):支持顶点和面片,常用于三维模型。
  • LAS/LAZ:测绘行业标准,支持分类、RGB等属性。
  • BAG:ROS的rosbag记录格式,里面可以包含点云话题。

在实际开发中,我们最常用的是PCD格式。下面是一个简单的PCD文件示例:

# .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 5
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 5
DATA ascii
0.1 0.2 0.3 100
0.4 0.5 0.6 200
0.7 0.8 0.9 150
1.0 1.1 1.2 80
1.3 1.4 1.5 255

你看,每个点就是一行,四个数字:x、y、z坐标和强度值。强度值范围一般是0-255,代表反射信号的强弱。白色物体反射强,黑色物体反射弱。

重要提示: 在ROS中,点云数据通常以 sensor_msgs::PointCloud2 消息格式发布。这个格式比旧版的 PointCloud 更灵活,支持动态字段。我建议你直接使用 PointCloud2,别再用老格式了。

2.4 本章知识体系

为了让你更直观地理解本章内容,我画了一张结构图:

激光雷达基础 工作原理 TOF(飞行时间法) 三角测距法 ✅ 距离远(几十米) ✅ 精度高(厘米级) ❌ 成本高 ✅ 成本低 ✅ 近距离精度高 ❌ 距离短(<10m) 常见激光雷达类型 单线(2D) 多线(3D) 固态(无旋转) 点云数据格式:PCD / PLY / LAS / BAG

这张图把本章的核心内容串起来了。你从上往下看:先搞懂两种测距原理,再了解三种雷达类型,最后掌握点云格式。这样,你就有了一个完整的知识框架。

我的建议: 学完这一章,你可以拿自己的雷达实际扫一圈数据,然后用 pcl_viewer 或者 ROS 的 rviz 打开看看。亲眼看到点云,比看一百遍文字都管用。

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