2. 机器人运动学基础:空间描述、位姿表示、旋转矩阵、齐次变换矩阵
机器人运动学研究的核心问题是:机器人的关节变量与末端执行器在空间中的位置和姿态之间,存在怎样的映射关系?要回答这个问题,首先必须建立一套严谨的数学语言来描述三维空间中的刚体。本章将系统讲解空间描述的基本概念、位姿的数学表示方法、旋转矩阵的构造与性质,以及齐次变换矩阵的统一表达形式。这些内容不仅是后续逆解推导的基石,也是机器人标定、轨迹规划与动力学分析中不可或缺的工具。
2.1 空间描述:位置矢量与参考坐标系
在机器人学中,空间描述是指用数学方法明确表达物体在三维空间中的几何信息。任何描述都必须依附于一个参考坐标系,脱离坐标系的数值没有物理意义。例如,说"末端执行器位于 (0.3, 0.2, 0.5)" 是毫无意义的,必须指明这是相对于机器人基座坐标系、相机坐标系还是工件坐标系。
位置矢量是最基本的空间描述元素。设参考坐标系为 {A},空间中任意一点 P 的位置可以用一个 3×1 的列向量表示:
A_P = [px, py, pz]ᵀ
其中上标 A 表示该向量是在坐标系 {A} 中描述的。在机器人系统中,常见的参考坐标系包括:
- 基座坐标系 {B}:固定在机器人底座上,是运动学计算的全局参考。
- 工具坐标系 {T}:固定在末端执行器上,用于描述工具中心点 (TCP) 的位置。
- 用户坐标系 {U}:由操作者自定义,通常与工件或工作台对齐。
- 相机坐标系 {C}:固定在视觉传感器上,用于视觉引导。
理解参考坐标系的关键在于:同一个物理点,在不同坐标系下的坐标值不同。坐标系之间的转换关系,正是本章后续要解决的数学问题。
2.2 位姿表示:位置 + 姿态的完整描述
机器人的末端执行器在空间中不仅有一个位置点,还有一个朝向。例如,一个焊接机器人不仅要到达焊缝上的某个点,还必须让焊枪以正确的角度对准焊缝。位姿 (Pose) 就是位置 (Position) 和姿态 (Orientation) 的合称。
设坐标系 {B} 固定在末端执行器上,坐标系 {A} 为参考坐标系。那么 {B} 相对于 {A} 的位姿可以表示为:
- 位置:{B} 的原点在 {A} 中的坐标,记为
A_P_B。 - 姿态:{B} 的三个坐标轴在 {A} 中的方向,用旋转矩阵
A_R_B表示。
旋转矩阵 A_R_B 是一个 3×3 矩阵,其列向量分别是 {B} 的 X、Y、Z 轴单位向量在 {A} 中的方向余弦:
A_R_B = [ A_X_B A_Y_B A_Z_B ]
其中 A_X_B 表示 {B} 的 X 轴单位向量在 {A} 中的投影。旋转矩阵的每一列都是单位向量,且三列两两正交,因此旋转矩阵是正交矩阵,满足:
RᵀR = I, det(R) = +1
这一性质在后续求逆变换时非常关键。
2.3 旋转矩阵:基本旋转与组合旋转
旋转矩阵的构造遵循一个基本规律:绕哪个轴旋转,该轴对应的行和列保持不变,其余四个元素构成 2×2 旋转子矩阵。三个基本旋转矩阵如下:
| 旋转类型 | 矩阵形式 | 物理含义 |
|---|---|---|
| 绕 X 轴旋转 θ | Rx(θ) = [[1, 0, 0], [0, cosθ, -sinθ], [0, sinθ, cosθ]] | Y 和 Z 轴在 YZ 平面内旋转 |
| 绕 Y 轴旋转 θ | Ry(θ) = [[cosθ, 0, sinθ], [0, 1, 0], [-sinθ, 0, cosθ]] | X 和 Z 轴在 XZ 平面内旋转 |
| 绕 Z 轴旋转 θ | Rz(θ) = [[cosθ, -sinθ, 0], [sinθ, cosθ, 0], [0, 0, 1]] | X 和 Y 轴在 XY 平面内旋转 |
注意绕 Y 轴旋转时,sinθ 的符号与绕 X、Z 轴不同,这是因为坐标系的右手定则导致的。实际工程中,绕 Y 轴旋转的符号是最容易出错的地方,建议在代码中注释清楚。
组合旋转遵循"左乘"和"右乘"的规则:
- 固定坐标系旋转(左乘):如果每次旋转都是绕参考坐标系 {A} 的固定轴进行,则旋转矩阵依次左乘。例如先绕 X 轴转 α,再绕 Y 轴转 β,则 R = Ry(β) · Rx(α)。
- 动坐标系旋转(右乘):如果每次旋转都是绕当前坐标系自身的轴进行,则旋转矩阵依次右乘。例如先绕自身 X 轴转 α,再绕新的 Y 轴转 β,则 R = Rx(α) · Ry(β)。
这一规则在机器人正运动学推导中至关重要。DH 参数法中的关节旋转,通常采用动坐标系右乘的方式。
2.4 齐次变换矩阵:统一位置与姿态
旋转矩阵只能描述姿态,无法直接表达平移。为了将旋转和平移统一在一个矩阵运算中,引入齐次变换矩阵,它是一个 4×4 矩阵:
A_T_B = [ A_R_B A_P_B ]
[ 0 0 0 1 ]
齐次变换矩阵的作用是:将坐标系 {B} 中描述的点 B_P 转换到坐标系 {A} 中:
A_P = A_R_B · B_P + A_P_B
写成齐次形式:
[A_P; 1] = A_T_B · [B_P; 1]
齐次变换矩阵的复合遵循矩阵乘法规则。如果已知 {B} 相对于 {A} 的变换 A_T_B,以及 {C} 相对于 {B} 的变换 B_T_C,则 {C} 相对于 {A} 的变换为:
A_T_C = A_T_B · B_T_C
这一链式法则构成了机器人正运动学的基础。对于六轴机器人,末端相对于基座的变换为:
base_T_tool = base_T_1 · 1_T_2 · 2_T_3 · 3_T_4 · 4_T_5 · 5_T_6
齐次变换矩阵的逆变换也非常简洁:
(A_T_B)⁻¹ = [ A_R_Bᵀ -A_R_Bᵀ · A_P_B ]
[ 0 0 0 1 ]
这个公式避免了直接对 4×4 矩阵求逆的复杂计算,在逆解和误差补偿中频繁使用。
cam_T_obj,相机相对于机器人基座的标定结果为 base_T_cam,则工件相对于机器人基座的位姿为 base_T_obj = base_T_cam · cam_T_obj。这个复合变换直接决定了机器人应该如何规划抓取路径。
2.5 案例拆解:六轴机器人正运动学链式计算
以典型的六轴关节机器人为例,假设各关节的 DH 参数已经确定,相邻坐标系之间的齐次变换矩阵分别为 T01, T12, T23, T34, T45, T56。正运动学的目标就是计算末端工具坐标系 {6} 相对于基座坐标系 {0} 的位姿。
已知条件:
- 各关节角度:θ1 = 30°, θ2 = -45°, θ3 = 60°, θ4 = 90°, θ5 = -30°, θ6 = 45°
- 各连杆长度:a1 = 150mm, a2 = 600mm, a3 = 120mm, d4 = 650mm
计算步骤:
- 根据 DH 参数表,写出每个相邻坐标系的齐次变换矩阵
T(i-1)_i。 - 依次进行矩阵乘法:
T06 = T01 · T12 · T23 · T34 · T45 · T56。 - 从结果矩阵中提取位置向量
P = [px, py, pz]ᵀ和旋转矩阵R。
计算结果(示意):
| 项目 | 数值 |
|---|---|
| 位置 px | ≈ 312.4 mm |
| 位置 py | ≈ 180.2 mm |
| 位置 pz | ≈ 845.7 mm |
| 姿态 R | [[0.866, -0.25, 0.433], [0.5, 0.433, -0.75], [0, 0.866, 0.5]] |
验证方法:将计算得到的旋转矩阵代入 RᵀR,结果应接近单位矩阵;det(R) 应接近 +1。如果偏差较大,说明中间某个变换矩阵的构造有误。
2.6 常见误区与总结复盘
在学习空间描述和齐次变换时,初学者常犯以下错误:
- 混淆固定轴与动轴旋转:固定轴旋转左乘,动轴旋转右乘。在 DH 参数法中,关节旋转是绕动轴进行的,因此采用右乘。
- 忽略齐次坐标的最后一维:位置向量在齐次变换中必须写成 [x, y, z, 1]ᵀ,方向向量则写成 [x, y, z, 0]ᵀ。方向向量不受平移影响。
- 逆变换公式记忆错误:逆变换的旋转部分取转置,平移部分为 -RᵀP,而不是 -RP。
- 单位不一致:旋转矩阵中的三角函数使用弧度制,而工程图纸上常用角度制。建议在代码入口统一转换。
本章核心要点回顾:
| 概念 | 数学表达 | 关键性质 | 典型应用 |
|---|---|---|---|
| 位置矢量 | 3×1 列向量 | 依赖参考坐标系 | TCP 坐标 |
| 旋转矩阵 | 3×3 正交矩阵 | RᵀR = I, det = +1 | 姿态插值 |
| 齐次变换矩阵 | 4×4 矩阵 | 复合用乘法,逆变换有解析式 | 正运动学链式计算 |
掌握本章内容后,你已经具备了描述机器人任意连杆位姿的数学工具。下一阶段的学习将围绕 DH 参数建模展开,利用本章的齐次变换矩阵,将每个关节的旋转和平移统一为 4×4 矩阵,从而建立完整的机器人运动学模型。