3. 视觉感知基础
灵巧手要完成“看得见、抓得准、放得稳”,第一步不是算法,而是把三维世界正确投影到图像,再把图像还原成可操作的三维信息。本节围绕相机模型、标定、深度感知、点云生成与视觉系统选型五条主线,建立从像素到抓取位姿的完整链路认知。
一、相机模型:从三维点到像素的投影
针孔模型是最常用的成像近似。设相机坐标系下一点 P_c = (X, Y, Z),其像素坐标 (u, v) 由内参矩阵 K 与畸变模型共同决定:
u = fx * X/Z + cx + 畸变项
v = fy * Y/Z + cy + 畸变项
K = [ fx 0 cx
0 fy cy
0 0 1 ]
其中 fx、fy 为焦距(像素单位),cx、cy 为主点。真实镜头存在径向畸变 k1,k2,k3 与切向畸变 p1,p2,广角镜头尤其明显。若忽略畸变,边缘区域的抓取点会偏移数毫米,直接导致夹爪对不准目标。
二、标定原理:内参、外参与手眼关系
标定分为三个层次:
- 内参标定:用棋盘格或圆点靶标,在多姿态下采集图像,求解
K与畸变系数。 - 外参标定:确定相机坐标系与机器人基座或末端坐标系的刚体变换
T。 - 手眼标定:求解相机与末端执行器之间的固定变换
T_cam_tool,是抓取位姿换算的核心。
手眼标定分“眼在手上”(eye-in-hand)与“眼在手外”(eye-to-hand)。前者相机随臂运动,视野灵活但标定随关节链累积误差;后者相机固定,视野稳定但易被机械臂遮挡。标定常用 AX=XB 形式求解,采集多组末端位姿与对应靶标位姿即可解出。
# 典型标定流程
1. 固定标定板,移动机械臂采集 N≥10 组图像
2. 检测角点,计算每帧靶标位姿
3. 求解内参 -> 求解手眼矩阵 T_cam_tool
4. 用重投影误差评估:一般要求 < 0.5 pixel
三、深度感知与点云生成
深度获取主要有三类:结构光、双目立体、ToF。结构光精度高、近距离好,但受强光与反光影响;双目依赖纹理,弱纹理区域易空洞;ToF 帧率高、适合动态,但精度与分辨率通常较低。深度图 D(u,v) 结合内参即可反投影为点云:
X = (u - cx) * Z / fx
Y = (v - cy) * Z / fy
Z = D(u, v) / scale
生成的点云还需滤波:体素下采样降密度、统计滤波去离群点、平面分割去桌面。灵巧手抓取通常只关心目标物体表面点,因此常配合分割网络或抓取检测网络,把点云裁剪到候选区域再送入位姿估计。
四、视觉系统选型要点
选型不是“越贵越好”,而是让精度、视野、帧率、环境适应性与机械手任务匹配。下表给出常见维度的判断依据:
| 维度 | 关键问题 | 典型建议 |
|---|---|---|
| 工作距离 | 相机到目标多远? | 结构光 0.3–1m;ToF 0.5–3m;双目 0.3–2m |
| 精度 | 需要分辨多小的抓取特征? | 精细抓取要求深度误差 < 1mm |
| 帧率 | 目标是否运动? | 动态抓取 ≥ 30fps,静态可 10fps |
| 环境光 | 是否有强光/反光? | 结构光怕强光,ToF 抗光较好 |
| 安装方式 | 眼在手上还是手外? | 遮挡多选眼在手上,稳定场景选眼在手外 |
| 接口与算力 | USB/GigE?是否需边缘计算? | 高分辨率点云建议 GigE + GPU 边缘盒 |
五、案例与常见误区
某灵巧手抓取透明塑料杯时,结构光深度图出现大面积空洞,导致点云缺失、抓取点漂移。复盘发现:透明材质使红外光透射而非反射。解决方式是改用双目+纹理投影,或在杯体表面贴临时标记,并降低对深度完整性的依赖,改用边缘与轮廓估计抓取宽度。
建议把标定与验证纳入日常维护:每周用标准球或棋盘格复测重投影误差,记录外参漂移量;抓取失败时优先检查深度图质量与手眼矩阵,而不是直接调抓取网络参数。只有把“相机模型—标定—深度—点云—选型”这条链路打通,灵巧手的视觉抓取才具备可重复、可维护的工程基础。