3、3D视觉基础:深度相机原理(结构光、ToF、双目)、点云数据表示与获取方式
在工业机器人Pick and Place(抓取与放置)应用中,机器人需要从二维图像中恢复物体的三维空间坐标,才能完成精确的抓取规划。深度相机作为3D视觉系统的“眼睛”,其核心任务是获取场景中每个像素对应的深度值(即物体到相机的距离),进而生成可用于机器人路径规划的点云数据。本章将深入剖析三种主流深度相机技术——结构光、飞行时间(ToF)和双目立体视觉——的工作原理、工程特性与选型判断方法,并详细讲解点云数据的表示形式与获取流程,为后续的物体识别与抓取位姿估计奠定基础。
上图展示了三种深度相机技术的核心原理与点云获取的整体链路。结构光通过投射已知编码图案并分析其畸变来恢复深度;ToF通过测量光脉冲的飞行时间直接计算距离;双目则模拟人眼视差,通过匹配左右图像的对应点来三角化深度。无论采用哪种技术,最终都需要通过相机内参将深度图转换为三维点云,再经过滤波、配准等处理,才能供机器人抓取算法使用。
3.1 结构光深度相机:编码光栅与三角测量
核心原理
结构光技术的基本思想是:向被测物体表面投射具有特定编码图案的红外光(如随机散斑、正弦条纹或格雷码序列),然后由红外相机捕捉被物体表面调制后的图案。由于物体表面的凹凸起伏,投射的图案会发生几何畸变。通过分析畸变图案与原始参考图案之间的对应点偏移量,结合投影仪与相机之间的已知基线距离(B)和焦距(f),利用三角测量原理即可计算出每个像素的深度值。
其深度计算公式为:
Z = (f × B) / (d + Δd)
其中,Z为深度,f为相机焦距,B为投影仪与相机光心之间的距离,d为参考平面上的视差,Δd为物体表面引起的视差变化。结构光的精度高度依赖于编码图案的分辨率和投射距离,通常在0.1mm至1mm之间,适合近距离(0.3m-3m)高精度抓取场景。
工程判断方法
- 适用场景:静态或慢速运动的物体抓取,如电子元件装配、小零件分拣、医药物品拾取。
- 环境要求:对环境光敏感,强光或反光表面(金属、镜面)会导致编码图案无法识别,需在遮光或低反光环境下使用。
- 选型参数:关注投影仪分辨率(如1280×1024)、相机分辨率、基线长度、工作距离范围、帧率(通常10-30fps)。
案例拆解:电子元件高速分拣
某3C电子厂需要从振动盘中将不同规格的电阻、电容(尺寸2mm-5mm)抓取至料盘。初始方案采用双目视觉,但因元件表面光滑且缺乏纹理,匹配失败率高达30%。改用结构光相机(Ensenso N35)后,利用其投射的高密度散斑图案,在0.5m工作距离下获得了0.2mm的深度精度。实际部署中,将相机固定于机器人上方45°倾斜角,配合遮光罩消除环境光干扰,抓取成功率提升至99.5%。关键参数设置:投影强度调至80%,曝光时间5ms,深度图滤波采用中值滤波(核大小5×5)。
常见误区与复盘
- 误区1:认为结构光精度一定高于ToF。实际上,在远距离(>2m)时,结构光精度衰减严重,而ToF精度相对稳定。
- 误区2:忽略投影仪与相机的同步性。若两者帧率不同步,会导致图案错位,产生深度误差。务必使用硬件触发线同步。
- 复盘:在部署前应使用标准平面(如陶瓷平板)进行多距离标定,建立深度误差补偿表,可有效提升精度。
3.2 ToF深度相机:光速飞行时间测量
核心原理
ToF(Time-of-Flight)技术通过测量红外光脉冲从发射到接收的往返时间来计算距离。其核心公式为:
d = (c × t) / 2
其中,c为光速(3×10⁸ m/s),t为光脉冲的飞行时间。实际工程中,ToF相机通常采用连续波调制(CW-ToF),通过测量发射信号与接收信号之间的相位差φ来计算距离:
d = (c × φ) / (4π × f_mod)
其中f_mod为调制频率(典型值10-100MHz)。ToF相机的核心器件包括:红外激光二极管(VCSEL)、单光子雪崩二极管(SPAD)或CMOS ToF传感器、光学镜头和驱动电路。其优势在于无需纹理特征,直接测量深度,且帧率较高(30-60fps),适合动态抓取场景。
操作流程与参数调优
- 积分时间设置:根据物体反射率调整积分时间(通常100μs-1ms)。反射率高的物体(白色塑料)可缩短积分时间,避免过曝;黑色橡胶需延长积分时间。
- 多频调制:使用双频或三频调制(如20MHz+30MHz)可扩展无模糊距离范围,同时抑制环境光干扰。
- 温度补偿:ToF传感器对温度敏感,需在相机内部集成温度传感器,并在固件中进行距离偏移补偿。
实战场景:物流包裹动态分拣
某物流中心需要在1.5m/s的传送带上抓取随机尺寸的包裹(10cm-60cm)。选用SICK Visionary-T ToF相机,工作距离2m,帧率30fps。初始测试发现,包裹边缘出现“拖尾”现象,导致抓取位置偏移。分析原因是积分时间过长(800μs)导致运动模糊。将积分时间降至300μs,并开启运动补偿算法(基于IMU数据),拖尾减少80%。同时,针对黑色包裹(反射率<5%),将激光功率提升至120%,并采用多帧累加(4帧平均)提高信噪比。最终抓取成功率从92%提升至98.5%。
常见误区与总结
- 误区1:认为ToF精度与距离无关。实际上,距离越远,相位差测量误差越大,相对精度通常为0.5%-1%。
- 误区2:忽略多路径干扰。在角落或凹槽物体中,光线多次反射会导致深度值偏大。可采用基于置信度图的滤波算法剔除低置信度像素。
- 总结:ToF适合中等精度、动态场景、无纹理物体的抓取,但需仔细调校积分时间、调制频率和温度补偿。
3.3 双目立体视觉:视差计算与三角化
核心原理
双目立体视觉模仿人眼感知深度的机制,使用两个水平放置的相机(基线距离B)同时拍摄同一场景。通过立体匹配算法找到左右图像中的对应点,计算视差d(即对应点在左右图像中的水平坐标差),然后利用三角测量原理计算深度:
Z = (f × B) / d
其中f为相机焦距(像素单位)。双目系统的核心挑战在于立体匹配的准确性和计算效率。常用的匹配算法包括:块匹配(BM)、半全局匹配(SGBM)和基于深度学习的方法(如PSMNet)。双目相机的优势在于成本较低(仅需两个普通工业相机),且不受环境光主动干扰,适合户外或大场景抓取。
判断方法与标定流程
| 步骤 | 操作内容 | 关键参数/工具 |
|---|---|---|
| 1. 相机选型 | 选择分辨率、帧率、镜头焦距匹配的两个相机 | 分辨率≥1280×1024,帧率≥30fps,基线B=100-300mm |
| 2. 硬件固定 | 刚性固定两相机,确保光轴平行,避免震动 | 使用铝合金支架,锁紧螺丝力矩一致 |
| 3. 双目标定 | 拍摄20-30张棋盘格图像,计算内参、外参、畸变系数 | OpenCV calibrateCamera,重投影误差<0.1像素 |
| 4. 立体校正 | 对左右图像进行极线校正,使对应点在同一水平线上 | stereoRectify,校正后行对齐误差<1像素 |
| 5. 视差计算 | 运行SGBM或深度学习匹配算法 | numDisparities=64-256,blockSize=5-15 |
案例拆解:汽车零部件料箱抓取
某汽车工厂需要从深约600mm的料箱中抓取金属支架(表面有油污、反光)。采用ZED 2i双目相机(基线120mm),工作距离1.2m。初始使用默认SGBM参数,深度图在金属反光区域出现大量空洞。通过以下步骤优化:1)将blockSize从9调整为15,提高匹配鲁棒性;2)开启uniqueZratio=15,过滤低置信度匹配;3)使用基于CNN的立体匹配模型(StereoBM)替代SGBM,空洞减少70%;4)对深度图进行联合双边滤波(空间核5×5,颜色核0.1),保留边缘的同时平滑噪声。最终,抓取系统在油污环境下仍能稳定输出点云,抓取节拍从12秒/件缩短至8秒/件。
常见误区与复盘
- 误区1:认为基线越长精度越高。基线过长会导致公共视野变小,近处物体无法同时被两相机看到,且匹配难度增大。需根据工作距离选择合适基线。
- 误区2:忽略畸变校正。未校正畸变的图像直接进行立体匹配,会产生系统性深度误差。务必在每次安装后重新标定。
- 复盘:双目系统对环境光照变化敏感,建议使用主动光源(如红外补光灯)稳定照明条件,并定期检查相机固定螺丝是否松动。
3.4 点云数据表示与获取流程
点云数据的基本属性
点云(Point Cloud)是三维空间中一组离散点的集合,每个点至少包含三维坐标(X, Y, Z)。在工业抓取应用中,点云通常还包含以下属性:
- XYZ坐标:以相机坐标系为参考,单位通常为米或毫米。
- RGB颜色:由彩色相机同步采集,用于物体识别和语义分割。
- 法向量:每个点的表面法线方向,用于计算抓取姿态和表面曲率。
- 强度/反射率:ToF和结构光相机可提供反射率信息,辅助区分材质。
- 时间戳:用于动态场景中的点云配准和运动补偿。
点云获取的标准流程
- 深度图获取:通过上述三种技术之一获得与彩色图对齐的深度图(每个像素存储深度值)。
- 反投影:利用相机内参矩阵K,将深度图转换为相机坐标系下的三维点:
Z = depth(u, v) / scale
X = (u - cx) × Z / fx
Y = (v - cy) × Z / fy
- 点云生成:将所有像素反投影后,得到包含N个点的点云数组,并附加RGB信息。
- 预处理:包括去噪(统计滤波、半径滤波)、下采样(体素滤波)、去除离群点。
- 坐标变换:通过手眼标定矩阵(相机到机器人基座),将点云变换到机器人坐标系。
点云处理工具与库
| 工具库 | 语言 | 核心功能 | 工业应用特点 |
|---|---|---|---|
| PCL (Point Cloud Library) | C++ | 滤波、配准、分割、特征提取 | 成熟稳定,算法丰富,适合嵌入式部署 |
| Open3D | Python/C++ | 点云可视化、重建、深度学习接口 | 易用性好,适合快速原型验证 |
| Halcon 3D | HDevelop | 3D测量、匹配、抓取位姿计算 | 工业级商业库,与机器视觉无缝集成 |
| ROS Perception | C++/Python | 点云Topic通信、SLAM、物体识别 | 适合机器人系统集成,开源生态 |
实战中的点云质量评估
在抓取系统中,点云质量直接影响抓取成功率。建议从以下指标评估:
- 点云密度:单位面积内的点数,通常要求≥100点/cm²(对于小零件)。
- 噪声水平:在平坦表面上的点云标准差应<0.5mm。
- 完整性:物体表面空洞面积占比应<5%,否则需调整相机角度或融合多视角点云。
- 精度验证:使用标准量块(如10mm、50mm)测量点云尺寸,误差应<1mm。
常见误区与总结
- 误区1:直接使用原始点云进行抓取规划,未进行滤波和下采样,导致计算量大且易受噪声干扰。
- 误区2:忽略点云的时间戳同步。在动态抓取中,深度图与彩色图若不同步,会导致颜色与几何错位。
- 总结:点云获取是一个从硬件到算法的系统工程,需要根据具体抓取对象(尺寸、材质、反光性)、环境(光照、振动)和节拍要求,综合选择深度相机技术并优化处理流程。