2. 参考坐标系(上):地面坐标系、机体坐标系、速度坐标系定义与转换

各位同学,咱们今天聊聊坐标系。说实话,我刚入行那会儿,觉得坐标系这东西太简单了——不就是三个轴互相垂直嘛。直到有一次做无人机编队仿真,坐标系搞反了,结果两架飞机在屏幕上直接穿模……嗯,从那以后我再也不敢小看坐标系了。

飞行器六自由度方程,说白了就是描述飞机怎么动、怎么转。但你要描述运动,总得有个参考吧?就像你说“我往前走了5米”,这个“前”是相对于谁?这就是坐标系要解决的问题。

2.1 地面坐标系:我们站在哪里看飞机?

地面坐标系,也叫惯性坐标系(近似)。我习惯把它想象成“上帝视角”——你站在地面上,看着飞机飞。

定义很简单:

  • 原点O:通常取地面某固定点,比如起飞点、跑道头
  • Xg:指向正北(或正东,看你的习惯)
  • Yg:指向正东(或正北,与X轴垂直)
  • Zg:指向地心,也就是竖直向下

重要提醒:地面坐标系是右手系。你伸出右手,拇指X,食指Y,中指Z——中指指向下,没错,就是向下。

我在做某型固定翼飞控时,遇到过一个问题:地面坐标系的Z轴向下,但机体坐标系的Z轴向上。当时有个同事直接拿Z轴数据去算高度,结果飞机越飞越低,他还以为是控制律写错了……

地面坐标系主要用来干嘛?说白了就是记录飞机的位置和姿态。GPS给的是经纬高,但你要算控制量,得先转到地面坐标系里。

2.2 机体坐标系:飞机自己怎么看自己?

机体坐标系是绑在飞机上的。你想想看,飞机在翻滚、俯仰、偏航,它自己可不管地面是哪儿,它只关心“我机头朝哪”、“我机翼平不平”。

定义如下:

  • 原点O:飞机质心(严格来说是重心,但工程上差不多)
  • Xb:沿机体纵轴,指向机头
  • Yb:沿机体横轴,指向右翼
  • Zb:沿机体立轴,指向机身下方

个人经验:我建议你在做仿真时,把机体坐标系的原点画在质心位置。因为所有力矩方程都是绕质心建立的。如果你把原点放在机头,那算出来的力矩全是错的——别问我怎么知道的。

机体坐标系里,三个角速度(p, q, r)分别对应绕Xb、Yb、Zb轴的旋转。p是滚转角速度,q是俯仰角速度,r是偏航角速度。这个顺序别搞混了,我见过有人把p和r写反,结果仿真出来的飞机像喝醉了酒一样乱转。

2.3 速度坐标系:气流是怎么看飞机的?

速度坐标系,也叫气流坐标系。这个坐标系比较特殊——它跟着飞机的速度方向走。

定义:

  • 原点O:同样在飞机质心
  • Xs:沿空速向量方向,指向飞机运动方向
  • Zs:在对称面内,垂直于Xs轴,指向下方
  • Ys:由右手定则确定,指向右翼方向

为什么要搞个速度坐标系?因为气动力(升力、阻力)都是相对于气流方向定义的。你想想看,飞机迎角变了,升力方向也跟着变。如果你用机体坐标系去算气动力,那公式会复杂到让你怀疑人生。

避坑指南:我曾经在写气动模型时,把速度坐标系和机体坐标系搞混了。结果算出来的升力系数总是对不上风洞数据。查了三天,最后发现是坐标系转换矩阵写反了。嗯,从那以后我每次写转换矩阵都要手算一遍验证。

2.4 坐标系之间的转换:怎么从A到B?

三个坐标系之间怎么转?核心就是旋转矩阵。我习惯用欧拉角来做转换,虽然它有万向锁的问题,但工程上90%的情况够用了。

2.4.1 地面坐标系 → 机体坐标系

这个转换需要三个欧拉角:偏航角ψ、俯仰角θ、滚转角φ。转换顺序是:先偏航,再俯仰,最后滚转。

旋转矩阵长这样:

Cg→b = Rx(φ) · Ry(θ) · Rz(ψ)

其中:
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.4.2 机体坐标系 → 速度坐标系

这个转换只需要两个角:迎角α和侧滑角β。

转换矩阵:

Cb→s = Ry(-α) · Rz(β)

其中:
Rz(β) = [cosβ  sinβ  0; -sinβ  cosβ  0; 0  0  1]
Ry(-α) = [cosα  0  sinα; 0  1  0; -sinα  0  cosα]

小技巧:我习惯把转换矩阵写成函数,每次调用时传入角度值。这样代码可读性好,也方便调试。如果你用MATLAB,可以直接用angle2dcm函数,但记得检查旋转顺序。

2.5 知识体系总览

下面这张图是我自己画的,把三个坐标系的关系捋清楚了:

地面坐标系 O-XgYgZg 北-东-地 机体坐标系 O-XbYbZb 机头-右翼-下方 速度坐标系 O-XsYsZs 空速方向-右翼-下方 ψ, θ, φ 偏航-俯仰-滚转 α, β 迎角-侧滑角 坐标系转换关系 地面坐标系 → 机体坐标系:Cg→b = Rx(φ)·Ry(θ)·Rz(ψ) 机体坐标系 → 速度坐标系:Cb→s = Ry(-α)·Rz(β) 注意:所有转换均为右手系,旋转顺序不可颠倒

2.6 工程中的实用建议

说了这么多理论,来点实际的。我在做飞控代码时,一般这样处理坐标系:

  1. 初始化时:把地面坐标系原点设在起飞点,记录经纬高
  2. 每个控制周期:用IMU数据更新机体姿态,算出Cg→b
  3. 气动计算时:用空速和迎角算出Cb→s,把气动力转到机体坐标系
  4. 最后:所有力和力矩在机体坐标系下合成,代入六自由度方程

核心要点:坐标系转换的本质是“把同一个向量在不同坐标系下表示”。你只要记住这个,就不会搞混。向量本身没变,变的是你看它的角度。

好了,这一节的内容就到这儿。坐标系是飞行器建模的基石,你把它搞清楚了,后面的六自由度方程就是水到渠成的事。下一节我们会讲运动学方程——也就是飞机的位置和姿态怎么随时间变化。


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