2. 机器人运动学基础:刚体位姿描述、旋转矩阵、欧拉角、四元数、齐次变换矩阵及其在机器人建模中的应用

机器人运动学研究的核心问题是:机器人的关节变量与末端执行器位姿之间的映射关系。要建立这种映射,首先需要解决一个基础问题——如何在数学上精确、简洁地描述空间中一个刚体的位置和姿态。本章将系统讲解刚体位姿描述的四种主流方法(旋转矩阵、欧拉角、四元数、齐次变换矩阵),分析各自的数学本质、适用场景与转换关系,并结合六轴工业机器人与移动机器人的建模案例,展示这些工具在实际工程中的具体应用路径。

刚体位姿描述方法对比与转换关系 刚体位姿描述 位置 + 姿态(6自由度) 旋转矩阵 R 3×3 正交矩阵,9个元素 欧拉角 (α,β,γ) 3个角度,直观但存在万向锁 四元数 q 4个参数,无奇异性,适合插值 齐次变换矩阵 T 4×4 矩阵,含旋转+平移 方法间转换关系 R→欧拉角 欧拉角→四元数 四元数→T T→R(左上3×3子块) 应用:正运动学建模 · 逆运动学求解 · 轨迹规划 · 坐标系标定

2.1 刚体位置与姿态的数学描述

2.1.1 核心原理:从点、向量到坐标系

在机器人学中,刚体(如连杆、末端执行器)的完整位姿由位置和姿态两部分构成。位置描述刚体上某参考点(通常取质心或工具中心点TCP)在参考坐标系中的三维坐标;姿态描述刚体坐标系相对于参考坐标系的旋转关系。

  • 位置向量:\(^A P_{B} = [p_x, p_y, p_z]^T\),表示B坐标系原点在A坐标系中的坐标。
  • 姿态描述:本质上是描述B坐标系三个坐标轴在A坐标系中的方向余弦。将B系的三个单位主向量 \(X_B, Y_B, Z_B\) 在A系中投影,构成一个3×3矩阵,即旋转矩阵 \(^A_B R\)。

旋转矩阵的列向量两两正交且模长为1,满足 \(R^T R = I\),\(\det(R) = +1\),属于特殊正交群 \(SO(3)\)。这种描述是后续所有姿态表示方法的数学基础。

2.1.2 判断方法与操作流程:选择合适的位置描述方式

工程中,选择位置描述方式主要取决于任务需求:

场景推荐方式原因
理论推导、坐标变换旋转矩阵运算规则清晰,可连续复合
人机交互、示教器显示欧拉角(RPY)直观,易于理解
姿态插值、平滑过渡四元数无万向锁,插值均匀
运动学链式建模齐次变换矩阵统一处理旋转和平移

2.1.3 案例拆解:移动机器人底盘位姿描述

考虑一个室内移动机器人,其位姿通常简化为 \((x, y, \theta)\),即平面上的位置和朝向角。但在三维空间中,若机器人行驶在坡道上,则必须使用完整的6自由度描述。例如,当机器人爬坡时,其底盘坐标系相对于世界坐标系的旋转矩阵可分解为绕X轴的俯仰角 \(\alpha\) 和绕Z轴的偏航角 \(\theta\) 的复合旋转:

R = Rz(θ) * Rx(α)

这种分解方式使得控制器可以分别处理转向和坡度补偿,简化了运动学解算。

2.1.4 常见误区与总结

误区:混淆“点的位置”和“坐标系的姿态”。位置是向量,姿态是矩阵或角度组,两者必须同时指定才能完整描述刚体状态。另外,旋转矩阵的9个元素并非独立,实际只有3个自由度,直接使用9个参数进行优化会导致冗余和数值不稳定。

2.2 旋转矩阵与欧拉角

2.2.1 核心原理:旋转矩阵的构造与欧拉角的定义

旋转矩阵 \(R\) 的每一列是旋转后坐标系各轴在原坐标系中的方向余弦。绕固定轴X、Y、Z旋转 \(\theta\) 角的基本旋转矩阵为:

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欧拉角(即RPY角)表示:先绕Z轴旋转 \(\gamma\)(偏航),再绕新Y轴旋转 \(\beta\)(俯仰),最后绕新X轴旋转 \(\alpha\)(翻滚)。其复合旋转矩阵为 \(R = Rz(\gamma) \cdot Ry(\beta) \cdot Rx(\alpha)\)。

2.2.2 判断方法与操作流程:从旋转矩阵提取欧拉角

给定旋转矩阵 \(R = [r_{ij}]\),提取ZYX欧拉角的流程:

  1. 计算俯仰角 \(\beta = \text{atan2}(-r_{31}, \sqrt{r_{11}^2 + r_{21}^2})\)。
  2. 若 \(\beta \neq \pm 90^\circ\),则 \(\alpha = \text{atan2}(r_{21}, r_{11})\),\(\gamma = \text{atan2}(r_{32}, r_{33})\)。
  3. 若 \(\beta = 90^\circ\)(万向锁),则 \(\alpha = 0\),\(\gamma = \text{atan2}(r_{12}, r_{22})\),此时自由度丢失。
万向锁问题:当俯仰角为 \(\pm 90^\circ\) 时,第一次和第三次旋转轴重合,系统失去一个旋转自由度,导致姿态突变。这是欧拉角表示法的固有缺陷。

2.2.3 案例拆解:六轴机器人腕部姿态设定

在ABB IRB 120六轴机器人示教器中,操作员通过示教器设定末端姿态时,界面显示的是欧拉角(通常为ZYX或ZYZ格式)。例如设定末端绕基座Z轴旋转30°,绕新Y轴旋转-45°,绕新X轴旋转60°。控制器内部将其转换为旋转矩阵,再与位置向量组合成齐次变换矩阵,用于逆运动学求解。若操作员设定的俯仰角接近90°,示教器会发出警告,提示可能接近奇异位形,此时应调整路径点。

2.2.4 常见误区与总结

  • 误区1:认为欧拉角的旋转顺序无关紧要。实际上,不同的旋转顺序产生不同的结果,必须明确约定。
  • 误区2:直接对欧拉角进行线性插值。这会导致姿态路径不平滑,甚至出现反转。应使用四元数插值。

2.3 四元数:无奇异性的姿态表示

2.3.1 核心原理:四元数的数学定义与旋转表达

四元数由一个实部和三个虚部组成:\(q = w + xi + yj + zk\),其中 \(w^2 + x^2 + y^2 + z^2 = 1\) 时为单位四元数,用于表示旋转。单位四元数 \(q = [\cos(\theta/2), \sin(\theta/2) \cdot \vec{u}]\) 表示绕单位轴 \(\vec{u}\) 旋转 \(\theta\) 角。相比欧拉角,四元数避免了万向锁问题,且两个四元数之间的球面线性插值(Slerp)能生成平滑的旋转路径。

2.3.2 判断方法与操作流程:四元数与旋转矩阵的互转

从旋转矩阵 \(R\) 转换为四元数 \(q\) 的流程:

  1. 计算矩阵的迹 \(tr = r_{11} + r_{22} + r_{33}\)。
  2. 若 \(tr > 0\),则 \(w = \frac{1}{2}\sqrt{1+tr}\),\(x = \frac{r_{32} - r_{23}}{4w}\),\(y = \frac{r_{13} - r_{31}}{4w}\),\(z = \frac{r_{21} - r_{12}}{4w}\)。
  3. 若 \(tr \leq 0\),需根据对角线最大元素选择不同分支计算,避免除零。

反向转换时,给定单位四元数 \((w,x,y,z)\),旋转矩阵为:

R = [1-2(y²+z²), 2(xy-wz), 2(xz+wy);
     2(xy+wz), 1-2(x²+z²), 2(yz-wx);
     2(xz-wy), 2(yz+wx), 1-2(x²+y²)]

2.3.3 案例拆解:机械臂末端姿态平滑过渡

在机器人喷涂或焊接应用中,要求末端执行器在两点之间平滑改变姿态。若使用欧拉角线性插值,中间姿态可能出现剧烈抖动。某汽车焊装产线机器人从点A(姿态角 \(0^\circ, 0^\circ, 0^\circ\))运动到点B(\(90^\circ, 45^\circ, -30^\circ\)),工程师改用四元数Slerp插值后,末端姿态变化均匀,焊枪与工件表面夹角保持稳定,焊缝质量显著提升。具体实现时,先将两端欧拉角转为四元数,再按时间参数 \(t \in [0,1]\) 进行插值:

q_interp = slerp(q_A, q_B, t) = q_A * (q_A^{-1} * q_B)^t

2.3.4 常见误区与总结

经验:四元数虽然数学上优雅,但不够直观。在调试阶段,建议将四元数转换为欧拉角显示,便于人工理解。同时注意四元数的双覆盖性:\(q\) 和 \(-q\) 表示同一旋转,在插值时应确保点积为正,避免绕远路。

2.4 齐次变换矩阵与机器人运动学建模

2.4.1 核心原理:齐次变换矩阵的构造

齐次变换矩阵 \(T\) 是一个4×4矩阵,将旋转矩阵和平移向量统一在一个矩阵中:

T = [R, P; 0, 1] = [r11 r12 r13 px; r21 r22 r23 py; r31 r32 r33 pz; 0 0 0 1]

其逆矩阵为 \(T^{-1} = [R^T, -R^T P; 0, 1]\),表示从目标坐标系到参考坐标系的逆变换。齐次变换矩阵的链式乘法 \(T_{0n} = T_{01} \cdot T_{12} \cdots T_{(n-1)n}\) 是建立机器人正运动学模型的核心工具。

2.4.2 判断方法与操作流程:建立机器人D-H模型

使用Denavit-Hartenberg(D-H)参数法建立机器人运动学模型的流程:

  1. 为每个关节建立坐标系,遵循D-H约定。
  2. 确定四个参数:\(a_i\)(连杆长度)、\(\alpha_i\)(连杆扭转角)、\(d_i\)(关节偏距)、\(\theta_i\)(关节角)。
  3. 构造相邻坐标系的齐次变换矩阵 \(T_i = \text{Rz}(\theta_i) \cdot \text{Tz}(d_i) \cdot \text{Tx}(a_i) \cdot \text{Rx}(\alpha_i)\)。
  4. 连乘所有 \(T_i\) 得到末端相对于基座的变换矩阵 \(T_{06}\)。
关节ia_i (mm)α_i (°)d_i (mm)θ_i (°)
10-90290θ1
227000θ2
370-900θ3
4090302θ4
50-900θ5
60072θ6

2.4.3 案例拆解:六轴机器人正运动学求解

以某六轴关节机器人(类似KUKA KR6)为例,已知D-H参数表如上。给定关节角 \(\theta = [0^\circ, -30^\circ, 60^\circ, 0^\circ, 45^\circ, 0^\circ]\),通过连乘六个齐次变换矩阵,可求得末端工具坐标系相对于基坐标系的位姿。计算得到的位置向量约为 \(P = [270\cos30^\circ + 70\cos(-30^\circ+60^\circ), \ldots]\),姿态矩阵为三个基本旋转的复合。该结果可直接用于验证逆运动学算法的正确性,或用于离线编程仿真。

2.4.4 常见误区与总结

风险:D-H参数中 \(\alpha_i\) 和 \(a_i\) 的正负号极易出错,建议在建立模型后,用已知位形(如机械臂完全伸直)验证 \(T_{06}\) 的正确性。另外,齐次变换矩阵的数值在多次连乘后可能因浮点误差失去正交性,需定期正交化处理。