数学基础:向量、矩阵、旋转矩阵、齐次变换矩阵及其在机械臂中的应用
六轴机械臂的运动学本质上是三维空间中刚体位置与姿态的数学描述与变换问题。无论是正解中由关节角推算末端位姿,还是逆解中由目标位姿反解关节角,其底层运算都依赖于向量、矩阵以及齐次变换矩阵。本章将系统梳理这些数学工具的核心定义、几何意义及其在机械臂建模中的具体映射关系,为后续的DH参数建模与求解打下坚实的理论基础。
2.1 向量:三维空间的位置与方向描述
在机械臂运动学中,向量是最基础的数学对象。一个三维向量 p = [x, y, z]T 可以表示机械臂末端在基坐标系中的位置,也可以表示某个关节轴的方向。向量的核心运算包括点积(内积)与叉积(外积)。点积 a·b = |a||b|cosθ 用于计算两向量夹角或投影长度,在判断关节运动范围与奇异位形时非常有用;叉积 a×b 得到垂直于两向量所在平面的新向量,其模长等于两向量构成的平行四边形面积,常用于计算力矩方向或构造坐标系。
在机械臂应用中,向量不仅用于位置描述,还用于定义关节轴方向。例如,在建立DH坐标系时,zi轴的方向向量就是关节i的旋转轴方向。向量的单位化操作(除以模长)在构造旋转矩阵的列向量时必不可少,因为旋转矩阵的每一列必须是单位向量。
dot()、cross()、normalize()),避免在矩阵运算中重复编写底层代码,同时便于单元测试验证。
2.2 矩阵与旋转矩阵:姿态的数学表达
旋转矩阵是描述刚体姿态的核心工具。一个3×3旋转矩阵 R 满足正交性(RTR = I)和行列式为+1的约束。其列向量分别表示旋转后坐标系各轴在原坐标系中的方向余弦。绕X轴、Y轴、Z轴旋转角度θ的基本旋转矩阵分别为:
Rx(θ) = [1 0 0 ]
[0 cosθ -sinθ]
[0 sinθ cosθ]
Ry(θ) = [cosθ 0 sinθ]
[0 1 0 ]
[-sinθ 0 cosθ]
Rz(θ) = [cosθ -sinθ 0]
[sinθ cosθ 0]
[0 0 1]
任意姿态可以通过三个基本旋转的组合来表示,例如ZYX欧拉角:R = Rz(γ)·Ry(β)·Rx(α)。需要注意的是,矩阵乘法不满足交换律,因此旋转顺序至关重要。在机械臂中,旋转矩阵的每一列都有明确的物理意义:第一列是工具坐标系X轴在基坐标系中的方向,第二列是Y轴方向,第三列是Z轴方向。
| 旋转矩阵性质 | 数学表达 | 机械臂中的意义 |
|---|---|---|
| 正交性 | RTR = I | 保证坐标变换不改变向量长度 |
| 行列式 | det(R) = +1 | 右手坐标系,无镜像变换 |
| 列向量 | r₁, r₂, r₃ 单位正交 | 工具坐标系各轴方向 |
| 逆矩阵 | R⁻¹ = RT | 逆变换,用于逆解计算 |
旋转矩阵的另一个重要应用是坐标变换。若已知某点在工具坐标系中的坐标 ptool,则其在基坐标系中的坐标为 pbase = R·ptool。这种变换在视觉引导抓取中非常常见——相机识别到物体在相机坐标系中的位置后,需要乘以相机到机械臂基座的旋转矩阵,才能得到机械臂可执行的目标坐标。
2.3 齐次变换矩阵:位置与姿态的统一
旋转矩阵只能描述姿态,无法直接表达平移。为了统一描述刚体的位置和姿态,引入了4×4齐次变换矩阵:
T = [R₃ₓ₃ P₃ₓ₁]
[0₁ₓ₃ 1 ]
其中,R 是3×3旋转矩阵,p 是3×1平移向量。齐次变换矩阵的核心优势在于:它将旋转和平移统一为矩阵乘法形式,使得复合变换可以简单地通过矩阵连乘实现。例如,从基坐标系到末端执行器的总变换为:
T₀₆ = T₀₁ · T₁₂ · T₂₃ · T₃₄ · T₄₅ · T₅₆
这里的每个 Ti-1,i 表示相邻连杆之间的位姿变换,由DH参数决定。齐次变换矩阵的逆矩阵计算也很有规律:
T⁻¹ = [Rᵀ -Rᵀ·p]
[0 1 ]
这个性质在逆解算法中频繁使用——当需要将目标位姿从基坐标系变换到某个关节坐标系时,只需左乘相应齐次矩阵的逆即可。
2.4 实战案例:六轴机械臂正解中的矩阵链式乘法
以典型的六轴关节型机械臂(如类似UR5构型)为例,其DH参数表如下(简化示例):
| 关节i | ai-1 (mm) | αi-1 (°) | di (mm) | θi (°) |
|---|---|---|---|---|
| 1 | 0 | 0 | 150 | θ₁ |
| 2 | 425 | -90 | 0 | θ₂ |
| 3 | 392 | 0 | 0 | θ₃ |
| 4 | 0 | -90 | 133 | θ₄ |
| 5 | 0 | 90 | 99.5 | θ₅ |
| 6 | 0 | -90 | 90 | θ₆ |
给定一组关节角(例如 θ₁=30°, θ₂=-45°, θ₃=60°, θ₄=90°, θ₅=-30°, θ₆=45°),正解计算过程如下:
- 构造各关节齐次矩阵:根据DH参数公式计算 T₀₁, T₁₂, ..., T₅₆。每个矩阵包含旋转部分(由θ和α决定)和平移部分(由a和d决定)。
- 矩阵连乘:按顺序相乘得到 T₀₆ = T₀₁·T₁₂·T₂₃·T₃₄·T₄₅·T₅₆。注意矩阵乘法顺序不可颠倒,左乘表示坐标系逐级变换。
- 提取结果:从 T₀₆ 中提取旋转矩阵 R₀₆ 和平移向量 p₀₆。p₀₆ 即为末端在基坐标系中的三维坐标,R₀₆ 可通过反解得到欧拉角(如RPY角)。
实际编程中,建议使用Python的NumPy库进行矩阵运算,并验证结果的正交性(RᵀR ≈ I)和行列式(det(R) ≈ 1)。若计算结果出现微小偏差,通常是由于浮点精度累积所致,可通过正交化修正。
T_0_6 = T_0_1 @ T_1_2 @ T_2_3 @ T_3_4 @ T_4_5 @ T_5_6 表示从基座开始逐级变换到末端。如果顺序写反,得到的结果将是完全错误的位姿。建议在代码中明确注释每个矩阵的坐标系来源与目标。
2.5 常见误区与总结复盘
在机械臂数学基础的学习中,以下几个误区最为常见:
- 混淆旋转矩阵与欧拉角:旋转矩阵是唯一的姿态表示,而欧拉角存在多种约定(ZYX、ZYZ等),且存在万向锁问题。在逆解中,从旋转矩阵提取欧拉角时需明确约定顺序。
- 忽略齐次矩阵的缩放因子:齐次变换矩阵的最后一行为 [0 0 0 1],这是固定结构。若在编程中误修改该行,会导致变换结果错误。
- 矩阵求逆与转置混淆:旋转矩阵的逆等于转置,但齐次变换矩阵的逆不是简单转置,必须按公式 T⁻¹ = [[Rᵀ, -Rᵀp],[0,1]] 计算。
- 单位不一致:DH参数中长度单位(mm或m)和角度单位(度或弧度)必须统一。建议在程序入口统一转换为弧度制,避免三角函数计算错误。
总结而言,向量、旋转矩阵和齐次变换矩阵构成了机械臂运动学分析的完整数学框架。向量负责描述位置与方向,旋转矩阵负责姿态变换,齐次变换矩阵则将两者统一为4×4矩阵形式,使得复杂的多关节链式变换可以通过简单的矩阵乘法实现。掌握这些数学工具,不仅是理解正逆解算法的基础,更是后续进行轨迹规划、动力学分析与控制算法设计的必备前提。建议读者在理解理论的同时,动手用Python或MATLAB实现一个简单的正解函数,通过数值验证加深对矩阵运算物理意义的理解。