2. 刚体运动学基础:坐标系定义与变换

各位同学,今天我们聊聊刚体运动学的基础。说白了,就是搞清楚飞行器在空间里「怎么动」以及「怎么描述它动」。这部分内容,我做了十几年控制,几乎每天都在跟它打交道。你想想看,如果连坐标系都搞不清楚,后面的参数辨识和验证,那就是空中楼阁。

2.1 惯性系与体坐标系

首先,我们得有个「绝对」的参考。这就是惯性坐标系,也叫地球坐标系。我个人习惯用 OiXiYiZi 来表示。原点通常选在地面某点,比如起飞点。Z轴指向天,X轴指向北或东,Y轴按右手定则确定。嗯,这里要注意:不同项目对惯性系的定义可能不同,但核心思想是——它固定不动,用来衡量飞行器的绝对位置和姿态。

另一个是体坐标系,固定在飞行器上。我用 ObXbYbZb 表示。原点在飞行器质心。X轴指向机头,Y轴指向右翼,Z轴指向下(符合右手定则)。

核心区别: 惯性系是「上帝视角」,体坐标系是「飞行员视角」。所有传感器(IMU、GPS)的测量值,最终都要在这两个坐标系之间来回转换。

我在项目中遇到过一个问题:有次试飞,IMU数据直接拿来用,结果姿态解算全乱套了。后来发现,是IMU的安装方向跟体坐标系定义差了90度。所以,坐标系定义一定要写在设计文档的第一页,并且要跟硬件团队反复确认。

2.2 欧拉角与旋转矩阵

飞行器从惯性系转到体坐标系,怎么描述?最直观的方式就是欧拉角。我常用的顺序是 Z-Y-X,也就是先偏航(Yaw,绕Z轴),再俯仰(Pitch,绕Y轴),最后滚转(Roll,绕X轴)。

对应的旋转矩阵长这样:

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

其中:
Rz(ψ) = [cosψ  -sinψ  0;  sinψ  cosψ  0;  0  0  1]
Ry(θ) = [cosθ   0   sinθ;  0     1    0; -sinθ  0  cosθ]
Rx(φ) = [1     0     0;  0  cosφ -sinφ;  0  sinφ  cosφ]

这个矩阵的作用,就是把惯性系下的向量,转换到体坐标系下。反过来,用它的转置矩阵就能从体坐标系转回惯性系。

避坑指南: 欧拉角有个著名的「万向锁」问题。当俯仰角接近±90度时,偏航和滚转会耦合,丢失一个自由度。我曾经在仿真中遇到过,飞行器做大机动时姿态解算直接炸了。所以,如果你要做全姿态控制,建议用四元数。

2.3 四元数基础

四元数,说白了就是四个数描述旋转。它没有万向锁,计算效率也高。我一般用 q = [q0, q1, q2, q3] 表示,其中 q0 是标量部分,q1,q2,q3 是矢量部分。

四元数跟旋转矩阵的转换关系:

R = [1-2(q2²+q3²)   2(q1q2-q0q3)   2(q1q3+q0q2);
     2(q1q2+q0q3)   1-2(q1²+q3²)   2(q2q3-q0q1);
     2(q1q3-q0q2)   2(q2q3+q0q1)   1-2(q1²+q2²)]

嗯,这个公式看起来有点吓人。但你想想看,实际编程时,我们只需要调用现成的库函数就行。重要的是理解它的物理意义:四元数本质上是一个单位向量绕某个轴旋转了某个角度

我的习惯: 在代码里,我统一用四元数做姿态解算和更新,只在最后输出给用户或做可视化时,才转成欧拉角。这样既避免了万向锁,又保持了直观性。

2.4 齐次变换矩阵

最后,我们聊聊齐次变换矩阵。它把旋转和平移统一到一个4x4的矩阵里:

T = [R   t;
     0   1]

其中 R 是3x3旋转矩阵,t 是3x1平移向量。

这个矩阵有什么用?举个例子:你要把IMU测量的角速度和加速度,从IMU的安装位置转换到飞行器质心。这时候,就需要一个齐次变换矩阵,同时处理旋转和位置偏移。

我在项目中用过它来标定传感器安装误差。把IMU、GPS、磁力计各自的坐标系,都通过齐次变换矩阵统一到体坐标系下。这样,所有数据都在同一个框架里,处理起来特别清爽。

核心公式: 假设点P在坐标系A中的坐标为PA,在坐标系B中的坐标为PB,那么: PB = TB←A * PA 其中 TB←A 是从A到B的齐次变换矩阵。

知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个「地图」,随时回来查阅。

刚体运动学基础:坐标系与变换 惯性坐标系 OiXiYiZi 固定在地面,绝对参考 体坐标系 ObXbYbZb 固定在飞行器上 旋转 旋转 欧拉角 偏航 ψ → 俯仰 θ → 滚转 φ ⚠ 万向锁问题 四元数 q = [q0, q1, q2, q3] ✅ 无万向锁,计算高效 可相互转换 齐次变换矩阵 T = [R t; 0 1] 旋转 + 平移,统一处理 构建旋转部分 提供平移量 核心思路:用不同数学工具描述同一物理旋转,根据场景选择最合适的表达方式

这张图把本章的核心逻辑串起来了。从惯性系和体坐标系出发,通过欧拉角或四元数描述旋转,再用齐次变换矩阵统一处理旋转和平移。你想想看,整个运动学框架,其实就是这几个工具的组合使用。

避坑指南: 我曾经在代码里混用了欧拉角和四元数的更新顺序,结果姿态解算越跑越偏。后来花了整整两天才定位到问题。所以,一定要在代码注释里写清楚你用的是哪种旋转顺序和更新方式,不然三个月后你自己都看不懂。

好了,刚体运动学的基础就讲到这里。这些内容虽然基础,但却是后续所有工作的基石。参数辨识、控制律设计、仿真验证,每一步都离不开坐标系和变换矩阵。希望你能把这些概念真正吃透,而不是死记硬背公式。


专注资料整理