2. 坐标系基础:世界坐标系、机器人基坐标系、工具坐标系、相机坐标系、标定板坐标系定义与变换关系

在 Eye-to-Hand 标定中,所有测量与运动都建立在多个坐标系之间的精确变换之上。理解每个坐标系的定义、物理附着对象以及它们之间的变换链,是标定成功的前提。本章将系统定义五个核心坐标系,并给出它们之间的数学变换关系。

2.1 五大坐标系定义

坐标系名称 符号 物理附着对象 原点位置 轴方向约定
世界坐标系 {W} 固定于工作空间(地面或基座平台) 用户自定义,通常为机器人安装点或工作台角点 Z 轴竖直向上,X/Y 轴水平
机器人基坐标系 {B} 机器人底座安装面 机器人底座中心 Z 轴竖直向上,X 轴指向机器人前方
工具坐标系 {T} 机器人末端执行器(夹爪、焊枪、吸盘等) 工具中心点 (TCP) Z 轴沿工具伸出方向
相机坐标系 {C} 固定安装的相机(Eye-to-Hand 配置) 相机光心 Z 轴沿光轴指向场景,X/Y 轴平行于像平面
标定板坐标系 {P} 标定板(棋盘格或圆点阵列板) 标定板左上角或中心 Z 轴垂直于板面,X/Y 轴沿棋盘格行列方向
关键约定:所有坐标系均遵循右手定则。机器人基坐标系 {B} 与世界坐标系 {W} 之间通常存在一个固定的旋转平移关系,该关系在机器人安装时通过测量或标定获得。

2.2 坐标系变换关系总览

Eye-to-Hand 标定的核心是求解相机坐标系 {C} 到机器人基坐标系 {B} 的变换矩阵 BCT。该变换一旦确定,相机检测到的物体位置即可转换到机器人运动空间。下图展示了五个坐标系之间的完整变换链:

Eye-to-Hand 五大坐标系变换关系图 Eye-to-Hand 五大坐标系变换关系 世界坐标系 {W} 机器人基坐标系 {B} 工具坐标系 {T} 相机坐标系 {C} 标定板坐标系 {P} 固定变换 W→B T 机器人运动学 B→T T (q) 相机外参 C→P T 目标变换 B→C T 闭环约束 T→P T (已知) 闭环方程 W→B T · B→C T · C→P T = W→B T · B→T T · T→P T 简化后:B→C T · C→P T = B→T T · T→P T

2.3 变换矩阵与齐次坐标

所有坐标系之间的变换均使用 4×4 齐次变换矩阵 表示,包含旋转分量 R(3×3)和平移分量 t(3×1):

      | R11  R12  R13  tx |
T =   | R21  R22  R23  ty |
      | R31  R32  R33  tz |
      |  0    0    0    1  |

齐次坐标点 P = [x, y, z, 1]T 通过左乘变换矩阵实现坐标系转换:

AP = ABT · BP
重要性质:变换矩阵可逆,逆矩阵 BAT = (ABT)-1 表示反向变换。变换矩阵的乘法满足结合律但不满足交换律,顺序至关重要。

2.4 关键变换链详解

在 Eye-to-Hand 标定过程中,以下变换链构成闭环约束,是求解目标变换 BCT 的核心方程:

  1. 机器人基坐标系 → 工具坐标系(BTT):由机器人正向运动学计算得出,依赖于关节角度 q 和机器人 DH 参数。该变换在每次机器人运动时实时更新。
  2. 工具坐标系 → 标定板坐标系(TPT):当标定板固定在机器人末端时,该变换为固定值,可通过工具标定或设计图纸获得。在 Eye-to-Hand 配置中,标定板通常固定在机器人末端。
  3. 相机坐标系 → 标定板坐标系(CPT):通过相机拍摄标定板图像,利用 PnP 算法求解。该变换在每次拍摄时重新计算,是标定过程中的观测值。
  4. 机器人基坐标系 → 相机坐标系(BCT):待求解的目标变换,在标定过程中保持不变(相机固定安装)。

2.5 闭环方程与标定原理

对于机器人运动到第 i 个位姿,存在以下闭环关系:

BCT · CPTi = BTTi · TPT

其中:

  • BCT —— 未知,待求解(固定值)
  • CPTi —— 第 i 次拍摄的观测值(相机外参)
  • BTTi —— 第 i 次拍摄的机器人位姿(运动学计算)
  • TPT —— 已知固定值(工具到标定板)

通过采集多组(N ≥ 3)不同位姿下的观测数据,构建超定方程组,即可求解 BCT。常用的求解方法包括 Tsai-Lenz 两步法 和 非线性优化法,将在后续章节详细展开。

常见误区:初学者容易混淆 CPT 和 PCT 的方向。请牢记:变换矩阵的下标表示“从哪个坐标系到哪个坐标系”,CPT 表示将标定板坐标系 {P} 中的点变换到相机坐标系 {C} 中。

2.6 坐标系变换的工程实现

在实际编程中,通常使用机器人库(如 robotics-toolbox、KDL)或线性代数库(如 Eigen、NumPy)来管理变换矩阵。以下是一个典型的 Python 伪代码片段,展示如何构建闭环方程:

import numpy as np

# 定义齐次变换矩阵类
class Transform:
    def __init__(self, R=np.eye(3), t=np.zeros(3)):
        self.T = np.eye(4)
        self.T[:3, :3] = R
        self.T[:3, 3] = t
    
    def __mul__(self, other):
        return Transform.from_matrix(self.T @ other.T)
    
    @staticmethod
    def from_matrix(mat):
        result = Transform()
        result.T = mat
        return result

# 标定数据:假设已采集 N 组数据
N = 10
B_T_T_list = []  # 机器人位姿列表
C_P_T_list = []  # 相机外参列表
T_P_T = Transform()  # 工具到标定板的固定变换

# 构建方程:B_C_T * C_P_T_i = B_T_T_i * T_P_T
# 对于每组数据,整理为 AX = XB 形式
for i in range(N):
    A_i = B_T_T_list[i] * T_P_T
    B_i = C_P_T_list[i]
    # 求解 A_i * X = X * B_i
    # 具体求解算法见后续章节

2.7 坐标系变换的精度影响因素

影响因素 影响环节 典型误差量级 缓解措施
机器人运动学参数误差 BTT 0.1~1 mm 机器人标定、使用高精度机器人
相机内参标定误差 CPT 0.1~0.5 像素 多视角标定、高分辨率相机
标定板制造误差 TPT 0.01~0.1 mm 使用陶瓷或玻璃基板、激光刻蚀
标定板安装偏差 TPT 0.1~0.5 mm 精密夹具、工具标定
图像特征提取误差 CPT 0.1~0.3 像素 亚像素角点检测、滤波
工程建议:在采集标定数据时,尽量让机器人运动到工作空间的不同区域,并改变末端姿态(俯仰、偏转),使标定板在相机视野中覆盖不同位置和角度。这有助于提高求解的数值稳定性和精度。