二、六自由度运动基础:刚体运动学、位置/姿态描述、欧拉角与四元数、自由度定义及坐标变换
Stewart平台的核心任务是精确控制动平台在三维空间中的位置与姿态,使其按照期望轨迹运动。要完成这一任务,首先必须建立一套严格的数学语言来描述刚体的空间状态。本章将系统梳理刚体运动学的基础概念,重点讲解位置与姿态的多种描述方法(旋转矩阵、欧拉角、四元数),明确六自由度的物理含义,并建立从世界坐标系到动平台坐标系的完整变换链路。这些内容是后续运动学解算、动力学建模与控制算法设计的数学基石。
2.1 刚体运动学核心原理
刚体是指在外力作用下形状和大小保持不变的物体,其内部任意两点之间的距离在运动过程中恒定不变。在Stewart平台中,动平台和静平台均可视为刚体。刚体在三维空间中的运动可以分解为平动(Translation)和转动(Rotation)两部分。平动描述刚体参考点(通常取质心或几何中心)的位置变化,转动描述刚体绕参考点的方向变化。刚体运动学研究的是位置、速度、加速度与时间的关系,而不考虑产生运动的原因(力与力矩)。
在数学描述上,刚体的完整位姿(Pose)由位置矢量 P 和姿态矩阵 R 组成,记为 (P, R)。位置矢量 P 是一个三维列向量,表示刚体坐标系原点在世界坐标系中的坐标;姿态矩阵 R 是一个 3×3 的正交矩阵,属于特殊正交群 SO(3)。R 的每一列表示刚体坐标系的基向量在世界坐标系中的方向余弦。因此,刚体运动学本质上是在研究 SE(3) 群(特殊欧氏群)上的变换关系。
2.2 位置与姿态的数学描述方法
位置描述相对简单,使用三维坐标即可。姿态描述则有多种方法,每种方法各有优劣,适用于不同的工程场景。下表对比了四种常用姿态描述方法:
| 描述方法 | 参数个数 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|---|
| 旋转矩阵 R | 9(6个约束) | 无奇异,组合方便 | 冗余参数多,计算量大 | 理论推导、坐标变换 |
| 欧拉角 (α, β, γ) | 3 | 直观,物理意义明确 | 存在万向锁问题,插值不平滑 | 飞行器姿态显示、人机交互 |
| 四元数 q | 4(1个约束) | 无奇异,插值平滑,计算效率高 | 不够直观,需转换理解 | 实时控制、惯性导航、动画 |
| 轴角 (n, θ) | 4(1个约束) | 几何意义清晰 | 插值需特殊处理,存在多值性 | 理论分析、旋转合成 |
在Stewart平台的实际控制中,欧拉角常用于操作员指令输入和状态显示(因为直观),而四元数则用于控制回路内部的姿态解算与插值(因为计算稳定且无奇异)。旋转矩阵作为中间桥梁,用于坐标系之间的矢量变换。
2.2.1 欧拉角的定义与万向锁问题
欧拉角通过三次绕坐标轴的旋转来定义姿态。最常见的顺序是 ZYX(偏航-俯仰-滚转),即先绕 Z 轴旋转偏航角 ψ,再绕新的 Y 轴旋转俯仰角 θ,最后绕新的 X 轴旋转滚转角 φ。旋转矩阵可表示为 R = Rz(ψ) · Ry(θ) · Rx(φ)。当俯仰角 θ = ±90° 时,第一次和第三次旋转的轴重合,导致系统丢失一个旋转自由度,这就是万向锁(Gimbal Lock)现象。在Stewart平台模拟飞行器或车辆运动时,如果出现接近垂直的姿态,欧拉角描述将导致控制指令奇异,因此必须切换到四元数描述。
2.2.2 四元数的数学定义与运算
四元数由一个实部和三个虚部组成:q = w + xi + yj + zk,通常写作 q = [w, x, y, z]ᵀ。单位四元数满足 w² + x² + y² + z² = 1,可用于表示三维旋转。四元数乘法满足哈密顿规则:i² = j² = k² = ijk = -1。两个四元数 q₁ 和 q₂ 的乘积表示先进行 q₁ 旋转再进行 q₂ 旋转的复合旋转。四元数的共轭 q* = [w, -x, -y, -z]ᵀ 表示逆旋转。在控制系统中,四元数插值(如 SLERP)可以生成平滑的姿态过渡轨迹,避免欧拉角插值时的抖动问题。
2.3 自由度定义与Stewart平台对应关系
自由度的严格定义是:描述一个力学系统状态所需的独立广义坐标的个数。对于三维空间中的自由刚体,其自由度为 6——3 个平动自由度(沿 X、Y、Z 轴的移动)和 3 个转动自由度(绕 X、Y、Z 轴的转动)。Stewart平台通过 6 个可伸缩支腿(通常由电动缸或液压缸驱动)连接静平台和动平台,理论上可以实现动平台在空间中的全部 6 个自由度运动。
然而,实际工程中需要注意以下几点:
- 奇异位形:当平台运动到某些特殊位置时,雅可比矩阵可能降秩,导致平台在某些方向上失去控制能力或产生极大的驱动力。设计时应通过工作空间分析避开奇异点。
- 冗余驱动:如果支腿数量大于 6,系统变为冗余驱动,需要额外的力分配算法;如果小于 6,则为欠驱动系统,无法实现完整的六自由度运动。
- 自由度耦合:平台的平动和转动并非完全独立,尤其是在大角度姿态下,位置和姿态之间存在非线性耦合,运动学解算时必须统一考虑。
2.4 坐标变换与齐次变换矩阵
在Stewart平台中,存在多个坐标系:世界坐标系 {W}(固定于地面)、静平台坐标系 {S}(固定于静平台中心)、动平台坐标系 {B}(固定于动平台中心)、以及每个支腿的局部坐标系。运动学解算的核心任务就是在这些坐标系之间进行位姿变换。
齐次变换矩阵 T 将旋转和平移统一在一个 4×4 矩阵中:
T = | R P |
| 0 1 |
其中 R 为 3×3 旋转矩阵,P 为 3×1 位置矢量。齐次变换矩阵属于 SE(3) 群,其逆矩阵为:
T⁻¹ = | Rᵀ -Rᵀ·P |
| 0 1 |
坐标变换的链式法则为:T_WB = T_WS · T_SB,其中 T_WS 表示静平台坐标系相对于世界坐标系的变换(通常为固定值),T_SB 表示动平台相对于静平台的变换(由六个支腿长度决定)。通过逆运动学,我们可以根据期望的 T_WB 反解出每个支腿的长度;通过正运动学,我们可以根据实测的支腿长度计算出当前的 T_WB。
实战场景:飞行模拟器姿态指令解算
假设某飞行模拟器需要模拟飞机以 30° 俯仰角、10° 滚转角、5° 偏航角爬升。操作员输入欧拉角 (ψ=5°, θ=30°, φ=10°)。控制系统首先将欧拉角转换为四元数 q = [0.943, 0.127, 0.229, 0.044](示例值),然后计算旋转矩阵 R,再结合期望位置 P = [0.2, 0.1, 1.5] 米,构建齐次变换矩阵 T_WB。接着通过逆运动学求解六个电动缸的目标长度。若直接使用欧拉角进行插值,当俯仰角接近 90° 时会出现万向锁,导致滚转和偏航指令混乱;而使用四元数 SLERP 插值,则姿态过渡平滑且无奇异。
2.5 常见误区与工程复盘
在六自由度运动基础的学习和工程应用中,以下误区值得特别注意:
- 误区一:混淆欧拉角旋转顺序。不同的旋转顺序(ZYX、ZYZ、XYZ 等)会产生不同的旋转矩阵。在团队协作中,必须统一约定旋转顺序,否则会导致姿态解算错误。建议在代码中明确注释旋转顺序,并编写单元测试验证。
- 误区二:忽视四元数的单位化。由于数值积分误差或计算舍入,四元数可能偏离单位长度,导致旋转矩阵不正交。每次更新四元数后必须重新归一化。
- 误区三:坐标变换方向搞反。T_WB 表示从 {B} 到 {W} 的变换,即把 {B} 中的坐标转换到 {W} 中。如果误用 T_BW,会导致位置和姿态完全错误。建议在代码中统一命名规范,如
transform_world_to_body。 - 误区四:忽略平台结构参数的影响。铰点位置、支腿初始长度等结构参数直接影响运动学模型。在仿真和实机调试前,务必使用激光跟踪仪或三坐标测量仪标定实际结构参数,而不是直接使用 CAD 理论值。
风险提示:在将欧拉角转换为四元数时,注意角度单位(度/弧度)的一致性。在 C++ 或 Python 代码中,建议使用弧度制进行内部计算,仅在用户界面层转换为度。此外,当平台运动速度较高时,姿态更新频率需满足奈奎斯特采样定理,否则会出现运动失真。
2.6 本章小结与知识结构复盘
本章建立了六自由度运动描述的完整数学框架。核心要点归纳如下:
| 知识点 | 关键公式/定义 | 工程应用要点 |
|---|---|---|
| 位置描述 | P = [x, y, z]ᵀ | 相对于世界坐标系原点 |
| 旋转矩阵 | R ∈ SO(3),RᵀR = I | 用于矢量旋转,组合方便 |
| 欧拉角 | R = Rz(ψ)·Ry(θ)·Rx(φ) | 直观,但存在万向锁 |
| 四元数 | q = [w, x, y, z]ᵀ,||q||=1 | 无奇异,适合实时控制 |
| 齐次变换 | T = [R P; 0 1] | 统一处理旋转和平移 |
| 自由度 | 6 = 3 平动 + 3 转动 | Stewart平台实现6-DOF |