2. 六自由度运动学基础:坐标系定义与欧拉角

各位同学,今天我们来聊聊六自由度运动学里最基础、也最容易搞混的东西——坐标系。

说实话,我刚开始做飞行器设计那会儿,觉得坐标系嘛,不就是画几个箭头嘛,有什么难的?结果第一次做风洞数据对标,数据怎么都对不上,折腾了两天,最后发现是体轴系定义反了。嗯,从那以后,我再也不敢小看坐标系了。

2.1 为什么需要三种坐标系?

你想想看,一架飞机在天上飞,我们关心两件事:

  • 它往哪儿飞?——这需要相对于地面的位置和速度
  • 它姿态怎么样?——这需要相对于自身的角度和角速度

一套坐标系搞不定所有问题。所以,我们引入了三套坐标系:

  1. 地轴系——描述飞机相对于地面的位置和航迹
  2. 体轴系——描述飞机自身的姿态和转动
  3. 速度轴系——描述气流与飞机的相对关系

这三者之间通过欧拉角、迎角、侧滑角等参数相互转换。说白了,就是同一个物理量,在不同坐标系下有不同的表达方式。

核心思想:地轴系管位置,体轴系管姿态,速度轴管气动。三者缺一不可。

2.2 地轴系(地球坐标系)

地轴系,也叫惯性坐标系(近似)。我们通常取地面某一点为原点,比如跑道起点。

  • X轴:指向正北(或正东,看习惯)
  • Y轴:指向正东(或正北,与X垂直)
  • Z轴:指向地心(即向下)

我个人习惯用北-东-地(NED)坐标系。为什么?因为高度是负的,算重力势能时直接取绝对值就行,省事。

小技巧:在仿真中,地轴系通常被认为是固定不动的。但如果你做的是长航时飞行,比如无人机巡航几小时,就得考虑地球自转了。不过那是后话,咱们先打好基础。

2.3 体轴系(机体坐标系)

体轴系固定在飞机上,原点在飞机重心。

  • X轴:沿机身纵轴,指向机头
  • Y轴:垂直于对称面,指向右翼
  • Z轴:垂直于X-Y平面,指向机腹(向下)

这里有个坑,我踩过。体轴系的Z轴指向下,和地轴系的Z轴方向一致。但有些教材把Z轴指向上,那符号就全反了。做风洞数据对标时,力矩系数符号搞反,后果很严重。

注意:体轴系下的角速度(p, q, r)分别对应绕X、Y、Z轴的转动。p是滚转,q是俯仰,r是偏航。这个顺序别搞混了。

2.4 速度轴系(气流坐标系)

速度轴系,也叫风轴系。它的X轴始终指向来流方向。

  • X轴:沿速度矢量方向,指向来流
  • Y轴:垂直于X轴,指向右翼方向
  • Z轴:垂直于X-Y平面,指向下

为什么需要速度轴系?因为气动力和力矩直接与来流方向相关。升力垂直于速度方向,阻力平行于速度方向。在体轴系下算气动力,还得先转换,多此一举。

我记得有一次做某型无人机的气动分析,风洞数据给的是速度轴系下的系数,而我仿真用的是体轴系。直接套用,结果升力系数差了20%。后来才发现,忘了做坐标变换。

2.5 欧拉角:连接地轴系与体轴系的桥梁

欧拉角,说白了就是描述飞机姿态的三个角度:

  • 偏航角 ψ:绕Z轴转动(机头左右摆)
  • 俯仰角 θ:绕Y轴转动(机头上下抬)
  • 滚转角 φ:绕X轴转动(机身左右倾斜)

旋转顺序是:先偏航,再俯仰,最后滚转。这个顺序是约定俗成的,不能乱改。为什么?因为旋转不满足交换律,顺序不同,结果不同。

欧拉角转换矩阵(从体轴系到地轴系):

C = [cosθ·cosψ,  sinφ·sinθ·cosψ - cosφ·sinψ,  cosφ·sinθ·cosψ + sinφ·sinψ;
     cosθ·sinψ,  sinφ·sinθ·sinψ + cosφ·cosψ,  cosφ·sinθ·sinψ - sinφ·cosψ;
    -sinθ,       sinφ·cosθ,                     cosφ·cosθ]

这个矩阵看着复杂,其实你只要记住:第一行对应地轴系X轴在体轴系下的投影,第二行对应Y轴,第三行对应Z轴。嗯,这样就好记多了。

2.6 迎角与侧滑角:连接体轴系与速度轴系

迎角(α)和侧滑角(β)是描述飞机相对于来流姿态的两个关键参数。

  • 迎角 α:速度矢量在机体对称面内的投影与体轴X轴的夹角。抬头为正。
  • 侧滑角 β:速度矢量与机体对称面的夹角。右侧滑为正。

我见过不少新手把迎角和俯仰角搞混。俯仰角是体轴X轴与水平面的夹角,而迎角是体轴X轴与速度矢量的夹角。飞机爬升时,俯仰角可能很大,但迎角不一定大——比如垂直爬升时,迎角可能接近0。

经验之谈:在做六自由度仿真时,我建议先把欧拉角算清楚,再算迎角和侧滑角。顺序别搞反了。因为欧拉角是姿态的基础,迎角侧滑角是气动力的输入。

2.7 知识体系总览

下面这张图,是我自己总结的坐标系与角度关系。你看一遍,应该就能理清脉络了。

六自由度运动学:坐标系与角度关系 地轴系 X: 北 Y: 东 Z: 地 体轴系 X: 机头 Y: 右翼 Z: 机腹 速度轴系 X: 来流方向 Y: 右翼方向 Z: 下 欧拉角 ψ, θ, φ 迎角/侧滑角 α, β 关键参数 位置 (x,y,z) | 速度 (u,v,w) | 角速度 (p,q,r) | 姿态 (ψ,θ,φ) 坐标系转换路径 地轴系 ←—— 欧拉角 ——→ 体轴系 ←—— α, β ——→ 速度轴系 ↑ 位置/航迹 ↑ 姿态/转动 ↑ 气动力/力矩 注:实际仿真中,三种坐标系需要频繁转换,建议封装成独立函数

2.8 避坑指南

最后,分享几个我踩过的坑,希望能帮你省点时间:

  • 欧拉角奇异性:当俯仰角接近±90°时,偏航和滚转无法区分。这叫“万向锁”。做全姿态仿真时,建议用四元数代替欧拉角。
  • 符号约定:不同文献、不同软件对角度正负的定义可能不同。做风洞数据对标前,先确认符号约定是否一致。
  • 单位统一:角度用弧度还是度?我建议内部计算全用弧度,只在输入输出时转换。否则很容易出错。

我曾经在一次项目中,因为欧拉角转换矩阵写错了一个符号,导致仿真结果和试飞数据差了十万八千里。排查了整整三天,最后发现是sin和cos写反了。所以,写代码时一定要逐行验证,别偷懒。

好了,坐标系和欧拉角就讲到这里。这些东西看着简单,但真用起来,细节很多。建议你动手写个坐标转换的小程序,跑几个例子,感受一下。


公众号:蓝海资料掘金营,微信deep3321