2. 激光雷达基础
激光SLAM前端配准与建图的质量,首先取决于对激光雷达原始数据的理解深度。很多工程问题——配准发散、建图重影、回环误判——追根溯源并非算法本身,而是对测距原理、点云格式、坐标系约定和时间同步处理不当。本章从传感器物理层出发,梳理这些基础要素,为后续帧间配准与地图构建建立统一的数据认知。
一、测距原理:从2D到3D
激光雷达的核心测距方式分为两类:脉冲飞行时间法(ToF)与三角测距法。ToF通过测量激光脉冲发射到接收的时间差计算距离,适合中远距离、高帧率场景;三角测距利用激光点在图像传感器上的成像位置偏移反推距离,近距离精度高但随距离衰减快。
2D激光雷达通常只有一个旋转扫描平面,输出单线点云,典型如RPLIDAR、UTM-30LX,常用于室内AGV与地面机器人。3D激光雷达则通过多线束垂直排列加水平旋转,或采用非重复扫描方式,输出具有垂直视场角的三维点云,典型如Velodyne VLP-16、RoboSense RS-LiDAR-16、Livox Mid-40。多线雷达的线束数量、垂直角分辨率、水平角分辨率共同决定了点云的空间密度分布。
二、点云数据格式与坐标系定义
激光雷达输出的原始数据通常以极坐标形式(方位角、俯仰角、距离、反射强度)逐点返回,驱动层再转换为笛卡尔坐标。工程中常见的存储与传输格式包括:
- PCD:PCL库标准格式,支持ASCII与二进制,字段灵活,适合离线调试与地图保存。
- PLY:通用三维点云格式,兼容性好,常用于可视化与交换。
- ROS sensor_msgs/PointCloud2:在线传输标准,包含header、fields、point_step、row_step等元信息,是ROS/ROS2下SLAM节点的默认输入。
- 厂商私有格式:如Velodyne的pcap包、Livox的lvx,需专用驱动解析。
坐标系方面,必须明确三个层次:雷达坐标系(LiDAR frame)、载体坐标系(base_link)、世界坐标系(map/odom)。雷达坐标系原点位于激光发射中心,X轴通常指向正前方,Y轴向左,Z轴向上(右手系)。外参标定就是求解雷达坐标系到载体坐标系的旋转平移矩阵。若外参错误,即使配准算法正确,建图也会出现系统性倾斜或错位。
# ROS中查看点云字段与坐标系
rosrun pcl_ros pcd_to_pointcloud cloud.pcd
rostopic echo /velodyne_points/header
# 外参示例:雷达相对base_link的静态变换
rosrun tf static_transform_publisher 0 0 1.2 0 0 0 base_link velodyne 100
三、时间同步与运动畸变来源
激光雷达并非“瞬间”完成一帧扫描。以10Hz旋转雷达为例,一帧点云实际是在约100ms内逐点采集的。如果雷达在这段时间内发生运动,同一帧内不同时刻采集的点会对应不同的雷达位姿,直接叠加就会产生运动畸变。这是激光SLAM中最常见、也最容易被忽视的误差来源。
运动畸变的主要来源包括:
- 载体平移:机器人前进时,帧首与帧尾的点在前进方向上被“拉伸”或“压缩”。
- 载体旋转:偏航或俯仰变化会使扫描平面倾斜,导致墙面点云出现弧形弯曲。
- 时间戳不同步:雷达、IMU、轮速计各自时钟未对齐,融合时位姿插值错误。
- 触发延迟:驱动层打包、网络传输、ROS消息队列引入的延迟未被补偿。
四、典型场景与处理流程
以一台搭载16线雷达与IMU的室内巡检机器人为例,完整的数据准备流程如下:
- 驱动层解析pcap,输出带逐点时间戳的PointCloud2。
- 通过硬件触发或PTP/NTP完成雷达与IMU的时间对齐。
- 利用IMU积分得到帧内各时刻的位姿,对每个点做运动补偿。
- 将去畸变后的点云从雷达坐标系变换到base_link,再进入前端配准。
- 保存关键帧点云为PCD,记录外参与时间偏移参数,便于复盘。
| 要素 | 2D激光雷达 | 3D激光雷达 | 对SLAM的影响 |
|---|---|---|---|
| 扫描维度 | 单平面 | 多线/非重复 | 3D提供垂直结构,配准约束更强 |
| 点云规模 | 约千点/帧 | 数万至数十万点/帧 | 3D需降采样与特征提取 |
| 运动畸变 | 平面内拉伸 | 三维扭曲 | 3D去畸变更依赖IMU |
| 时间同步 | 相对简单 | 多传感器要求高 | 不同步直接导致配准漂移 |
| 坐标系 | 2D位姿(x,y,θ) | 6DoF位姿 | 外参标定维度不同 |
五、工程复盘要点
在实际项目中,建议把以下检查项固化为数据预处理的标准流程:
- 确认点云header中的frame_id与TF树一致,避免“点云飘在空中”。
- 检查每帧点云是否携带逐点时间戳;若无,去畸变只能做近似处理。
- 验证雷达与IMU的时间偏移,可用静止段与运动段对比标定。
- 外参标定后,用地面或墙面点云做残差检查,确认无系统性倾斜。
- 对3D雷达先做体素降采样,再提取平面/边缘特征,降低前端计算量。
理解测距原理、格式约定、坐标系层次与时间同步机制,是后续帧间配准、特征提取与地图维护的前提。把这些基础环节做扎实,前端算法的稳定性会显著提升,排障时也能更快定位问题究竟出在数据层还是算法层。