机器人运动学基础:刚体变换、旋转矩阵、欧拉角、四元数、齐次变换矩阵及其在机器人中的应用
机器人运动学研究的核心问题是:如何描述机器人各连杆在空间中的位置与姿态,以及如何建立关节空间与末端执行器位姿之间的映射关系。无论是六轴工业机器人、SCARA机器人还是移动机械臂,其运动学求解都建立在刚体变换的数学框架之上。本章将系统梳理刚体变换的数学工具——旋转矩阵、欧拉角、四元数与齐次变换矩阵,并结合实际工程场景说明它们的适用边界与转换方法。
2.1 刚体变换的核心原理
刚体(Rigid Body)是指在外力作用下形状和大小保持不变的物体。在机器人学中,我们将每个连杆视为刚体,其空间位姿由位置(Position)和姿态(Orientation)两部分组成。位置用三维向量 p = [x, y, z]ᵀ 表示,姿态则描述连杆坐标系相对于参考坐标系的旋转关系。
刚体变换的本质是坐标系的映射:将一个点在一个坐标系中的坐标,转换到另一个坐标系中的坐标。这种变换必须保持两点间的距离不变(等距变换),同时保持向量的夹角不变(保角变换)。数学上,刚体变换可以分解为一次旋转和一次平移:
p_A = R_AB · p_B + t_AB
其中 p_A 和 p_B 分别是点在坐标系 {A} 和 {B} 中的坐标,R_AB 是旋转矩阵,t_AB 是平移向量。这个公式是机器人运动学中最基本的映射关系,后续所有正解、逆解计算都建立在此基础之上。
2.2 旋转矩阵:姿态描述的基础工具
旋转矩阵 R 是一个 3×3 的正交矩阵,满足 RᵀR = I 且 det(R) = +1。其列向量表示旋转后坐标系各轴在原坐标系中的方向余弦。例如,绕 Z 轴旋转 θ 角的旋转矩阵为:
Rz(θ) = [cosθ -sinθ 0]
[sinθ cosθ 0]
[ 0 0 1]
旋转矩阵的优点是唯一性:任意姿态对应唯一的旋转矩阵,不存在多义性。但其缺点是参数冗余——9个元素只有3个自由度,且数值计算中容易因累积误差导致矩阵不再正交,需要定期正交化处理。
2.2.1 旋转矩阵的构建与判断方法
在实际工程中,我们通常通过以下步骤构建旋转矩阵:
- 确定旋转顺序(如固定轴 X-Y-Z 或欧拉角 Z-Y-X);
- 分别计算各基本旋转矩阵 Rx、Ry、Rz;
- 按旋转顺序进行矩阵乘法(注意左乘与右乘的区别)。
判断一个矩阵是否为合法旋转矩阵,需要验证:① 矩阵是否正交(RᵀR = I);② 行列式是否为 +1;③ 各列向量是否为单位向量且两两正交。在机器人仿真中,若发现旋转矩阵退化(行列式接近0),说明发生了数值异常,需要立即排查。
2.3 欧拉角:直观但存在奇异问题
欧拉角用三个角度(α, β, γ)描述姿态,常见的有 ZYX 欧拉角(即横滚-俯仰-偏航角,Roll-Pitch-Yaw)和 ZYZ 欧拉角。其优点是直观易懂,适合人机交互和姿态显示。例如,在示教器中显示末端姿态时,通常显示为 RPY 角度。
然而,欧拉角存在两个严重缺陷:
- 万向锁(Gimbal Lock):当第二个旋转角为 ±90° 时,第一个和第三个旋转轴重合,丢失一个自由度,导致姿态无法唯一表示。
- 多值性:同一姿态可能对应多组欧拉角(如角度加 360° 的整数倍),在插值计算中容易产生跳变。
| 描述方式 | 参数数量 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 旋转矩阵 | 9 | 唯一、无奇异 | 冗余、需正交化 | 底层计算、坐标变换 |
| 欧拉角 | 3 | 直观、易理解 | 万向锁、多值性 | 示教器显示、人机交互 |
| 四元数 | 4 | 无奇异、适合插值 | 不直观、需归一化 | 轨迹规划、姿态平滑 |
| 齐次变换矩阵 | 16 | 统一表达旋转+平移 | 参数多、计算量大 | 运动学链式计算 |
2.4 四元数:无奇异的姿态表示
四元数由爱尔兰数学家哈密顿于1843年提出,形式为 q = w + xi + yj + zk,其中 w 为实部,(x, y, z) 为虚部。单位四元数(模长为1)可以表示三维空间中的旋转:
q = [cos(θ/2), nx·sin(θ/2), ny·sin(θ/2), nz·sin(θ/2)]
其中 [nx, ny, nz] 是旋转轴单位向量,θ 是旋转角度。四元数的主要优势在于:
- 无奇异问题:不存在万向锁现象;
- 计算效率高:四元数乘法比矩阵乘法少约 25% 的运算量;
- 插值平滑:球面线性插值(SLERP)可以生成平滑的旋转过渡。
2.5 齐次变换矩阵:运动学计算的统一框架
齐次变换矩阵 T 是一个 4×4 矩阵,将旋转矩阵和平移向量统一表达:
T = [R t]
[0 1]
其中 R 为 3×3 旋转矩阵,t 为 3×1 平移向量,最后一行固定为 [0 0 0 1]。齐次变换矩阵使得连续变换可以通过矩阵乘法直接串联:T_AC = T_AB · T_BC。这一性质是机器人正运动学链式计算的数学基础。
2.5.1 齐次变换矩阵的逆变换
在机器人控制中,经常需要求逆变换。齐次变换矩阵的逆具有简洁形式:
T⁻¹ = [Rᵀ -Rᵀ·t]
[0 1 ]
这一性质在视觉伺服、手眼标定中非常实用。例如,已知相机相对于基座的变换 T_base_cam,要求基座相对于相机的变换,直接取逆即可,无需重新计算。
2.6 实战案例:六轴机器人正运动学求解
以典型的六轴串联机器人(如 ER3A-C60)为例,其 D-H 参数表如下:
| 关节 i | a(i-1) (mm) | α(i-1) (°) | d(i) (mm) | θ(i) (°) |
|---|---|---|---|---|
| 1 | 0 | 0 | 330 | θ1 |
| 2 | 150 | -90 | 0 | θ2 |
| 3 | 600 | 0 | 0 | θ3 |
| 4 | 120 | -90 | 630 | θ4 |
| 5 | 0 | 90 | 0 | θ5 |
| 6 | 0 | -90 | 85 | θ6 |
给定关节角 θ = [0°, 30°, -60°, 45°, 90°, 0°],求解末端位姿。计算过程如下:
- 根据 D-H 参数构建每个关节的齐次变换矩阵 T_i;
- 依次计算 T_01、T_12、T_23、T_34、T_45、T_56;
- 将六个矩阵连乘得到 T_06 = T_01·T_12·T_23·T_34·T_45·T_56。
最终得到的 T_06 中,左上 3×3 子矩阵为末端姿态(旋转矩阵),右上 3×1 向量为末端位置。通过该矩阵,我们可以提取出末端执行器的 XYZ 坐标和 RPY 角度,用于示教器显示或后续逆解计算。
2.7 常见误区与总结复盘
在本章的学习中,以下误区需要特别警惕:
- 旋转矩阵与欧拉角的混用:在同一个计算链路中,应统一使用一种表示方式,避免频繁转换引入误差。
- 忽略四元数的归一化:四元数在连续乘法后模长会漂移,必须定期归一化,否则会导致姿态失真。
- 齐次变换矩阵的连乘顺序:矩阵乘法不满足交换律,T_AB·T_BC ≠ T_BC·T_AB,必须严格按照坐标系链式关系进行。
- 万向锁的规避:在规划末端姿态时,若发现欧拉角的第二个角度接近 ±90°,应切换为四元数表示。
总结而言,刚体变换的四种数学工具各有优劣:旋转矩阵适合底层计算,欧拉角适合人机交互,四元数适合插值与平滑,齐次变换矩阵则是运动学链式计算的统一框架。在实际机器人系统中,通常混合使用这些工具——控制器内部使用齐次变换矩阵和四元数,示教器界面显示欧拉角,而底层数学库则基于旋转矩阵运算。理解它们之间的转换关系,是掌握机器人运动学求解的关键一步。