3. 点云获取与传感器:深度相机(RealSense、Kinect、工业3D相机)选型、标定原理、点云采集与预处理流程
在机械臂抓取与三维视觉定位系统中,点云数据的质量直接决定了后续配准、分割、位姿估计乃至抓取规划的上限。深度相机作为物理世界与数字点云之间的“眼睛”,其选型是否合理、标定是否精确、采集流程是否规范,构成了整个视觉系统的地基。本章将围绕消费级深度相机(RealSense、Kinect)与工业级3D相机的选型对比、标定原理、以及从原始深度图到可用点云的完整预处理链路展开,帮助读者建立从硬件选型到数据落地的系统性认知。
3.1 深度相机选型:从消费级到工业级的核心权衡
3.1.1 核心原理与选型维度
深度相机通过主动或被动方式获取场景中每个像素的深度值,主流技术路线包括:结构光(Structured Light)、飞行时间(ToF)和双目立体视觉(Stereo)。RealSense D435i 属于主动双目+红外投影方案,Kinect v2 采用 ToF 方案,而工业级相机如 Ensenso 则多采用投影散斑+双目匹配。选型时需关注以下核心参数:
- 深度精度与分辨率:工业级相机在 0.5m 工作距离下精度可达 ±0.1mm,消费级通常为 ±1-3mm。
- 工作距离与视野(FOV):机械臂抓取场景通常需要 0.3-1.5m 工作距离,FOV 需覆盖抓取区域。
- 帧率与延迟:静态抓取 5-10fps 足够,动态抓取需 30fps 以上。
- 抗环境光能力:ToF 在室外或强光下表现较差,结构光在室内受反光影响明显。
- SDK 与生态:RealSense 提供跨平台 SDK(librealsense),工业相机通常附带 HALCON 或 PCL 接口。
| 对比维度 | RealSense D435i | Kinect v2 | 工业3D相机(如Ensenso N35) |
|---|---|---|---|
| 技术原理 | 主动双目+红外投影 | ToF(飞行时间) | 散斑投影+双目 |
| 深度精度 | ±1-2mm @ 0.5m | ±2-4mm @ 0.5m | ±0.1-0.5mm @ 0.5m |
| 工作距离 | 0.2-3m | 0.5-4.5m | 0.1-2m(可定制) |
| 帧率 | 30fps(深度) | 30fps | 10-30fps |
| 抗环境光 | 中等(室内) | 较弱(强光失效) | 强(可配滤光片) |
| 价格区间 | ¥1500-3000 | ¥800-1500(二手) | ¥3万-10万+ |
| 典型应用 | 科研、原型验证 | 人体交互、早期原型 | 精密装配、高精度抓取 |
3.1.2 判断方法与操作流程
选型决策应遵循“先定精度需求,再定工作距离,最后看环境约束”的顺序。具体流程如下:
- 明确抓取物体最小特征尺寸:若需抓取直径 5mm 的轴类零件,深度精度至少需 0.5mm,消费级相机无法满足。
- 测量相机安装位置与抓取范围:确定工作距离和 FOV 覆盖,避免盲区。
- 评估现场光照条件:若产线有强光或反光物体,优先选择工业级或加装偏振片。
- 验证 SDK 兼容性:确认相机驱动与 ROS、PCL、HALCON 等软件栈兼容。
- 进行实物测试:在真实场景下采集点云,检查边缘完整性、飞点比例和帧率稳定性。
3.1.3 案例拆解:某3C装配线的相机选型
某3C电子装配线需要机械臂从料盘中抓取小型 USB 连接器(尺寸约 8mm×6mm),料盘深度约 10mm,相机安装在机械臂上方 0.6m 处。初始方案选用 RealSense D435i,测试发现:
- 连接器金属外壳反光导致深度图出现大量黑色空洞,点云缺失率约 30%;
- 边缘飞点严重,导致后续分割时无法准确提取连接器轮廓。
分析后判断为反光材质与主动红外投影不兼容。改用 Ensenso N35 并加装偏振滤光片后,点云完整率提升至 95% 以上,抓取成功率从 72% 提升至 98%。该案例说明:选型不能只看参数表,必须结合目标物体材质和现场光照进行实测。
3.1.4 常见误区与总结
- 误区一:认为深度相机精度越高越好。实际上,高精度相机往往 FOV 较小、帧率较低,且价格昂贵,需根据抓取公差合理选择。
- 误区二:忽略环境光影响。ToF 相机在阳光下几乎失效,结构光在黑色或反光物体上表现差。
- 误区三:只关注深度图,忽略 RGB 对齐。对于需要颜色信息的抓取任务,RGB 与深度对齐的精度同样关键。
3.2 标定原理:从内参到外参的完整链路
3.2.1 核心原理
深度相机的标定分为内参标定和外参标定两部分。内参描述相机光学中心、焦距和畸变系数,用于将像素坐标转换为相机坐标系下的归一化坐标;外参描述相机坐标系相对于机器人基座坐标系(或世界坐标系)的旋转和平移关系,即手眼标定矩阵。对于机械臂抓取,外参标定精度直接决定了抓取位置在机器人坐标系下的精度。
内参模型(针孔模型)可表示为:
[u] [fx 0 cx] [X_cam/Z_cam]
[v] = [0 fy cy] [Y_cam/Z_cam]
[1] [0 0 1] [1]
其中 fx、fy 为焦距(像素单位),cx、cy 为主点坐标。畸变模型通常采用 Brown-Conrady 模型,包含径向畸变 k1、k2、k3 和切向畸变 p1、p2。
3.2.2 操作流程:手眼标定的具体步骤
- 准备标定板:使用 7×9 棋盘格(格边长 30mm)或圆点阵标定板,确保标定板平面度优于 0.05mm。
- 固定相机:将相机安装在机械臂末端(Eye-in-Hand)或固定于工作台上方(Eye-to-Hand),并确保标定过程中相机与机械臂相对位置不变。
- 采集多组数据:控制机械臂运动到 15-20 个不同位姿,在每个位姿下同时记录:机械臂末端位姿(从控制器读取)和标定板在相机坐标系下的位姿(通过图像检测计算)。
- 求解 AX = XB:利用 Tsai-Lenz 或 Park-Martin 算法求解手眼变换矩阵 X。其中 A 为机械臂末端位姿变化,B 为标定板位姿变化。
- 验证标定精度:将标定板放置在抓取工作区域内的多个位置,计算通过标定矩阵转换后的坐标与机械臂实际示教坐标的误差。
3.2.3 案例拆解:Eye-in-Hand 标定误差分析与优化
某项目使用 Eye-in-Hand 安装方式,机械臂末端安装 RealSense D435i。初次标定后,抓取定位误差达到 ±8mm,远超预期。排查过程如下:
- 检查内参:使用 OpenCV 重新标定内参,发现原厂内参在近距离(<0.3m)下存在 2-3 像素的偏差,导致深度反投影误差放大。
- 检查标定板位姿分布:原始 15 组数据中,标定板几乎都位于相机视野中心,导致外参解算在 Z 方向(深度方向)约束不足。
- 优化措施:重新采集 25 组数据,标定板位置覆盖视野四角和中心,并增加机械臂末端旋转角度(±30°)。
- 结果:重标定后,抓取定位误差降至 ±1.5mm,满足装配公差要求。
该案例表明:标定精度不仅取决于算法,更取决于数据采集的质量和分布。
3.2.4 常见误区与总结
- 误区一:使用原厂内参不重新标定。原厂内参在出厂环境下标定,实际安装后可能因镜头松动或温度变化而偏移。
- 误区二:标定板太小或太大。标定板在图像中应占据 1/3 至 2/3 的面积,过小导致角点检测不稳定,过大则超出视野。
- 误区三:忽略畸变校正。在图像边缘区域,畸变可达 5-10 像素,若不校正将严重影响深度反投影精度。
3.3 点云采集与预处理流程
3.3.1 核心原理与流程
点云采集的原始输出是深度图(Depth Map),每个像素值代表该点到相机光心平面的距离(单位通常为毫米)。通过内参矩阵,可将深度图反投影为相机坐标系下的三维点云。预处理流程的目标是去除噪声、减少数据量、并统一坐标系,为后续处理提供干净、稠密且坐标一致的点云。
// 深度图转点云(伪代码)
for v in 0..height:
for u in 0..width:
Z = depth_image[v][u] * scale // 单位转换为米
if Z == 0: continue // 无效深度
X = (u - cx) * Z / fx
Y = (v - cy) * Z / fy
point_cloud.push_back({X, Y, Z})
3.3.2 预处理操作流程
- 直通滤波(Pass-Through Filter):根据工作区域裁剪点云,去除背景和无关区域。例如,仅保留 Z 轴 0.3-0.8m 范围内的点。
- 体素降采样(Voxel Downsampling):将空间划分为固定大小的体素(如 2mm×2mm×2mm),每个体素内保留重心点,可大幅减少点数(通常减少 70-90%),同时保持几何特征。
- 统计离群点移除(Statistical Outlier Removal):计算每个点到其 k 个最近邻的平均距离,若该距离超过全局均值 + 标准差倍数(如 1.0),则视为离群点移除。
- 法线估计与平滑:使用 PCA 或 KD-Tree 搜索邻域,估计每个点的法线方向,用于后续分割和位姿估计。
- 坐标变换:将相机坐标系下的点云通过外参矩阵 T_cam2base 变换到机械臂基座坐标系,使点云与机器人共享同一坐标参考。
| 预处理步骤 | 主要参数 | 典型值 | 作用 |
|---|---|---|---|
| 直通滤波 | X/Y/Z 范围 | Z: 0.3-0.8m | 去除背景 |
| 体素降采样 | 体素大小 | 2-5mm | 减少点数 |
| 统计滤波 | k, stddev_mult | k=20, std=1.0 | 去除离群点 |
| 法线估计 | 邻域半径 | 5-10mm | 几何特征 |
3.3.3 案例拆解:金属反光零件的点云修复
某抓取场景中,目标零件为不锈钢法兰盘,表面反光严重。RealSense 采集的深度图在反光区域出现大量“飞点”(深度值跳变)和空洞。处理方案如下:
- 初始现象:点云在法兰盘中心区域出现直径约 20mm 的空洞,边缘存在随机飞点。
- 分析:反光导致红外投影在镜面区域无法形成有效纹理,双目匹配失败。
- 操作步骤:① 在相机镜头前加装偏振片,减少镜面反射;② 调整相机曝光时间,降低红外投影强度;③ 在预处理阶段,使用“空洞填充”算法(基于邻域深度插值)修复小面积空洞;④ 对飞点使用统计滤波去除。
- 结果:点云完整率从 65% 提升至 92%,抓取成功率从 58% 提升至 95%。
该案例说明:硬件层面的光学调整往往比软件滤波更有效,预处理只能作为辅助手段。
3.3.4 常见误区与总结
- 误区一:过度降采样导致细节丢失。体素大小设置过大(>5mm)会丢失小尺寸物体的几何特征,影响后续分割。
- 误区二:忽略时间戳同步。RGB 和深度图若未同步,在物体运动时会导致颜色与深度错位。
- 误区三:直接使用原始点云进行配准。未经过预处理的点云包含大量噪声和离群点,会严重干扰 ICP 等配准算法的收敛。