3. 运动学基础:位置、姿态、旋转矩阵、欧拉角、四元数、齐次变换矩阵及其在机械臂中的应用

机械臂运动控制的本质,是回答“末端执行器在哪里、朝向哪里、以及如何从当前位姿到达目标位姿”这三个问题。无论是六轴工业机器人还是协作机械臂,其底层控制逻辑都建立在刚体在三维空间中的位置与姿态描述之上。本章将系统梳理位置矢量、旋转矩阵、欧拉角、四元数与齐次变换矩阵的数学定义、相互转换关系及工程应用场景,帮助读者建立从数学表达到控制代码实现的完整桥梁。

机械臂位姿描述与变换方法总览 基础描述 • 位置矢量:P = [x, y, z]ᵀ • 姿态描述:旋转矩阵 R (3×3) • 自由度:6 (3位置 + 3姿态) • 坐标系:基座/关节/工具 • 刚体假设:连杆不变形 姿态表示方法 ① 旋转矩阵 R (9个元素) ② 欧拉角 (α, β, γ) 或 (R, P, Y) ③ 四元数 q = (w, x, y, z) ④ 轴角表示 (k, θ) ⑤ 等效旋转矢量 齐次变换矩阵 T T = [R P; 0 1] (4×4) • 旋转部分 R (3×3) • 平移部分 P (3×1) • 透视部分 [0 0 0] • 比例因子 1 定义 扩展 嵌入 机械臂工程应用 正运动学 关节角 θ → 末端位姿 T T = f(θ₁, θ₂, ..., θ₆) 用于轨迹规划与仿真 逆运动学 末端位姿 T → 关节角 θ 多解/奇异点处理 实时控制核心 轨迹插补 笛卡尔空间直线/圆弧 姿态插值(四元数) 平滑过渡与速度规划 标定与补偿 工具坐标系标定 基座坐标系标定 误差补偿与手眼标定

3.1 位置矢量与旋转矩阵:刚体姿态的数学基石

核心原理:在三维空间中,机械臂连杆可视为刚体。刚体上任意一点的位置可用相对于参考坐标系的位置矢量 P = [x, y, z]ᵀ 表示。然而,仅知道位置不足以描述机械臂末端执行器的完整状态——例如,一个吸盘工具在相同位置可以朝上、朝下或倾斜。因此需要引入姿态描述。旋转矩阵 R 是一个 3×3 正交矩阵,其列向量表示动坐标系各轴在参考坐标系中的方向余弦。旋转矩阵满足 RᵀR = I 且 det(R) = +1,属于特殊正交群 SO(3)。

判断方法与操作流程:在实际工程中,判断一个矩阵是否为合法旋转矩阵,可执行以下三步验证:

  1. 检查矩阵维度是否为 3×3;
  2. 验证正交性:计算 RᵀR,结果应接近单位矩阵(数值误差允许在 1e-6 以内);
  3. 验证行列式:det(R) 应等于 +1(若为 -1 则包含镜像变换,非法)。

旋转矩阵的构造通常基于基本旋转:绕 X 轴旋转角度 θ 的矩阵 Rx(θ)、绕 Y 轴的 Ry(θ)、绕 Z 轴的 Rz(θ)。复合旋转通过矩阵乘法实现,但需注意左乘与右乘的区别:左乘表示绕固定参考坐标系旋转,右乘表示绕当前动坐标系旋转。

旋转轴基本旋转矩阵工程应用场景
绕 X 轴Rx(θ) = [[1,0,0],[0,cosθ,-sinθ],[0,sinθ,cosθ]]俯仰(Pitch)调整
绕 Y 轴Ry(θ) = [[cosθ,0,sinθ],[0,1,0],[-sinθ,0,cosθ]]偏航(Yaw)调整
绕 Z 轴Rz(θ) = [[cosθ,-sinθ,0],[sinθ,cosθ,0],[0,0,1]]翻滚(Roll)调整
经验提醒:旋转矩阵虽然数学上完备,但 9 个元素之间存在 6 个约束方程(3 个正交约束 + 3 个单位长度约束),实际独立变量只有 3 个。这导致直接使用旋转矩阵进行插值或优化时效率低下,且数值误差累积后可能破坏正交性,需要频繁重新正交化处理。

3.2 欧拉角:直观但存在万向锁问题的姿态表示

核心原理:欧拉角通过三次绕坐标轴的旋转序列来描述姿态,常见的有 ZYX(偏航-俯仰-翻滚,用于航空)和 ZYZ(用于机械臂关节分析)。以 ZYX 为例,姿态由三个角度 (α, β, γ) 定义:先绕 Z 轴旋转 α(偏航),再绕新 Y 轴旋转 β(俯仰),最后绕新 X 轴旋转 γ(翻滚)。欧拉角的优势在于直观、参数少(仅 3 个),便于人类理解和示教器操作。

判断方法与操作流程:从旋转矩阵 R 提取 ZYX 欧拉角的公式如下:

β = atan2(-R[2][0], sqrt(R[0][0]² + R[1][0]²))
α = atan2(R[1][0], R[0][0])
γ = atan2(R[2][1], R[2][2])

当 β = ±90° 时,cosβ = 0,α 和 γ 无法唯一确定,此时发生万向锁现象——两个旋转轴重合,系统丢失一个自由度。这是欧拉角在机械臂控制中最致命的缺陷。

风险说明:在机械臂路径规划中,若使用欧拉角进行姿态插值,当路径经过万向锁附近时,角速度会急剧增大,导致末端执行器出现不期望的快速翻转,甚至触发伺服过速报警。某品牌六轴机器人在执行球面抛光任务时,曾因欧拉角插值导致末端突然翻转 180°,损坏了抛光工具。

案例拆解:某 SCARA 机器人需要从点 A 运动到点 B,姿态从 (0°, 0°, 0°) 线性插值到 (180°, 0°, 0°)。若直接对欧拉角线性插值,中间姿态为 (90°, 0°, 0°),路径正常。但若目标姿态为 (0°, 90°, 0°),线性插值路径为 (0°, 45°, 0°) → (0°, 90°, 0°),此时 β 接近 90°,系统进入万向锁区域,实际旋转轴发生突变,末端轨迹出现明显抖动。解决方法是改用四元数插值(Slerp),可保证旋转轴恒定、角速度平滑。

3.3 四元数:无奇异性的姿态插值利器

核心原理:四元数由 1 个实部 w 和 3 个虚部 (x, y, z) 组成,可表示为 q = w + xi + yj + zk,其中 i² = j² = k² = ijk = -1。单位四元数(||q|| = 1)可用于表示三维旋转,其与轴角表示的关系为:q = [cos(θ/2), kxsin(θ/2), kysin(θ/2), kzsin(θ/2)],其中 (kx, ky, kz) 为旋转轴单位矢量,θ 为旋转角度。四元数不存在万向锁问题,且插值平滑,是机械臂轨迹规划中姿态插值的首选。

操作流程:四元数在机械臂控制中的典型使用流程

  1. 初始化:从当前关节角计算末端姿态旋转矩阵 Rcur,转换为四元数 qcur;
  2. 目标设定:从目标位姿获取 Rtgt,转换为 qtgt;
  3. 插值计算:使用球面线性插值(Slerp)计算中间四元数 q(t) = (qcur·sin((1-t)Ω) + qtgt·sin(tΩ)) / sinΩ,其中 Ω 为两四元数夹角,t ∈ [0,1];
  4. 转换回旋转矩阵:将 q(t) 转换为 R(t),用于逆运动学求解关节角;
  5. 发送控制指令:将关节角指令下发至伺服驱动器。

常见误区:四元数存在 q 与 -q 表示同一旋转的“双重覆盖”问题。在插值时,若 qcur·qtgt < 0,应取 -qtgt 进行插值,否则会绕远路旋转。此外,四元数乘法不满足交换律,组合旋转时需注意顺序:qtotal = q2 ⊗ q1(先应用 q1 再应用 q2)。

表示方法参数数量万向锁插值平滑性计算效率存储开销
旋转矩阵9无差(需正交化)中高
欧拉角3有差(路径依赖)高低
四元数4无优(Slerp)高中
轴角4无中(需归一化)高中

3.4 齐次变换矩阵:统一位置与姿态的 4×4 变换

核心原理:齐次变换矩阵 T 将旋转矩阵和平移矢量统一到一个 4×4 矩阵中:

T = | R  P |
    | 0  1 |

其中 R 为 3×3 旋转矩阵,P 为 3×1 平移矢量,最后一行固定为 [0 0 0 1]。齐次变换矩阵属于特殊欧氏群 SE(3),支持连续变换的矩阵乘法复合:TAC = TAB · TBC,表示从 C 坐标系到 A 坐标系的变换可通过中间坐标系 B 串联得到。这一性质是机械臂正运动学(DH 参数法)的基础。

操作流程:齐次变换矩阵在机械臂中的应用步骤

  • 建立连杆坐标系:根据 DH 参数(a, α, d, θ)为每个关节建立坐标系;
  • 构造相邻变换:每个关节的变换矩阵 Ti = Rotz(θi) · Transz(di) · Transx(ai) · Rotx(αi);
  • 复合变换:末端位姿 Tend = T1 · T2 · ... · T6;
  • 提取位姿:从 Tend 中提取位置矢量 P 和旋转矩阵 R,再转换为所需姿态表示。

案例拆解:以典型的六轴关节机器人(如 ER3A)为例,其 DH 参数表如下:

关节 iai (mm)αi (°)di (mm)θi (°)
10-90330θ1
227000θ2
370-900θ3
4090302θ4
50-900θ5
60085θ6

当关节角为 θ = [0°, 90°, 0°, 0°, 0°, 0°] 时,通过齐次变换矩阵复合计算,末端位置约为 [270, 0, 717] mm,姿态为绕 Y 轴旋转 90°。该结果可直接用于验证机器人仿真模型与实际物理机器人的一致性。

工程要点:齐次变换矩阵的逆矩阵 T-1 表示反向变换,其计算可简化为:R-1 = Rᵀ,P' = -Rᵀ·P。在机械臂手眼标定中,常利用 AX = XB 方程求解相机与机械臂基座的相对位姿,其中 X 即为待求的齐次变换矩阵。

3.5 四种表示方法的工程选型与转换策略

核心原理:在机械臂控制系统中,不同环节对姿态表示有不同需求:示教器人机交互用欧拉角(直观)、运动学计算用旋转矩阵(便于复合)、轨迹插值用四元数(平滑)、底层通信用轴角或四元数(紧凑)。因此,掌握四种表示方法之间的转换是控制系统开发的基本功。

转换关系速查表:

转换方向核心公式/方法注意事项
旋转矩阵 → 欧拉角使用 atan2 函数,分情况讨论β=±90° 时退化,需特殊处理
欧拉角 → 旋转矩阵R = Rz(α)·Ry(β)·Rx(γ)注意旋转顺序与内外旋区别
旋转矩阵 → 四元数由矩阵迹和元素求解注意数值稳定性,选最大分量
四元数 → 旋转矩阵标准公式,涉及 2(w²+x²) 等项确保四元数已归一化
四元数 → 欧拉角先转矩阵再转欧拉角避免直接公式导致奇异

操作流程:工程中推荐的姿态处理流程

  1. 控制器内部统一使用四元数作为姿态存储格式;
  2. 与示教器通信时,将四元数转换为欧拉角显示;
  3. 运动学计算时,将四元数转换为旋转矩阵参与矩阵运算;
  4. 轨迹规划时,使用 Slerp 对四元数插值;
  5. 最终下发伺服指令前,将四元数转换为轴角或旋转矩阵,再通过逆运动学求解关节角。
风险说明:在转换过程中,数值误差可能被放大。例如,从旋转矩阵提取欧拉角时,若矩阵元素接近奇异值,atan2 的参数可能因舍入误差导致角度跳变。建议在转换前对旋转矩阵进行正交化修正(如 SVD 分解后强制奇异值为 1),并对四元数进行归一化处理。

案例复盘:某协作机械臂在拖动示教过程中,用户快速拖拽末端画圆弧,控制器记录姿态时使用欧拉角增量累加。由于欧拉角在接近 90° 俯仰角时发生万向锁,累加误差导致末端姿态漂移,画出的圆弧出现明显台阶。工程师将姿态记录改为四元数增量累积,并在每次更新后重新归一化,问题彻底解决。复盘结论:任何涉及连续姿态变化的场景,都应避免使用欧拉角累加,而应使用四元数或旋转矩阵。

综上所述,位置矢量、旋转矩阵、欧拉角、四元数与齐次变换矩阵构成了机械臂运动学描述的完整工具链。在实际工程中,没有一种表示方法适用于所有场景,需要根据具体需求灵活选择并熟练转换。建议读者在仿真环境中(如 MATLAB Robotics Toolbox 或 ROS MoveIt)动手实践各种表示方法的转换与插值,加深对本章内容的理解。