跳转至

3D LiDAR

概述

3D LiDAR(多线激光雷达)通过多个激光发射/接收通道同时扫描不同俯仰角,生成三维点云数据。它是自动驾驶、无人机建图和高级机器人系统的核心感知传感器。

工作原理

多线机械旋转

传统 3D LiDAR(如 Velodyne)将多个激光发射/接收对垂直排列,整体随电机旋转:

  • 每个通道对应一个固定的垂直角度
  • 旋转一圈产生一帧完整的 3D 点云
  • 通道数(线数)决定垂直分辨率

垂直角分辨率:

\[ \Delta\theta_v = \frac{\text{FOV}_v}{N - 1} \]

其中 \(N\) 为线数,\(\text{FOV}_v\) 为垂直视场角。

点云密度

每帧点云数量取决于线数、水平角分辨率和扫描频率:

\[ N_{\text{points}} = N_{\text{channels}} \times \frac{360°}{\Delta\theta_h} \times f_{\text{scan}} \]

主流产品对比

Velodyne(威力登)

Velodyne 是 3D LiDAR 的先驱,在自动驾驶领域具有标志性地位。

型号 线数 测距范围 垂直FOV 点频 精度 价格(参考)
VLP-16 (Puck) 16 100m ±15° (30°) 300K pts/s ±3cm ~$4,000
VLP-32C 32 200m +15°/–25° (40°) 600K pts/s ±3cm ~$10,000
Alpha Prime (VLS-128) 128 300m +15°/–25° (40°) 2.4M pts/s ±3cm ~$75,000

VLP-16 —— 经典之作

VLP-16(又称 Puck)是 3D LiDAR 的经典产品,在学术界和自动驾驶早期研发中广泛使用。虽然已不是最新产品,但大量开源数据集(如 KITTI)使用 Velodyne 采集,在研究中仍有重要地位。

Ouster(奥斯特)

Ouster 采用数字激光雷达技术(dToF + SPAD 探测器),具有独特优势。

型号 线数 测距范围 垂直FOV 点频 特色 价格(参考)
OS0-128 128 50m 90° 2.6M pts/s 超宽垂直FOV,近距离 ~$6,000
OS1-32 32 120m 45° 655K pts/s 中距离通用 ~$3,500
OS1-64 64 120m 45° 1.3M pts/s 高分辨率 ~$6,000
OS1-128 128 120m 45° 2.6M pts/s 最高分辨率 ~$10,000
OS2-128 128 240m 22.5° 2.6M pts/s 远距离 ~$12,000

Ouster 独特特性

  • 同时输出:距离图像、反射率图像、近红外环境图像
  • 数字架构:一致性好、易于校准
  • 支持 1024/2048 水平分辨率模式
  • 内置 IMU

Livox(览沃 —— 大疆旗下)

Livox 采用独特的非重复扫描模式,不同于传统旋转式 LiDAR。

型号 扫描方式 测距范围 FOV 点频 特色 价格(参考)
Mid-360 非重复 40m(@10%反射率) 360°×59° 200K pts/s 小型360° ~$1,099
HAP 非重复 150m 120°×25° 720K pts/s 车规级 ~$599
Avia 非重复 450m 70.4°×77.2° 240K pts/s 长距离 ~$1,499
Mid-70 非重复 260m 70.4°×77.2° 100K pts/s 中距离 ~$799

非重复扫描的优势

Livox 的非重复扫描模式(花瓣形/棱镜旋转)意味着随着积分时间增加,覆盖率不断提高。在 100ms 积分时间内,FOV 覆盖率可超过传统 64 线 LiDAR。这使得 Livox 用较低成本实现了高等效分辨率。

RoboSense(速腾聚创)

型号 线数 测距范围 垂直FOV 点频 价格(参考)
RS-LiDAR-16 16 150m 30° 320K pts/s ~$3,500
RS-LiDAR-32 32 200m 40° 640K pts/s ~$8,000
RS-Helios 5515 32 150m 70° 720K pts/s ~$2,500
RS-Ruby Plus 128 250m 40° 2.4M pts/s 旗舰
RS-M1 - 200m 120°×25° MEMS固态 车规级

Hesai(禾赛)

型号 线数 测距范围 特色 价格(参考)
XT32 32 120m 中端机械 ~$4,000
QT128 128 60m 近距离补盲 ~$3,000
AT128 128 200m 半固态车规 ~$1,000
Pandar128 128 200m 旗舰机械 高端
FT120 - 100m 纯固态 量产价低

点云数据格式

ROS2 PointCloud2

3D LiDAR 在 ROS2 中使用 sensor_msgs/msg/PointCloud2 消息:

# sensor_msgs/msg/PointCloud2
Header header              # 时间戳和坐标系
uint32 height              # 点云高度(无组织=1,有组织=行数)
uint32 width               # 点云宽度(无组织=总点数,有组织=列数)
PointField[] fields        # 字段描述(x, y, z, intensity, ring, time...)
bool is_bigendian
uint32 point_step           # 单个点的字节数
uint32 row_step             # 单行的字节数
uint8[] data               # 点云原始数据
bool is_dense              # 是否有无效点(NaN/Inf)

常见点云字段

字段 类型 说明
x, y, z float32 三维坐标(米)
intensity float32 反射强度
ring uint16 通道/线号
time float32 相对时间戳(用于运动补偿)
return_type uint8 回波类型(单/双回波)

点云数据读取示例

import numpy as np
from sensor_msgs.msg import PointCloud2
import sensor_msgs_py.point_cloud2 as pc2

def pointcloud_callback(msg: PointCloud2):
    # 将 PointCloud2 转换为 numpy 数组
    points = pc2.read_points_numpy(msg, field_names=('x', 'y', 'z', 'intensity'))

    # points.shape = (N, 4)
    xyz = points[:, :3]          # (N, 3)
    intensity = points[:, 3]     # (N,)

    # 过滤无效点
    valid_mask = np.isfinite(xyz).all(axis=1)
    xyz = xyz[valid_mask]

    # 计算距离
    distances = np.linalg.norm(xyz, axis=1)

    print(f"点数: {len(xyz)}, 最远距离: {distances.max():.2f}m")

ROS2 集成

Velodyne ROS2 驱动

sudo apt install ros-humble-velodyne

# 启动 VLP-16
ros2 launch velodyne velodyne-all-nodes-VLP16-launch.py

Ouster ROS2 驱动

cd ~/ros2_ws/src
git clone https://github.com/ouster-lidar/ouster-ros.git -b ros2
cd ~/ros2_ws
colcon build --packages-select ouster_ros

ros2 launch ouster_ros sensor.launch.xml \
    sensor_hostname:=os1-xxxxxxxxxxxx.local

Livox ROS2 驱动

cd ~/ros2_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
cd ~/ros2_ws
colcon build --packages-select livox_ros_driver2

ros2 launch livox_ros_driver2 rviz_MID360_launch.py

性能对比总结

维度 Velodyne Ouster Livox RoboSense Hesai
技术路线 经典机械 数字dToF 非重复扫描 机械/MEMS 机械/半固态
性价比 中等 较高 较高 较高
数据质量 优秀 好(需积分)
生态完善度 最好 较好 中等 较好
车规量产 有限 进行中 HAP RS-M1 AT128/FT120
适合场景 研发/学术 全场景 机器人/无人机 自动驾驶 自动驾驶

3D LiDAR SLAM

常用 3D LiDAR SLAM 方案:

算法 输入 特点
LOAM 3D LiDAR 经典边线/平面特征方法
LeGO-LOAM 3D LiDAR 地面优化、轻量化
LIO-SAM 3D LiDAR + IMU 紧耦合、因子图优化
FAST-LIO2 Livox LiDAR + IMU 针对非重复扫描优化、实时性好
Point-LIO Livox LiDAR + IMU 逐点处理、高动态场景
KISS-ICP 3D LiDAR 简洁通用、开箱即用

参考资料

  • Velodyne 用户手册
  • Ouster 软件开发文档:https://static.ouster.dev/sensor-docs/
  • Livox 技术文档:https://www.livoxtech.com
  • RoboSense 开发者文档
  • Hesai 技术支持

评论 #