3. 运动学基础:位置、姿态、旋转矩阵、欧拉角、四元数、齐次变换矩阵及其在机械臂中的应用
机械臂运动控制的本质,是回答“末端执行器在哪里、朝向哪里、以及如何从当前位姿到达目标位姿”这三个问题。无论是六轴工业机器人还是协作机械臂,其底层控制逻辑都建立在刚体在三维空间中的位置与姿态描述之上。本章将系统梳理位置矢量、旋转矩阵、欧拉角、四元数与齐次变换矩阵的数学定义、相互转换关系及工程应用场景,帮助读者建立从数学表达到控制代码实现的完整桥梁。
3.1 位置矢量与旋转矩阵:刚体姿态的数学基石
核心原理:在三维空间中,机械臂连杆可视为刚体。刚体上任意一点的位置可用相对于参考坐标系的位置矢量 P = [x, y, z]ᵀ 表示。然而,仅知道位置不足以描述机械臂末端执行器的完整状态——例如,一个吸盘工具在相同位置可以朝上、朝下或倾斜。因此需要引入姿态描述。旋转矩阵 R 是一个 3×3 正交矩阵,其列向量表示动坐标系各轴在参考坐标系中的方向余弦。旋转矩阵满足 RᵀR = I 且 det(R) = +1,属于特殊正交群 SO(3)。
判断方法与操作流程:在实际工程中,判断一个矩阵是否为合法旋转矩阵,可执行以下三步验证:
- 检查矩阵维度是否为 3×3;
- 验证正交性:计算 RᵀR,结果应接近单位矩阵(数值误差允许在 1e-6 以内);
- 验证行列式: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)调整 |
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,α 和 γ 无法唯一确定,此时发生万向锁现象——两个旋转轴重合,系统丢失一个自由度。这是欧拉角在机械臂控制中最致命的缺陷。
案例拆解:某 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) 为旋转轴单位矢量,θ 为旋转角度。四元数不存在万向锁问题,且插值平滑,是机械臂轨迹规划中姿态插值的首选。
操作流程:四元数在机械臂控制中的典型使用流程
- 初始化:从当前关节角计算末端姿态旋转矩阵 Rcur,转换为四元数 qcur;
- 目标设定:从目标位姿获取 Rtgt,转换为 qtgt;
- 插值计算:使用球面线性插值(Slerp)计算中间四元数 q(t) = (qcur·sin((1-t)Ω) + qtgt·sin(tΩ)) / sinΩ,其中 Ω 为两四元数夹角,t ∈ [0,1];
- 转换回旋转矩阵:将 q(t) 转换为 R(t),用于逆运动学求解关节角;
- 发送控制指令:将关节角指令下发至伺服驱动器。
常见误区:四元数存在 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 参数表如下:
| 关节 i | ai (mm) | αi (°) | di (mm) | θi (°) |
|---|---|---|---|---|
| 1 | 0 | -90 | 330 | θ1 |
| 2 | 270 | 0 | 0 | θ2 |
| 3 | 70 | -90 | 0 | θ3 |
| 4 | 0 | 90 | 302 | θ4 |
| 5 | 0 | -90 | 0 | θ5 |
| 6 | 0 | 0 | 85 | θ6 |
当关节角为 θ = [0°, 90°, 0°, 0°, 0°, 0°] 时,通过齐次变换矩阵复合计算,末端位置约为 [270, 0, 717] mm,姿态为绕 Y 轴旋转 90°。该结果可直接用于验证机器人仿真模型与实际物理机器人的一致性。
3.5 四种表示方法的工程选型与转换策略
核心原理:在机械臂控制系统中,不同环节对姿态表示有不同需求:示教器人机交互用欧拉角(直观)、运动学计算用旋转矩阵(便于复合)、轨迹插值用四元数(平滑)、底层通信用轴角或四元数(紧凑)。因此,掌握四种表示方法之间的转换是控制系统开发的基本功。
转换关系速查表:
| 转换方向 | 核心公式/方法 | 注意事项 |
|---|---|---|
| 旋转矩阵 → 欧拉角 | 使用 atan2 函数,分情况讨论 | β=±90° 时退化,需特殊处理 |
| 欧拉角 → 旋转矩阵 | R = Rz(α)·Ry(β)·Rx(γ) | 注意旋转顺序与内外旋区别 |
| 旋转矩阵 → 四元数 | 由矩阵迹和元素求解 | 注意数值稳定性,选最大分量 |
| 四元数 → 旋转矩阵 | 标准公式,涉及 2(w²+x²) 等项 | 确保四元数已归一化 |
| 四元数 → 欧拉角 | 先转矩阵再转欧拉角 | 避免直接公式导致奇异 |
操作流程:工程中推荐的姿态处理流程
- 控制器内部统一使用四元数作为姿态存储格式;
- 与示教器通信时,将四元数转换为欧拉角显示;
- 运动学计算时,将四元数转换为旋转矩阵参与矩阵运算;
- 轨迹规划时,使用 Slerp 对四元数插值;
- 最终下发伺服指令前,将四元数转换为轴角或旋转矩阵,再通过逆运动学求解关节角。
案例复盘:某协作机械臂在拖动示教过程中,用户快速拖拽末端画圆弧,控制器记录姿态时使用欧拉角增量累加。由于欧拉角在接近 90° 俯仰角时发生万向锁,累加误差导致末端姿态漂移,画出的圆弧出现明显台阶。工程师将姿态记录改为四元数增量累积,并在每次更新后重新归一化,问题彻底解决。复盘结论:任何涉及连续姿态变化的场景,都应避免使用欧拉角累加,而应使用四元数或旋转矩阵。
综上所述,位置矢量、旋转矩阵、欧拉角、四元数与齐次变换矩阵构成了机械臂运动学描述的完整工具链。在实际工程中,没有一种表示方法适用于所有场景,需要根据具体需求灵活选择并熟练转换。建议读者在仿真环境中(如 MATLAB Robotics Toolbox 或 ROS MoveIt)动手实践各种表示方法的转换与插值,加深对本章内容的理解。