3. 坐标系基础
在机械臂视觉定位系统中,坐标变换不是抽象的数学游戏,而是把“图像里看到的目标”变成“机械臂能到达的位置”的工程桥梁。要完成这条链路,必须先厘清六个坐标系的定义、原点位置、轴向含义以及它们之间的变换关系。它们分别是:世界坐标系、基坐标系、工具坐标系、工件坐标系、相机坐标系和像素坐标系。
一、六个坐标系的定义与角色
世界坐标系(World Frame)是整个工作场景的全局参考系,通常固定在地面或工作台某一点。它不随机械臂或相机移动,用于统一描述机械臂、相机、工件和障碍物的绝对位置。在多机器人或视觉引导系统中,世界坐标系是“共同语言”。
基坐标系(Base Frame)位于机械臂底座,是机器人运动学的根坐标系。机械臂的正运动学通常以基坐标系为起点,计算末端法兰的位置和姿态。基坐标系与世界坐标系之间一般通过一个固定的外参矩阵关联。
工具坐标系(Tool Frame / TCP Frame)定义在末端执行器上,原点通常取工具中心点(TCP),例如焊枪尖端、吸盘中心或夹爪闭合中心。它描述“工具相对于法兰”的偏移和姿态,是机械臂真正执行任务时关心的坐标系。
工件坐标系(Work Object Frame)固定在待加工或待抓取工件上。当工件在台面上有确定摆放时,用工件坐标系描述目标点,可以让程序与工件形状绑定,而不是与机械臂绝对位置绑定,便于换线和小幅偏移补偿。
相机坐标系(Camera Frame)以相机光心为原点,Z轴沿光轴指向场景,X、Y轴与图像平面平行。它描述三维空间点在相机视野中的位置,是视觉测量的直接输出坐标系。
像素坐标系(Pixel Frame)是图像平面上的二维坐标系,原点通常在图像左上角,单位为像素。它描述目标在图像中的行列位置,是图像处理算法最直接的输出。
二、坐标系之间的变换关系
六个坐标系并不是孤立的,而是通过刚体变换串联成一条链。典型链路为:像素坐标系 → 相机坐标系 → 世界坐标系 → 基坐标系 → 工具坐标系,工件坐标系则作为目标描述的中间参考。每一步变换都可以用旋转矩阵 R 和平移向量 t 组成的齐次变换矩阵 T 表示。
其中,像素坐标系到相机坐标系依赖相机内参矩阵 K,包含焦距和主点;相机坐标系到世界坐标系依赖外参矩阵,由手眼标定获得;世界坐标系到基坐标系通常是固定安装关系;基坐标系到工具坐标系由机器人正运动学实时计算;工件坐标系则通过三点法或视觉标定确定。
三、典型场景:从像素到抓取
假设相机固定安装在工作台上方,机械臂需要抓取传送带上的零件。视觉算法先在图像中找到零件中心像素坐标 (u, v),然后按以下流程转换:
- 用相机内参和深度信息,将 (u, v) 反投影为相机坐标系下的三维点 Pc。
- 用相机外参矩阵,将 Pc 变换到世界坐标系 Pw。
- 用世界坐标系到基坐标系的固定矩阵,将 Pw 变换到基坐标系 Pb。
- 结合工具坐标系偏移,计算末端法兰需要到达的位姿。
- 逆运动学求解关节角,驱动机械臂完成抓取。
# 伪代码:像素坐标到基坐标系的变换链
Pc = K_inv @ [u, v, 1] * depth # 像素 -> 相机
Pw = T_cam_to_world @ Pc # 相机 -> 世界
Pb = T_world_to_base @ Pw # 世界 -> 基座
P_tcp = Pb - R_base_to_tool @ t_tool # 扣除工具偏移
q = inverse_kinematics(P_tcp) # 逆解关节角
四、常见误区与复盘
五、六个坐标系对照清单
| 坐标系 | 原点位置 | 典型轴向 | 主要用途 | 获取方式 |
|---|---|---|---|---|
| 世界坐标系 | 地面或工作台固定点 | Zw 垂直向上 | 全局统一描述 | 人为定义 |
| 基坐标系 | 机械臂底座中心 | Zb 沿底座向上 | 运动学计算根节点 | 机器人出厂定义 |
| 工具坐标系 | TCP 工具中心点 | Zt 沿工具指向 | 执行任务位姿描述 | 四点法/TCP标定 |
| 工件坐标系 | 工件基准点 | 随工件摆放确定 | 目标点相对描述 | 三点法/视觉标定 |
| 相机坐标系 | 相机光心 | Zc 沿光轴向前 | 三维视觉测量 | 相机内参模型 |
| 像素坐标系 | 图像左上角 | u 向右,v 向下 | 图像目标定位 | 图像处理输出 |
掌握这六个坐标系的定义与变换关系,是后续手眼标定、视觉伺服和抓取规划的基础。工程中建议把每个变换矩阵都显式命名并记录来源,避免在调试时把不同环节的误差混在一起。只有坐标系链路清晰,机械臂才能真正“看得准、抓得稳”。