2、机器人运动学基础:刚体变换、旋转矩阵、欧拉角、四元数、齐次坐标与齐次变换矩阵

手眼标定的本质,是在两个或多个坐标系之间建立精确的数学映射关系。无论是“眼在手上”还是“眼在手外”,最终都要回答同一个问题:机械臂末端执行器上的某一点,在相机坐标系下看到的坐标,如何转换到机器人基坐标系下? 这个问题的答案,完全建立在刚体变换与齐次变换矩阵的理论基础之上。本章将系统梳理这些核心数学工具,帮助你建立从“物理空间中的旋转和平移”到“矩阵运算”的完整认知链路。

刚体变换与齐次变换矩阵知识框架 刚体变换 (R, t) 6自由度:3旋转 + 3平移 旋转矩阵 R ∈ SO(3) 3×3正交阵,行列式=+1 欧拉角:ZYX / RPY / 固定角 直观但存在万向锁问题 四元数:q = (w, x, y, z) 无万向锁,插值平滑,计算高效 齐次变换矩阵 T ∈ SE(3) 4×4矩阵,整合旋转+平移 齐次坐标: (x, y, z, 1)ᵀ 将平移纳入矩阵乘法 复合变换:T = T₁ · T₂ · T₃ 链式法则:从基座到末端 手眼标定核心应用 AX = XB(眼在手外) | AX = XB(眼在手上) 坐标系变换链:像素 → 相机 → 末端 → 基座

2.1 刚体变换:描述物体在空间中的位置与姿态

刚体变换(Rigid Body Transformation)是机器人学中最基础的数学模型。所谓“刚体”,是指物体在运动过程中不发生形变,其上任意两点之间的距离保持不变。机械臂的连杆、末端法兰、安装在法兰上的相机,在理想情况下都可以视为刚体。刚体变换由两部分组成:旋转(Rotation)和平移(Translation),共6个自由度——3个旋转自由度和3个平移自由度。

在三维空间中,一个刚体相对于参考坐标系的位姿(Pose)可以表示为:

位置:t = [tx, ty, tz]ᵀ   (从参考系原点指向刚体原点的平移向量)
姿态:R ∈ SO(3)          (刚体坐标系相对于参考系的旋转矩阵)

刚体变换的核心性质包括:

  • 保距性:变换前后,刚体上任意两点间的欧氏距离不变。
  • 保角性:变换前后,刚体上任意两条线段的夹角不变。
  • 可逆性:刚体变换存在逆变换,且逆变换仍为刚体变换。
  • 可复合性:多个刚体变换依次作用,等价于一个总的刚体变换。
工程理解:在手眼标定中,相机与机械臂末端之间的相对位姿关系就是一个刚体变换。一旦标定完成,这个变换矩阵在机械臂工作空间内是恒定不变的(假设相机安装牢固、机械臂无柔性变形)。这就是为什么我们可以通过一次标定,长期使用该变换关系进行视觉引导。

2.2 旋转矩阵:SO(3)群与正交约束

旋转矩阵 R 是一个 3×3 的正交矩阵,满足 RᵀR = I 且 det(R) = +1。所有满足这些条件的矩阵构成特殊正交群 SO(3)。旋转矩阵的每一列(或每一行)表示刚体坐标系的一个轴在参考坐标系中的方向余弦。

以绕 Z 轴旋转 θ 角为例,旋转矩阵为:

Rz(θ) = [cosθ  -sinθ  0]
        [sinθ   cosθ  0]
        [  0      0    1]

同理,绕 X 轴和 Y 轴的旋转矩阵分别为:

Rx(θ) = [1    0      0  ]
        [0  cosθ  -sinθ]
        [0  sinθ   cosθ]

Ry(θ) = [cosθ  0  sinθ]
        [  0   1   0  ]
        [-sinθ 0  cosθ]

旋转矩阵的工程意义在于:

  • 坐标变换:将向量从一个坐标系变换到另一个坐标系,即 p' = R · p。
  • 姿态描述:完整描述刚体在空间中的朝向,无奇异问题。
  • 矩阵乘法复合:连续旋转可通过矩阵乘法实现,但注意矩阵乘法不满足交换律,旋转顺序至关重要。
常见误区:旋转矩阵虽然有9个元素,但只有3个独立自由度(受正交约束和行列式约束限制)。直接使用9个参数进行优化求解时,必须施加约束条件,否则结果可能不是合法的旋转矩阵。在手眼标定中,通常使用四元数或轴角表示法进行参数化,避免约束问题。

2.3 欧拉角:直观但存在万向锁风险

欧拉角将旋转分解为绕三个坐标轴的依次旋转。常用的约定包括:

  • ZYX 欧拉角:先绕 Z 轴旋转 yaw(偏航角),再绕新 Y 轴旋转 pitch(俯仰角),最后绕新 X 轴旋转 roll(横滚角)。
  • RPY 角(固定角):绕固定参考系的 X-Y-Z 轴依次旋转,与 ZYX 欧拉角在数值上存在对应关系。
  • ZYZ 欧拉角:常用于机器人运动学分析。

欧拉角到旋转矩阵的转换(以 ZYX 为例):

R = Rz(yaw) · Ry(pitch) · Rx(roll)

R = [cy·cp   cy·sp·sr - sy·cr   cy·sp·cr + sy·sr]
    [sy·cp   sy·sp·sr + cy·cr   sy·sp·cr - cy·sr]
    [-sp     cp·sr              cp·cr            ]

其中:cy=cos(yaw), sy=sin(yaw), cp=cos(pitch), sp=sin(pitch), cr=cos(roll), sr=sin(roll)

万向锁(Gimbal Lock)是欧拉角最致命的缺陷:当 pitch = ±90° 时,yaw 和 roll 的旋转轴重合,导致丢失一个旋转自由度,系统退化为2自由度。此时,不同的 (yaw, roll) 组合可能产生相同的旋转矩阵,造成奇异性。

工程建议:在机械臂控制中,欧拉角适合用于人机交互界面显示和简单姿态设定,但不适合作为内部计算和插值的表示方式。当机械臂末端接近垂直向下或向上(pitch接近±90°)时,应避免使用欧拉角进行姿态插补,否则可能出现关节速度突变。

2.4 四元数:无奇异性的旋转表示

四元数(Quaternion)是哈密顿在1843年提出的超复数,形式为 q = w + xi + yj + zk,其中 w 为实部,(x, y, z) 为虚部。单位四元数(||q|| = 1)可以唯一表示三维空间中的旋转。

四元数与旋转矩阵的转换关系为:

给定单位四元数 q = (w, x, y, z),对应的旋转矩阵为:

R = [1-2(y²+z²)   2(xy-wz)     2(xz+wy)  ]
    [2(xy+wz)     1-2(x²+z²)   2(yz-wx)  ]
    [2(xz-wy)     2(yz+wx)     1-2(x²+y²)]

四元数的核心优势:

  • 无万向锁:不存在奇异姿态,适合全姿态范围工作。
  • 紧凑性:仅需4个参数,比旋转矩阵的9个参数更高效。
  • 插值平滑:通过球面线性插值(SLERP)可实现姿态的平滑过渡。
  • 复合运算简单:四元数乘法对应旋转复合,计算量小于矩阵乘法。

四元数乘法规则:

q₁ ⊗ q₂ = (w₁w₂ - x₁x₂ - y₁y₂ - z₁z₂,
            w₁x₂ + x₁w₂ + y₁z₂ - z₁y₂,
            w₁y₂ - x₁z₂ + y₁w₂ + z₁x₂,
            w₁z₂ + x₁y₂ - y₁x₂ + z₁w₂)
工程实践:在机器人操作系统(ROS)中,姿态消息(geometry_msgs/Pose)默认使用四元数表示。手眼标定算法(如OpenCV的calibrateHandEye)也直接支持四元数输入输出。建议在标定计算和姿态插补中使用四元数,仅在最终显示或人工设定时转换为欧拉角。

2.5 齐次坐标与齐次变换矩阵:统一旋转与平移

旋转矩阵只能描述姿态,无法直接表达平移。为了将旋转和平移统一到一个矩阵运算中,引入齐次坐标和齐次变换矩阵。

齐次坐标将三维点 (x, y, z) 表示为四维向量 (x, y, z, 1)ᵀ,将三维向量 (vx, vy, vz) 表示为 (vx, vy, vz, 0)ᵀ。这样,平移操作就可以通过矩阵乘法实现。

齐次变换矩阵 T 的形式为:

T = [R   t]   =  [r₁₁  r₁₂  r₁₃  tx]
    [0ᵀ   1]      [r₂₁  r₂₂  r₂₃  ty]
                  [r₃₁  r₃₂  r₃₃  tz]
                  [ 0    0    0   1 ]

其中 R 为 3×3 旋转矩阵,t 为 3×1 平移向量。齐次变换矩阵属于特殊欧氏群 SE(3)。

齐次变换的核心运算规则:

  • 坐标变换:p' = T · p,其中 p 和 p' 均为齐次坐标。
  • 逆变换:T⁻¹ = [Rᵀ -Rᵀt; 0 1],表示从目标系变换回参考系。
  • 复合变换:T = T₁ · T₂,表示先进行 T₂ 变换,再进行 T₁ 变换。
表示方法 参数数量 优点 缺点 适用场景
旋转矩阵 R 9(3独立) 无奇异,直接用于坐标变换 冗余参数多,需约束 坐标变换计算、矩阵复合
欧拉角 3 直观,易于理解 万向锁,插值不平滑 人机交互、简单姿态设定
四元数 4 无奇异,插值平滑,紧凑 不够直观 姿态插补、标定计算、ROS消息
齐次变换矩阵 T 16(6独立) 统一旋转+平移,链式复合 参数冗余 运动学正解、手眼标定

2.6 案例拆解:从相机坐标到机械臂基座的完整变换链

假设一个典型的“眼在手上”视觉抓取场景,我们需要将相机检测到的目标点坐标转换到机械臂基坐标系下。整个变换链如下:

目标点在像素坐标系:p_pixel = (u, v)

步骤1:像素坐标 → 相机坐标系(利用相机内参 K)
  p_cam = K⁻¹ · [u, v, 1]ᵀ · depth

步骤2:相机坐标系 → 机械臂末端坐标系(手眼标定结果 T_cam_to_end)
  p_end = T_cam_to_end · p_cam

步骤3:机械臂末端坐标系 → 机械臂基坐标系(机器人运动学正解 T_base_to_end)
  p_base = T_base_to_end · p_end

最终:p_base 即为机械臂基坐标系下的目标位置,可直接用于路径规划。

在这个变换链中,每一步都是一个齐次变换矩阵的乘法运算。关键点在于:

  • T_cam_to_end 是手眼标定要求解的未知量,它是固定不变的。
  • T_base_to_end 由机械臂的关节角度通过运动学正解实时计算得出。
  • 整个变换链可以合并为一个总变换矩阵:T_base_to_cam = T_base_to_end · T_cam_to_end。
实战数据示例:假设某次标定得到 T_cam_to_end 的平移分量为 t = [0.025, -0.018, 0.120]ᵀ(单位:米),旋转部分用四元数表示为 q = (0.999, 0.008, -0.012, 0.005)。当机械臂末端在基坐标系下的位姿为 T_base_to_end(由关节角计算得到),相机检测到目标在相机坐标系下的坐标为 p_cam = (0.05, -0.03, 0.45)ᵀ,则目标在基坐标系下的坐标为: p_base = T_base_to_end · T_cam_to_end · p_cam 计算时需先将四元数转换为旋转矩阵,再构造齐次变换矩阵进行乘法运算。

2.7 常见误区与总结复盘

在刚体变换与齐次矩阵的学习和应用中,以下误区最为常见:

误区一:混淆旋转顺序。矩阵乘法不满足交换律,R₁·R₂ ≠ R₂·R₁。在构造复合旋转时,必须明确是“绕当前坐标系旋转”还是“绕固定坐标系旋转”,两者的矩阵乘法顺序恰好相反。
误区二:忽略齐次坐标的最后一维。点用 (x, y, z, 1)ᵀ 表示,向量用 (x, y, z, 0)ᵀ 表示。如果错误地将向量当作点处理,平移分量会被错误地叠加到向量上。
误区三:四元数未归一化。只有单位四元数才能表示旋转。在多次四元数乘法或插值后,四元数可能因数值误差偏离单位长度,必须重新归一化。
误区四:逆变换计算错误。齐次变换矩阵的逆不是简单的矩阵转置,而是 T⁻¹ = [Rᵀ -Rᵀt; 0 1]。直接对4×4矩阵求逆虽然可行,但计算量大且可能引入数值误差。

总结复盘:本章的核心知识可归纳为以下要点:

  1. 刚体变换 = 旋转 + 平移,共6自由度,是手眼标定的数学基础。
  2. 旋转矩阵 是SO(3)群元素,适合坐标变换计算,但参数冗余。
  3. 欧拉角 直观但存在万向锁问题,不适合全姿态计算。
  4. 四元数 无奇异、插值平滑,是工程计算的首选旋转表示。
  5. 齐次变换矩阵 统一了旋转和平移,通过链式乘法实现坐标系间的连续变换。
  6. 手眼标定的本质就是求解 T_cam_to_end(眼在手上)或 T_cam_to_base(眼在手外)这个齐次变换矩阵。

掌握这些数学工具后,下一阶段我们将进入手眼标定的核心问题:如何通过机械臂的多次运动,采集足够的数据对,求解出这个关键的变换矩阵。届时,本章的齐次变换矩阵将是构建标定方程的基本单元。