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

各位同学,咱们今天聊聊坐标系。说实话,我刚入行那会儿,觉得坐标系这东西太简单了——不就是三个轴互相垂直嘛。直到有一次,我在做某型无人机的飞控算法调试,发现姿态解算总是莫名其妙地发散,查了三天三夜,最后发现是坐标系定义搞反了。嗯,从那以后,我再也不敢小看坐标系了。

你想想看,飞行器在天上飞,它自己感觉的「前后左右」和地面看到的「东南西北」完全是两码事。如果没有一套统一的坐标系语言,咱们连「飞机抬头了」这种基本描述都说不清楚。所以,坐标系是飞行器运动方程的基石,也是你以后做仿真、写飞控、搞导航的必修课。

2.1 地面坐标系:我们看飞机的视角

地面坐标系,说白了就是站在地面上看飞机。我个人习惯把它叫做「地球固定坐标系」,因为它相对于地面是静止的。

定义很简单:

  • 原点O:通常取在地面某一点,比如起飞点、跑道头,或者你随便选的一个参考点。
  • X轴:指向正北(或者指向某个固定方向,比如跑道方向)。
  • Y轴:指向正东(与X轴垂直,构成右手系)。
  • Z轴:指向地心,也就是垂直向下。

重要提醒:Z轴指向地心,这是航空界的惯例。很多初学者会搞反,以为Z轴向上。记住,在航空坐标系里,「向下为正」是常态。

我在项目中遇到过一件事:有个同事做飞行轨迹回放,发现飞机高度数据一直是负的,查了半天,原来他把地面坐标系的Z轴定义成了向上。这种错误在仿真里很隐蔽,因为数学上也能算,但物理意义全反了。

2.2 机体坐标系:飞机自己的视角

机体坐标系是固定在飞机上的。你坐在驾驶舱里,感觉到的「前后左右上下」,就是机体坐标系。

定义如下:

  • 原点O:通常取在飞机的重心(CG)位置。
  • X轴:指向机头方向,沿机身纵轴。
  • Y轴:指向右翼方向(从机尾看向机头,右手方向)。
  • Z轴:指向机身下方,垂直于X轴和Y轴构成的平面。

这里有个容易混淆的点:机体坐标系的Y轴指向右翼,而不是左翼。为什么?因为要满足右手定则。你想想看,右手拇指指向X轴,食指指向Y轴,中指自然指向Z轴——这样Z轴就指向下方了。

我的小技巧:记不住方向的时候,就伸出右手比划一下。拇指朝机头,食指朝右翼,中指朝下——这就是机体坐标系。我在教新人的时候,经常让他们做这个动作,比死记硬背管用多了。

2.3 速度坐标系:气流告诉你的方向

速度坐标系,也叫气流坐标系。它跟飞机的姿态无关,只跟飞机相对空气的运动方向有关。

定义:

  • 原点O:同样取在飞机重心。
  • X轴:指向飞机速度方向(也就是气流来的反方向)。
  • Y轴:指向右翼方向,但注意——这里的「右翼」是相对于速度方向而言的。
  • Z轴:在飞机对称面内,指向下方,垂直于X轴。

为什么要单独搞一个速度坐标系?因为空气动力(升力、阻力)的计算,都是基于气流方向的。你想想看,飞机抬头了,但速度方向可能还没变——这时候用机体坐标系算气动力,那可就乱套了。

我曾经在做一个大迎角机动仿真时,发现阻力系数怎么算都不对。后来才意识到,在迎角很大的情况下,机体坐标系和速度坐标系已经严重偏离了,必须用速度坐标系来计算气动力。那次教训让我记住了:气动力永远跟着气流走,不是跟着机身走。

2.4 三个坐标系之间的转换

好了,三个坐标系定义清楚了,接下来就是怎么互相转换。这就像翻译——你得知道「飞机抬头」在地面坐标系里是什么样子,在速度坐标系里又是什么样子。

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

这个转换需要三个角度:

  • 偏航角 ψ:绕Z轴旋转
  • 俯仰角 θ:绕Y轴旋转
  • 滚转角 φ:绕X轴旋转

转换矩阵长这样(我建议你直接记住这个顺序:Z→Y→X):

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

注意:这个矩阵是「从地面到机体」的转换。如果你要从机体转到地面,直接用它的转置矩阵就行——因为旋转矩阵是正交矩阵。我见过有人在这里写反了,结果仿真出来的姿态全是镜像的。

2.4.2 机体坐标系 → 速度坐标系

这个转换需要两个角度:

  • 迎角 α:速度矢量在机体对称面内与X轴的夹角
  • 侧滑角 β:速度矢量偏离对称面的角度

转换矩阵:

C_vb = [cosα·cosβ,  sinβ,  sinα·cosβ;
        -cosα·sinβ,  cosβ,  -sinα·sinβ;
        -sinα,       0,      cosα]

这个矩阵在实际应用中非常频繁。比如你要计算升力系数,就得先把机体坐标系下的速度分量转换到速度坐标系下。我记得有一次做风洞数据修正,发现数据对不上,就是因为风洞测量用的是速度坐标系,而飞控用的是机体坐标系——中间差了迎角和侧滑角的转换。

2.5 一张图看懂三个坐标系的关系

下面这张SVG图,是我自己画的三个坐标系关系图。你仔细看看,就能明白它们之间的逻辑链条:

三个坐标系关系图 地面坐标系 原点:地面参考点 X:北 Y:东 Z:地 固定于地球 机体坐标系 原点:飞机重心 X:机头 Y:右翼 Z:机腹 速度坐标系 原点:飞机重心 X:速度方向 Y、Z:垂直于速度 ψ, θ, φ α, β 间接转换(通过机体) 转换关系: 地面 → 机体:偏航(ψ) → 俯仰(θ) → 滚转(φ) 机体 → 速度:先迎角(α) → 后侧滑角(β) 地面 → 速度:一般通过机体间接转换

2.6 实际应用中的避坑指南

讲到这里,我想分享几个实际项目中踩过的坑:

  • 我曾经在写飞控代码时,把地面坐标系的Z轴定义成了向上。结果所有高度相关的计算都反了,飞机越飞越高,显示的高度却在减小。这个错误花了我两天才找到。
  • 我曾经在做六自由度仿真时,忘了做机体坐标系到速度坐标系的转换,直接用机体坐标系下的速度去算气动力。结果升力系数和阻力系数全乱了,仿真出来的飞行轨迹跟实际完全不符。
  • 我建议你在写代码时,把三个坐标系的定义写成一个头文件,每个轴的方向都用注释标清楚。这样即使过了一个月再回头看,也不会搞混。

一个实用技巧:在做坐标系转换时,先用手算一个简单的例子验证。比如地面坐标系下的(1,0,0)向量,经过90度俯仰旋转后,在机体坐标系下应该变成(0,0,-1)。如果算出来不对,那肯定是矩阵或者角度顺序错了。

好了,这一章的内容就到这里。坐标系是飞行器运动方程的基础,你把它搞清楚了,后面的姿态动力学、导航方程学起来就会顺畅很多。记住:坐标系定义错了,后面全白干。


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