3. 刚体姿态描述

在机械臂运动学中,位置描述解决的是“末端在哪儿”的问题,而姿态描述解决的是“末端朝哪个方向”的问题。对于六自由度串联机械臂,末端执行器的姿态通常由三个独立参数确定,但如何用数学形式表达这三个自由度,直接影响到正运动学计算的效率、轨迹插值的平滑性以及奇异点的处理方式。本章围绕欧拉角、旋转向量和四元数三种主流姿态描述方法,从数学定义、工程适用性到相互转换关系展开系统讲解,为后续雅可比矩阵推导和轨迹规划打下基础。

姿态描述方法关系与转换路径 旋转矩阵 R 3×3 正交矩阵 欧拉角 (α, β, γ) ZYX / ZYZ 等 12 种约定 直观但存在万向锁 旋转向量 (θ, k) 轴角表示,3 参数 适合插值与微分 四元数 q = (w, x, y, z) 单位四元数,无奇异性 计算高效,需归一化 工程应用 正运动学 / 轨迹插值 姿态平滑 / 奇异规避 R = Rz·Ry·Rx 罗德里格斯公式 直接代数映射 经旋转矩阵中转 指数映射 / 对数映射 核心原则:旋转矩阵是通用,四元数用于计算与插值,欧拉角用于人机交互与可视化

3.1 欧拉角:直观但需警惕万向锁

3.1.1 核心原理

欧拉角的基本思想是将任意姿态分解为绕三个坐标轴的依次旋转。以工业机器人最常用的 ZYX 欧拉角为例,其旋转顺序为:先绕固定坐标系 Z 轴旋转偏航角 yaw(ψ),再绕新 Y 轴旋转俯仰角 pitch(θ),最后绕新 X 轴旋转横滚角 roll(φ)。对应的旋转矩阵为:

R = Rz(ψ) · Ry(θ) · Rx(φ)

其中每个基本旋转矩阵均为标准形式。ZYX 约定在航空航天和移动机器人领域应用广泛,而 ZYZ 约定则常见于六轴工业机器人的腕部姿态描述。需要特别注意的是,欧拉角的 12 种约定(不同旋转轴顺序)会产生不同的旋转矩阵表达式,在跨平台数据交换时必须明确标注约定类型。

3.1.2 判断方法与操作流程

选择欧拉角约定时,应遵循以下判断流程:

  1. 明确应用场景:若用于地面机器人导航,优先 ZYX(偏航-俯仰-横滚);若用于机械臂腕部,ZYZ 或 ZYX 均可,需与 DH 参数表配合。
  2. 检查奇异位置:ZYX 约定在 pitch = ±90° 时出现万向锁,此时 roll 和 yaw 无法独立区分。
  3. 确认数据接口:与外部系统(如视觉引导、上位机)通信时,必须统一约定顺序和正方向。

3.1.3 案例拆解:六轴机器人腕部姿态读取

某品牌六轴机器人控制器返回的末端姿态为 ZYX 欧拉角(单位:度):ψ = 30°,θ = 45°,φ = 60°。工程师需要将其转换为旋转矩阵用于正运动学验证。计算过程如下:

Rz(30°) = [0.866  -0.5  0;  0.5  0.866  0;  0  0  1]
Ry(45°) = [0.707  0  0.707;  0  1  0;  -0.707  0  0.707]
Rx(60°) = [1  0  0;  0  0.5  -0.866;  0  0.866  0.5]
R = Rz · Ry · Rx = [0.435  0.659  0.612;  0.789  -0.047  -0.612;  -0.435  0.750  -0.500]

验证:R 的行列式应为 +1,且 R·Rᵀ = I。该矩阵可直接用于后续的坐标变换计算。

风险提示:当 pitch 接近 ±90° 时,欧拉角微分方程出现奇异,导致数值计算不稳定。在轨迹规划中应避免让机械臂经过奇异姿态,或改用四元数进行插值。

3.2 旋转向量:紧凑的轴角表示

3.2.1 核心原理

旋转向量(又称轴角表示)用一个三维向量 r = θ·k 描述姿态,其中 k 为单位旋转轴,θ 为绕该轴的旋转角度。其优势在于参数紧凑(仅 3 个分量),且物理意义明确——旋转轴和转角直接对应机械臂关节的等效旋转。旋转向量到旋转矩阵的转换由罗德里格斯公式给出:

R = I + sin(θ)·[k]× + (1 - cos(θ))·[k]ײ

其中 [k]× 为 k 的反对称矩阵。该公式在机械臂标定和视觉伺服中频繁使用。

3.2.2 操作流程与注意事项

  • 归一化处理:使用前必须确保 k 为单位向量,否则需先除以模长。
  • 角度范围:θ 通常限制在 [0, π] 区间,超出部分可通过角度加减 2π 等效变换。
  • 与角速度的关系:旋转向量的时间导数与角速度之间存在映射矩阵,可用于微分运动学推导。

3.2.3 实战场景:机械臂手眼标定中的旋转向量

在眼在手上的手眼标定中,标定板相对于相机的位姿变化常以旋转向量形式输出。假设某次标定得到旋转向量 r = [0.1, 0.2, 0.3]ᵀ,则 θ = ||r|| = 0.374,k = [0.267, 0.535, 0.802]ᵀ。代入罗德里格斯公式即可得到旋转矩阵,用于构建 AX = XB 方程。该表示法避免了欧拉角的奇异问题,且计算量小于四元数转换。

3.3 四元数:计算效率与无奇异性的最优解

3.3.1 核心原理

单位四元数 q = (w, x, y, z) 满足 w² + x² + y² + z² = 1,其中 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²)]]

四元数的核心优势在于:无奇异点、插值平滑(球面线性插值 slerp)、组合旋转仅需一次乘法,且计算量比矩阵乘法少约 25%。

3.3.2 判断方法与操作流程

特性欧拉角旋转向量四元数
参数数量334(1 约束)
奇异性有(万向锁)无无
插值平滑性差中等优(slerp)
计算效率中中高
直观性高中低
典型应用人机交互、可视化标定、微分运动学轨迹规划、姿态融合

3.3.3 案例拆解:四元数插值在轨迹规划中的应用

某协作机器人需要在两点之间平滑过渡姿态:起点四元数 q₁ = (1, 0, 0, 0)(单位姿态),终点 q₂ = (0.707, 0, 0.707, 0)(绕 Y 轴旋转 90°)。采用 slerp 插值,在 t = 0.5 时:

θ = acos(q₁·q₂) = acos(0.707) = 45°
q(t) = [sin((1-t)θ)·q₁ + sin(tθ)·q₂] / sin(θ)
q(0.5) = [sin(22.5°)·(1,0,0,0) + sin(22.5°)·(0.707,0,0.707,0)] / sin(45°)
       = (0.924, 0, 0.383, 0)

该插值保证了旋转轴恒定、角速度均匀,避免了欧拉角插值可能出现的姿态抖动。实际工程中,还需对插值后的四元数进行归一化处理,防止累积误差。

经验提醒:在机械臂控制周期(通常 1-8ms)内,四元数乘法仅需 16 次浮点运算,而矩阵乘法需要 27 次。对于 6 轴机器人每秒 1000 次的正逆解计算,四元数可显著降低 CPU 负载。

3.4 相互转换:以旋转矩阵为桥梁的统一框架

3.4.1 转换流程与公式

四种表示方法(旋转矩阵、欧拉角、旋转向量、四元数)之间的转换,推荐统一以旋转矩阵为中间桥梁,避免直接转换带来的公式复杂化和数值不稳定。核心转换路径如下:

  1. 欧拉角 → 旋转矩阵:按约定顺序连乘基本旋转矩阵。
  2. 旋转矩阵 → 欧拉角:根据矩阵元素反解,注意奇异情况处理。
  3. 旋转向量 → 旋转矩阵:罗德里格斯公式。
  4. 旋转矩阵 → 旋转向量:θ = arccos((tr(R)-1)/2),k 由反对称部分提取。
  5. 四元数 → 旋转矩阵:直接代数映射。
  6. 旋转矩阵 → 四元数:利用矩阵迹和主对角元素求解。

3.4.2 转换中的数值稳定性问题

从旋转矩阵提取欧拉角时,当 pitch 接近 ±90° 时,atan2 函数的两个参数同时趋近于零,导致角度解不稳定。此时应改用四元数作为中间表示。从旋转矩阵提取四元数时,若 w 接近零,需改用 x、y、z 中值最大的分量作为主元,避免除以接近零的数。

3.4.3 案例拆解:视觉引导抓取中的姿态转换

某视觉系统输出目标物体的姿态为四元数 q = (0.924, 0.383, 0, 0),机械臂控制器需要欧拉角格式(ZYX)进行运动指令下发。转换过程:

步骤1:四元数 → 旋转矩阵
R = [[1, 0, 0],
     [0, 0.707, -0.707],
     [0, 0.707, 0.707]]
步骤2:旋转矩阵 → ZYX 欧拉角
ψ = atan2(R[1,0], R[0,0]) = atan2(0, 1) = 0°
θ = atan2(-R[2,0], sqrt(R[0,0]²+R[1,0]²)) = atan2(0, 1) = 0°
φ = atan2(R[2,1], R[2,2]) = atan2(0.707, 0.707) = 45°

最终得到欧拉角 (0°, 0°, 45°),即绕 Z 轴旋转 45°。该转换耗时约 5μs,满足实时性要求。若直接使用四元数到欧拉角的公式,则需处理多组解和象限判断,代码复杂度显著增加。

3.5 常见误区与工程复盘

3.5.1 典型错误

  • 混淆旋转顺序:不同厂家控制器可能使用不同的欧拉角约定,直接套用公式会导致姿态偏差。
  • 忽略四元数归一化:连续乘法后四元数模长漂移,导致旋转矩阵非正交。
  • 在奇异点附近使用欧拉角插值:产生“抖动”或“绕远路”现象。
  • 旋转向量角度超过 π:导致旋转轴方向翻转,插值路径异常。

3.5.2 工程复盘清单

检查项方法通过标准
旋转矩阵正交性计算 R·Rᵀ与单位矩阵误差 < 1e-6
四元数模长计算 w²+x²+y²+z²与 1 误差 < 1e-6
欧拉角范围检查 pitch 是否接近 ±90°远离奇异区域
转换往返一致性姿态 → 矩阵 → 姿态角度误差 < 0.01°

3.5.3 总结与选型建议

在实际机械臂系统中,推荐采用混合策略:人机交互界面使用欧拉角显示,内部计算和轨迹插值使用四元数,标定和微分运动学使用旋转向量。所有数据交换统一通过旋转矩阵作为中间格式,确保不同模块之间的兼容性。对于实时性要求高的场景(如力控、视觉伺服),应优先使用四元数;对于需要直观理解姿态的场景(如示教器显示),欧拉角仍是不可替代的选择。

核心结论:姿态描述方法的选择本质上是“直观性、计算效率、数值稳定性”三者之间的权衡。掌握四种表示方法及其转换关系,是机械臂运动学算法工程师的基本功。建议在代码库中封装统一的姿态转换工具类,内置边界条件检查和数值验证功能,从根源上避免姿态表示错误。