2. 3D点云基础
3D点云是机器人视觉抓取系统中最为核心的底层数据形态。与传统的2D图像不同,点云直接记录了物体表面在三维空间中的离散采样坐标,为后续的位姿估计、碰撞检测和抓取规划提供了几何基础。本章将系统梳理点云的定义与数学表达、三大主流获取方式(激光雷达、深度相机、结构光)的工作原理与工程选型、以及点云数据的标准格式与存储策略。理解这些基础内容,是后续进行点云滤波、配准、分割和抓取位姿解算的前提。
2.1 点云的定义与数学表达
点云(Point Cloud)是空间中一组离散的三维坐标点的集合,用于表示物体表面或场景的几何采样。每个点通常包含三维坐标信息,并可附加多种属性。在机器人抓取场景中,点云是连接传感器原始数据与高级感知算法的桥梁。
从数学角度看,一个点云可以表示为集合 \( P = \{p_1, p_2, ..., p_N\} \),其中每个点 \( p_i \) 是一个多维向量。最基本的点包含三维坐标 \( (x, y, z) \),通常定义在传感器坐标系或世界坐标系下。根据传感器类型和应用需求,每个点还可以携带以下属性:
- 反射强度(Intensity):激光雷达返回的物体表面反射率,可用于区分不同材质。
- 颜色信息(RGB):由深度相机或RGB相机融合得到,有助于语义分割和物体识别。
- 法向量(Normal):该点所在局部表面的法线方向,对曲面重建和特征描述至关重要。
- 时间戳(Timestamp):记录该点采集的时间,用于运动补偿和多帧融合。
- 置信度/噪声方差:部分传感器会输出每个点的测量置信度,便于后续滤波。
点云的密度和分布取决于传感器类型和扫描方式。激光雷达通常产生稀疏但精度高的点云(每平方米几十到几百点),而结构光和深度相机可以产生密集点云(每平方米数万点)。在机器人抓取中,点云密度直接影响后续处理的实时性和精度。
2.2 三大获取方式:原理、选型与对比
不同的应用场景对点云的精度、范围、帧率和成本有不同的要求。目前主流的3D点云获取方式有三种:激光雷达、深度相机(ToF/双目)和结构光。理解每种方式的物理原理和工程特性,是正确选型的第一步。
2.2.1 激光雷达(LiDAR)
激光雷达通过发射激光束并测量反射光的飞行时间(Time of Flight, ToF)或相位差来计算目标距离。其核心公式为 \( d = \frac{c \cdot t}{2} \),其中 \( c \) 为光速,\( t \) 为激光发射到接收的总时间。通过旋转扫描机构或固态电子扫描,激光雷达可以获取周围环境的三维坐标点。
激光雷达的主要优势在于:
- 测量距离远:可达100米以上,适合室外大场景。
- 精度高:测距精度通常在±2cm以内,部分高精度型号可达±5mm。
- 抗环境光干扰强:使用窄带滤光片,对太阳光不敏感。
然而,激光雷达的缺点也很明显:点云稀疏(尤其是垂直方向分辨率低)、设备成本高(机械式雷达数万至数十万元)、无法获取颜色信息。在机器人抓取场景中,激光雷达通常用于AGV导航、大范围场景重建,而非近距离精密抓取。
2.2.2 深度相机(ToF / 双目)
深度相机是目前机器人抓取领域应用最广泛的传感器。它分为两大类:
ToF深度相机:通过测量红外光脉冲的飞行时间来计算距离。与激光雷达不同,ToF相机是面阵式成像,每个像素都能输出一个深度值,因此可以实时获取整幅深度图。典型产品包括Microsoft Kinect v2、Intel RealSense D435i、Orbbec Astra系列。ToF相机的优势在于帧率高(30-60fps)、体积小、成本适中(千元级),适合中近距离(0.3m-6m)的抓取场景。
双目立体视觉相机:通过两个水平放置的RGB相机模拟人眼视差,利用三角测量原理计算深度。其核心公式为 \( Z = \frac{f \cdot b}{d} \),其中 \( f \) 为焦距,\( b \) 为基线距离,\( d \) 为左右图像的视差。双目相机的优势是无需主动光源,在室外强光下也能工作,且成本较低。但缺点是:对纹理缺乏的物体(如白色墙面、光滑金属)匹配效果差,计算量大,深度精度受基线长度限制。
2.2.3 结构光(Structured Light)
结构光技术通过投影仪向物体表面投射编码的光栅图案(如正弦条纹、格雷码、散斑),然后由相机拍摄被物体表面调制后的变形图案,通过解调计算每个像素的深度。其原理基于三角测量,但使用主动编码光源来提高匹配精度。
结构光的优势在于:
- 高精度:在近距离(0.1m-1m)内,深度精度可达0.1mm级别。
- 高密度:每个像素都能输出深度,点云密度极高。
- 对弱纹理物体友好:主动投射图案解决了双目匹配的纹理依赖问题。
结构光的局限性包括:测量距离短(通常不超过3m)、易受环境光干扰(尤其是阳光中的红外成分)、投影图案在强反光表面会产生高光失真。在精密装配、小零件抓取、3D建模等场景中,结构光相机(如Ensenso N35、Photoneo)是首选。
| 对比维度 | 激光雷达 | ToF深度相机 | 双目相机 | 结构光 |
|---|---|---|---|---|
| 测量原理 | 激光飞行时间 | 红外光飞行时间 | 双目视差三角测量 | 编码光栅三角测量 |
| 工作距离 | 0.5m - 200m | 0.3m - 6m | 0.2m - 10m | 0.1m - 3m |
| 深度精度 | ±2cm(典型) | ±1cm(典型) | ±1mm - ±5mm | ±0.1mm - ±1mm |
| 点云密度 | 稀疏(线扫) | 中等(面阵) | 中等(面阵) | 高(面阵) |
| 环境光敏感性 | 低 | 中(红外干扰) | 高(依赖纹理) | 高(红外干扰) |
| 成本 | 高(数万+) | 中(千元级) | 低(百元级) | 中高(数千-数万) |
| 典型应用 | AGV导航、室外SLAM | 机器人抓取、人体交互 | 室外导航、AR | 精密测量、小物体抓取 |
2.3 点云数据格式与存储
点云数据在存储和传输时需要遵循特定的文件格式,以平衡文件大小、读写速度和跨平台兼容性。不同的传感器厂商和算法库支持不同的格式,理解这些格式的差异对于工程实践至关重要。
2.3.1 主流点云文件格式
PCD(Point Cloud Data):由PCL(Point Cloud Library)库定义的原生格式,支持ASCII和二进制两种编码。PCD文件包含文件头(声明点云维度、点数、数据类型)和点数据两部分。其优势是与PCL库无缝集成,支持自定义字段(如法向量、强度、RGB)。
PLY(Polygon File Format):最初用于存储三维扫描仪的多边形数据,后来扩展支持点云。PLY格式灵活,支持顶点、面、边等多种元素,且可以包含颜色、法向量等属性。它是许多3D建模软件(如MeshLab、Blender)的标准格式。
LAS/LAZ:由美国摄影测量与遥感学会(ASPRS)定义,主要用于激光雷达点云数据的存储和交换。LAS格式是二进制格式,包含点坐标、强度、回波次数、分类等信息,LAZ是其压缩版本。LAS格式在测绘和地理信息领域是事实标准。
XYZ / TXT:最简单的文本格式,每行一个点,列依次为X、Y、Z(可扩展为XYZRGB、XYZI等)。这种格式通用性强,但文件体积大、读写效率低,适合小规模数据或跨平台交换。
BIN(二进制):许多传感器厂商(如Velodyne、Ouster)使用自定义的二进制格式存储原始点云,通常包含时间戳、激光ID、距离、反射率等原始信息。BIN格式读写速度快,但缺乏统一标准,需要厂商SDK解析。
2.3.2 存储策略与工程考量
在实际机器人抓取系统中,点云数据的存储需要考虑以下因素:
- 实时性:在线处理时,点云通常以内存中的数据结构(如PCL的PointCloud<T>)存在,不落盘。只有需要离线分析或数据集构建时才写入文件。
- 压缩率:对于大规模点云(如超过1000万点),建议使用二进制格式或压缩格式(如LAZ、PCD Binary_Compressed),可减少80%以上的存储空间。
- 属性完整性:如果后续需要做语义分割或颜色融合,必须保留RGB或Intensity字段,不能只存XYZ。
- 坐标系标注:在存储时,建议在文件头或配套的元数据中记录点云所在的坐标系(如相机坐标系、机器人基坐标系),避免后续使用时发生坐标混淆。
// PCD文件头示例(ASCII格式)
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 123456
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 123456
DATA ascii
0.123 0.456 0.789 4.2108e+06
...
2.4 实战场景:抓取场景中的传感器选型与数据采集
为了将上述理论应用于实际,我们以一个典型的“随机箱体抓取”场景为例,分析传感器选型和数据采集的完整流程。
场景背景与约束:某3C电子工厂需要机器人从周转箱中抓取不同尺寸的金属零部件(如螺丝、垫片、小型连接器)。工作距离为0.4m-0.8m,要求抓取节拍小于3秒/件,零件表面存在反光。环境为室内恒光,无阳光直射。
初始现象与目标:最初尝试使用双目相机(基线60mm),发现金属零件表面反光导致左右图像匹配失败,深度图出现大量空洞。目标是在不增加硬件成本的前提下,提高点云完整度和深度精度。
关键输入数据与参数:
- 零件尺寸范围:5mm - 50mm
- 反光率:金属表面反射率约60%-80%
- 环境光照:800 lux(室内荧光灯)
- 现有硬件:Intel RealSense D435i(双目+红外投射器)
分析判断过程:
- 双目相机在金属反光表面产生镜面反射,导致左右图像灰度差异过大,SAD/SSD匹配算法失效。
- D435i虽然带有红外投射器(主动立体),但投射的是随机散斑,对高反光表面的编码效果有限。
- 改用ToF相机(如D435i的ToF版本或Orbbec Astra Pro)可以避免纹理匹配问题,因为ToF直接测量飞行时间,不依赖表面纹理。
- 但ToF在金属表面会产生多路径反射(光线在零件间多次反射),导致深度值偏大或出现飞点。
实际操作步骤:
- 将传感器更换为Orbbec Astra Pro(ToF),并调整红外发射功率至中等水平。
- 在相机前方加装偏振片(偏振方向与发射光垂直),有效滤除金属表面的镜面反射分量。
- 设置深度滤波参数:将置信度阈值设为0.5,并开启时域平滑(连续5帧中值滤波)。
- 在抓取前增加一次“多帧融合”:连续采集10帧点云,通过ICP配准后融合,填补单帧空洞。
结果对比:
| 指标 | 双目相机(改进前) | ToF + 偏振片(改进后) |
|---|---|---|
| 点云完整度 | 62% | 94% |
| 深度均方根误差 | 4.2mm | 1.8mm |
| 抓取成功率 | 71% | 96% |
| 单次处理耗时 | 0.8s | 1.2s(含多帧融合) |
风险与代价:增加偏振片后,有效光强降低约50%,导致深度噪声略有增加。多帧融合增加了0.4s的处理时间,但仍在节拍要求内。如果节拍要求更严苛,可改用更高帧率的ToF相机(如60fps)来减少融合帧数。
复盘经验:
- 传感器选型不能只看参数表,必须结合目标物体的材质和表面特性进行实测。
- 偏振片是解决金属反光的低成本有效方案,但需要根据发射光波长选择匹配的偏振片。
- 多帧融合是提升点云质量的通用手段,但会增加计算开销,需在实时性和质量之间权衡。
2.5 常见误区与总结复盘
在点云基础的学习和工程应用中,以下误区值得特别注意:
总结复盘:本章从点云的数学定义出发,详细介绍了激光雷达、深度相机和结构光三种获取方式的原理、优缺点和适用场景,并给出了点云数据格式与存储的工程指南。核心要点如下:
- 点云是三维空间的离散采样,属性字段(强度、颜色、法向量)对后续算法至关重要。
- 传感器选型应基于工作距离、物体材质、环境光照和成本预算综合判断,没有“万能传感器”。
- PCD和PLY是算法开发中最常用的格式,LAS用于测绘领域,BIN用于传感器原始数据。
- 存储点云时务必保留完整属性字段,并记录坐标系信息。
- 实战中,金属反光、环境光干扰和多路径效应是点云质量的三大杀手,需要结合硬件(偏振片、滤光片)和软件(滤波、多帧融合)手段综合解决。
掌握这些基础后,下一阶段将进入点云预处理技术,包括去噪、降采样、法向量估计和背景分割,这些操作将直接决定后续抓取位姿估计的精度和稳定性。