4、刚体运动学基础:位置、速度、加速度的矢量描述,欧拉角与四元数

各位工程师朋友,大家好。今天我们聊聊刚体运动学。说实话,这部分内容看起来像是理论力学的老古董,但在我做风机偏航系统仿真这十几年里,发现它恰恰是很多工程问题的根源。

你想想看,偏航系统说白了就是让机舱这个大块头在塔筒顶上转。这个「转」字,背后就是刚体运动学。如果连位置、速度、加速度怎么描述都没搞明白,后面做动力学仿真就是空中楼阁。

4.1 位置、速度、加速度的矢量描述

我们先从最基础的开始。刚体在空间中的运动,可以分解为平动和转动。平动好理解,就是质心在动;转动嘛,就是绕某个轴在转。

位置矢量:描述刚体上某一点在参考系中的坐标。比如偏航轴承上某个螺栓孔的位置,在全局坐标系下就是一个三维矢量 r = [x, y, z]^T。

速度矢量:位置对时间求导。对于刚体上任意一点 P,其速度可以写成:

v_P = v_O + ω × r_P/O

这里 v_O 是刚体上参考点 O 的速度,ω 是刚体的角速度矢量,r_P/O 是从 O 指向 P 的矢量。这个公式我建议你刻在脑子里——它是刚体运动学的核心。

加速度矢量:速度对时间再求导。公式稍微复杂一点:

a_P = a_O + α × r_P/O + ω × (ω × r_P/O)

其中 α 是角加速度。最后一项 ω × (ω × r_P/O) 就是向心加速度。我在做偏航系统仿真时,曾经忽略过这一项,结果算出来的轴承力完全不对。嗯,那次教训挺深刻的。

工程经验:在偏航系统中,ω 通常很小(偏航速度一般 0.1~0.5°/s),但 r_P/O 很大(机舱长度十几米),所以向心加速度项不能随便忽略。我建议你每次建模时都先估算一下量级。

4.2 欧拉角:直观但暗藏陷阱

欧拉角是描述刚体姿态最直观的方式。三个角度,分别绕三个轴旋转。在风机领域,我们常用的是 Z-X-Z 序列,或者 Z-Y-X 序列(也就是大家熟悉的横滚、俯仰、偏航)。

偏航系统的「偏航角」其实就是欧拉角中的一个。但这里有个坑——万向锁

什么是万向锁?说白了,就是当第二个旋转角达到 ±90° 时,第一个和第三个旋转轴会重合,导致失去一个自由度。在风机偏航系统中,虽然偏航角可以转好几圈,但如果你用欧拉角描述,当俯仰角(机舱的俯仰)接近 90° 时,数值计算就会出问题。

避坑指南:我曾经在某个项目中用欧拉角做偏航系统的姿态插值,结果在特定角度下仿真直接发散。后来排查了三天,才发现是万向锁导致的。从那以后,只要涉及大角度运动,我坚决不用欧拉角。

欧拉角的另一个问题是:角速度到欧拉角速率的转换矩阵存在奇异性。公式如下:

[ω_x]   [1   0        sin(θ)  ] [φ_dot]
[ω_y] = [0   cos(φ)  -sin(φ)cos(θ)] [θ_dot]
[ω_z]   [0   sin(φ)   cos(φ)cos(θ)] [ψ_dot]

当 θ = ±90° 时,矩阵的第三列变成 [1, 0, 0]^T,矩阵不可逆。这就是万向锁的数学本质。

4.3 四元数:工程界的救星

四元数是什么?说白了就是一个四维的超复数,q = [q0, q1, q2, q3]^T。它没有奇异性,计算效率高,插值平滑。在风机偏航系统仿真中,我强烈建议用四元数。

四元数的核心优势

  • 无万向锁问题
  • 只需要 4 个参数(欧拉角需要 9 个方向余弦矩阵元素)
  • 旋转合成简单,直接用乘法
  • 插值平滑(球面线性插值 SLERP)

四元数表示旋转的公式:

q = [cos(θ/2), sin(θ/2) * n_x, sin(θ/2) * n_y, sin(θ/2) * n_z]

其中 θ 是旋转角度,n = [n_x, n_y, n_z] 是单位旋转轴矢量。

用四元数更新姿态的微分方程:

q_dot = 0.5 * q ⊗ ω

这里 ⊗ 表示四元数乘法,ω 是角速度四元数(实部为 0)。这个方程在数值积分时非常稳定。

个人习惯:我在做偏航系统仿真时,通常用四元数做姿态更新,只在输出结果时转换成欧拉角给工程师看。因为大家习惯看角度,但计算过程用四元数更安全。

4.4 知识体系总览

下面这张图是我自己整理的刚体运动学知识结构,你可以把它当作一个快速索引:

刚体运动学知识体系 刚体运动学 位置、速度、加速度矢量 v_P = v_O + ω × r_P/O a_P = a_O + α × r_P/O + ω × (ω × r_P/O) 欧拉角描述 Z-X-Z / Z-Y-X 序列 ⚠ 万向锁问题 (θ=±90°) 四元数描述 q = [cos(θ/2), sin(θ/2)·n] q_dot = 0.5 · q ⊗ ω 工程建议:计算用四元数,输出用欧拉角 偏航系统仿真中推荐使用四元数避免奇异性

4.5 工程实践中的选择建议

说了这么多,到底什么时候用欧拉角,什么时候用四元数?我根据自己的经验,整理了一个对照表:

应用场景 推荐方法 原因
偏航系统小角度仿真(±10°) 欧拉角 直观,无奇异性风险
偏航系统全角度仿真(0~360°) 四元数 避免万向锁,数值稳定
姿态插值/平滑过渡 四元数 SLERP 插值均匀,无突变
结果展示/报告输出 欧拉角 工程师习惯看角度

核心建议:在偏航系统多体动力学仿真中,我个人的工作流是:

  1. 用四元数做姿态积分和更新
  2. 用四元数计算角速度和角加速度
  3. 只在后处理时转成欧拉角输出

这样做既保证了数值稳定性,又兼顾了工程可读性。

好了,刚体运动学的基础就聊到这里。这部分内容虽然基础,但它是整个偏航系统仿真的基石。下次我们聊到动力学方程时,你会发现这些矢量描述和姿态表示方法会反复出现。


专注资料整理