3. 视觉感知基础
在双臂视觉抓取与交接系统中,视觉感知是整条控制链路的起点。无论是单臂抓取还是双臂之间的物体传递,系统都必须先回答三个问题:物体在哪里、物体离相机多远、机械臂末端与物体之间的相对位姿如何。要回答这些问题,需要建立从二维图像到三维空间的完整映射,这正是本节要梳理的核心内容。
一、相机模型:从三维世界到二维像素
相机成像的本质是透视投影。设世界坐标系中一点 P_w = (X_w, Y_w, Z_w),经过刚体变换到相机坐标系 P_c = (X_c, Y_c, Z_c),再经内参矩阵投影到像素平面:
s·[u, v, 1]ᵀ = K · [R | t] · [X_w, Y_w, Z_w, 1]ᵀ
K = [ fx 0 cx ]
[ 0 fy cy ]
[ 0 0 1 ]
其中 fx、fy 为焦距(像素单位),cx、cy 为主点坐标,R、t 为外参。内参描述相机自身光学特性,外参描述相机在机器人基坐标系中的安装位姿。实际镜头还存在径向畸变与切向畸变,通常用 k1、k2、p1、p2、k3 五个系数建模,标定后需对图像做去畸变处理,否则边缘区域的定位误差会显著增大。
二、标定方法:内参、外参与手眼标定
标定分为三个层次,缺一不可:
- 内参标定:使用棋盘格或圆点标定板,采集 15~25 张不同姿态图像,通过张正友标定法求解
K与畸变系数,重投影误差应控制在 0.3 像素以内。 - 外参标定:确定相机坐标系与机器人基坐标系之间的变换关系,常用方法为采集标定板在多个位姿下的图像,结合机器人正运动学求解。
- 手眼标定:求解相机与末端执行器之间的固定变换
X,经典方程为AX = XB。眼在手外(eye-to-hand)与眼在手上(eye-in-hand)的求解形式不同,前者相机固定于工作空间,后者相机随末端运动。
三、深度估计与点云生成
深度获取方式主要分为主动式与被动式。结构光、ToF、双目立体匹配属于常见方案。以双目为例,视差 d = u_L - u_R 与深度关系为 Z = f·B / d,其中 B 为基线。深度图结合内参即可反投影生成点云:
X = (u - cx) · Z / fx
Y = (v - cy) · Z / fy
Z = depth(u, v)
生成的点云通常包含噪声与离群点,需要经过体素下采样、统计滤波、平面分割等预处理。在双臂交接场景中,点云还需变换到机器人基坐标系,并进一步做聚类分割,得到待抓取物体的位姿估计(如 PCA 主轴或 ICP 配准)。
四、视觉伺服基本概念
视觉伺服将视觉反馈直接引入控制回路,分为基于位置的视觉伺服(PBVS)、基于图像的视觉伺服(IBVS)以及混合方法。PBVS 在三维笛卡尔空间计算误差,路径直观但依赖位姿估计精度;IBVS 直接在图像特征空间构造误差,对标定误差更鲁棒,但可能出现相机后退等非预期运动。双臂交接中,常采用“粗定位用 PBVS、精对齐用 IBVS”的分层策略。
| 环节 | 输入 | 输出 | 关键参数 | 常见问题 |
|---|---|---|---|---|
| 内参标定 | 多姿态标定板图像 | K、畸变系数 | 重投影误差 < 0.3 px | 图像数量不足、姿态单一 |
| 手眼标定 | 末端位姿 + 标定板位姿 | 相机-末端变换 X | 旋转误差 < 0.5° | 运动范围小、AX=XB 退化 |
| 深度估计 | 双目/结构光原始数据 | 深度图 | 基线、视差范围 | 反光、透明物体失效 |
| 点云生成 | 深度图 + 内参 | 三维点云 | 体素尺寸、滤波阈值 | 离群点、坐标系未统一 |
| 视觉伺服 | 图像特征或位姿误差 | 关节速度指令 | 增益 λ、交互矩阵 | 特征丢失、局部极小 |
五、典型场景与复盘
以双臂交接为例:左臂抓取杯子后移动到交接区,右臂需要准确接管。若仅依赖单目 RGB,深度缺失会导致抓取高度偏差;若手眼标定存在 2 mm 误差,在 0.5 m 工作距离下可能放大为 5 mm 以上的末端偏差。实践中建议:先用标定板验证重投影误差,再用已知尺寸球体验证点云尺度,最后在交接点做多次空载对齐测试,记录位姿残差分布。
综上,相机模型提供投影关系,标定确定参数,深度估计与点云生成恢复三维结构,视觉伺服把感知结果转化为控制指令。四者构成一条误差会逐级放大的链路,工程中必须逐环节验证,才能保证双臂交接的稳定与精度。