2. 刚体运动学基础:坐标系定义与变换
各位同学,今天我们聊聊刚体运动学的基础。说白了,就是搞清楚飞行器在空间里「怎么动」以及「怎么描述它动」。这部分内容,我做了十几年控制,几乎每天都在跟它打交道。你想想看,如果连坐标系都搞不清楚,后面的参数辨识和验证,那就是空中楼阁。
2.1 惯性系与体坐标系
首先,我们得有个「绝对」的参考。这就是惯性坐标系,也叫地球坐标系。我个人习惯用 OiXiYiZi 来表示。原点通常选在地面某点,比如起飞点。Z轴指向天,X轴指向北或东,Y轴按右手定则确定。嗯,这里要注意:不同项目对惯性系的定义可能不同,但核心思想是——它固定不动,用来衡量飞行器的绝对位置和姿态。
另一个是体坐标系,固定在飞行器上。我用 ObXbYbZb 表示。原点在飞行器质心。X轴指向机头,Y轴指向右翼,Z轴指向下(符合右手定则)。
我在项目中遇到过一个问题:有次试飞,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φ]
这个矩阵的作用,就是把惯性系下的向量,转换到体坐标系下。反过来,用它的转置矩阵就能从体坐标系转回惯性系。
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、磁力计各自的坐标系,都通过齐次变换矩阵统一到体坐标系下。这样,所有数据都在同一个框架里,处理起来特别清爽。
知识体系总览
下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个「地图」,随时回来查阅。
这张图把本章的核心逻辑串起来了。从惯性系和体坐标系出发,通过欧拉角或四元数描述旋转,再用齐次变换矩阵统一处理旋转和平移。你想想看,整个运动学框架,其实就是这几个工具的组合使用。
好了,刚体运动学的基础就讲到这里。这些内容虽然基础,但却是后续所有工作的基石。参数辨识、控制律设计、仿真验证,每一步都离不开坐标系和变换矩阵。希望你能把这些概念真正吃透,而不是死记硬背公式。