2. 抓取任务定义与坐标系梳理
在机器人视觉引导抓取系统中,所有位姿计算、手眼标定、路径规划和抓取执行,最终都归结为同一个问题:同一个物理点在不同坐标系下的坐标如何互相转换。如果坐标系定义混乱,即使标定算法本身正确,抓取也会出现方向偏差、位置漂移甚至碰撞。因此,本节先把抓取任务中涉及的五个核心坐标系逐一讲清楚,并给出工程上可落地的约定。
一、五个坐标系的角色分工
一个典型的“眼在手外”(eye-to-hand)抓取系统包含以下坐标系:
- 世界坐标系(World Frame,{W}):整个工作场景的绝对参考系,通常固定在地面或工作台面上。它的作用是给所有其他坐标系提供一个公共基准,便于多机器人、多相机或离线编程时统一描述位置。
- 机器人基坐标系(Base Frame,{B}):固定在机器人底座上的坐标系,原点一般在底座安装面中心,Z 轴通常垂直向上或沿机器人第一轴方向。机器人控制器内部所有关节角与末端位姿的换算,都以基坐标系为根。
- 末端工具坐标系(Tool Frame,{T}):固定在末端执行器(夹爪、吸盘等)上的坐标系,原点称为 TCP(Tool Center Point)。抓取时真正需要对准目标的是 TCP,而不是法兰盘中心。
- 相机坐标系(Camera Frame,{C}):以相机光心为原点,Z 轴沿光轴指向观察方向,X、Y 轴与图像平面平行。视觉算法输出的目标位姿通常先落在相机坐标系下。
- 目标物体坐标系(Object Frame,{O}):附着在被抓物体上的坐标系,原点一般取物体的抓取中心或几何中心,姿态由物体的主方向定义。抓取的本质就是让 {T} 与 {O} 在期望的相对位姿下重合。
二、坐标系之间的变换链
视觉引导抓取的完整变换链可以写成:
P_B = T_B_W · T_W_C · T_C_O · P_O
抓取位姿:T_B_T = T_B_W · T_W_C · T_C_O · T_O_T
其中 T_A_B 表示把 {B} 中的点变换到 {A} 的齐次变换矩阵。工程上通常把 T_B_W(基座在世界中的位姿)和 T_W_C(相机在世界中的位姿)合并为手眼标定结果 T_B_C,从而简化在线计算。
三、工程约定与注意事项
坐标系定义清楚之后,还需要统一以下工程约定,否则不同模块之间仍会“各说各话”:
- 旋转表示统一:建议内部计算统一使用旋转矩阵或四元数,仅在与人交互或配置文件时使用欧拉角,并明确欧拉角顺序(如 ZYX 内旋)。
- 单位统一:平移量统一用毫米或米,课程示例统一采用毫米,角度统一用度或弧度,配置文件中必须标注。
- 手眼标定结果的方向:明确
T_B_C是“相机在基座中的位姿”,而不是反过来。若使用T_C_B,必须显式注明。 - TCP 定义:TCP 应定义在夹爪闭合中心或吸盘接触面中心,并在机器人控制器中完成工具坐标标定,而不是在视觉程序中临时补偿。
- 物体坐标系姿态:对于规则物体,{O} 的 Z 轴建议沿抓取接近方向,X 轴沿物体长边,便于夹爪开合方向与物体对齐。
工程提示:在调试阶段,可以先用一个已知尺寸的标定板或标记物,分别用相机测量和机器人触碰测量同一个点,比较两者在世界坐标系下的坐标差。若偏差在 1~2 mm 以内,说明坐标系链基本正确;若偏差随位置变化而增大,通常是手眼标定或 TCP 定义有误。
四、一个可执行的坐标系检查清单
在正式抓取前,建议按以下顺序逐项确认,每项都给出可观察的判断依据:
| 检查项 | 操作 | 判断依据 |
|---|---|---|
| 世界坐标系 | 在工作台上放置标记点,记录其在 {W} 下的坐标 | 多次测量重复性误差 < 0.5 mm |
| 基坐标系 | 用机器人示教器读取当前法兰位姿,与理论值对比 | 法兰位姿与运动学模型一致 |
| TCP | 用尖点触碰固定参考点,改变姿态后重复触碰 | 不同姿态下 TCP 均能对准同一点,偏差 < 1 mm |
| 相机坐标系 | 用标定板验证相机内参和畸变系数 | 重投影误差 < 0.3 像素 |
| 手眼关系 | 相机观察固定标记,机器人移动到多个姿态 | 反算标记在 {B} 下坐标一致,偏差 < 2 mm |
| 物体坐标系 | 视觉输出物体位姿,机器人按该位姿抓取 | 抓取成功率稳定,无明显方向偏差 |