4、飞行器运动方程(上):坐标系定义与姿态表示
各位同学,欢迎来到第四章。
说实话,飞行器运动方程是整个飞控设计的「地基」。地基没打牢,后面盖多少层楼都是白搭。我见过不少新手,一上来就急着调PID参数,结果飞机在天上乱转,根本不知道问题出在哪。说白了,就是坐标系和姿态表示没搞明白。
这一章,咱们先把坐标系和欧拉角讲透。你想想看,连飞机在哪个坐标系下运动都没搞清楚,怎么设计控制律?
4.1 为什么需要多个坐标系?
一个很朴素的问题:描述飞机运动,一个坐标系不够吗?
不够。原因很简单——不同物理量的「舒适区」不一样。
- 导航:关心飞机相对于地面的位置和航向。用地面坐标系最直观。
- 控制:关心飞机的姿态(俯仰、滚转、偏航)。用机体坐标系最方便。
- 气动:关心飞机相对于气流的迎角和侧滑角。用气流坐标系最自然。
我在项目中遇到过一件事:有个同事直接用机体坐标系下的速度去算导航位置,结果积分出来的位置误差越来越大。为什么?因为机体坐标系本身在旋转,速度矢量一直在变,直接积分当然会出问题。所以,坐标系之间的转换,是飞控的基本功。
4.2 地面坐标系(惯性系)
地面坐标系,也叫NED坐标系(North-East-Down)。
- 原点:通常取起飞点或地面某固定点。
- X轴:指向正北。
- Y轴:指向正东。
- Z轴:指向地心(向下)。
为什么Z轴向下?因为飞机的高度变化,用「向下为正」更符合传感器测量习惯。你想想看,气压高度计测的是大气压力,压力越大高度越低,正好对应Z轴正向。
地面坐标系是惯性参考系。在这个系里,牛顿第二定律可以直接用。飞机的导航、航迹规划,都在这个系里完成。
4.3 机体坐标系
机体坐标系固连在飞机上,随飞机一起运动。
- 原点:飞机重心。
- X轴:沿机体纵轴,指向机头。
- Y轴:沿机体横轴,指向右翼。
- Z轴:沿机体立轴,指向机身下方。
这个坐标系是飞控的「主战场」。陀螺仪测的是机体角速度,加速度计测的是机体加速度。控制律输出的舵面指令,也是基于机体坐标系来定义的。
嗯,这里要注意:机体坐标系的原点必须取在重心。如果取在别的位置,力矩方程会多出耦合项,计算起来非常麻烦。我早期做仿真时偷懒没注意这个,结果仿真结果和实际试飞总是对不上,排查了整整两天才发现是原点没对齐。
4.4 气流坐标系
气流坐标系,也叫风轴系。它和气流方向直接相关。
- 原点:飞机重心。
- X轴:沿空速方向,指向来流方向。
- Z轴:在飞机对称面内,垂直于X轴,指向下方。
- Y轴:由右手定则确定,指向右翼方向。
这个坐标系是气动工程师的最爱。升力、阻力、侧力,都是定义在气流坐标系下的。迎角α和侧滑角β,也是在这个系里定义的。
说白了,飞机飞行的本质,就是机体坐标系和气流坐标系之间的相对关系。迎角大了会失速,侧滑角大了会侧滑,这些都是飞控需要监控的关键参数。
4.5 欧拉角:姿态的「语言」
有了坐标系,怎么描述飞机从地面系转到体系?用欧拉角。
欧拉角是三个旋转角:滚转角φ、俯仰角θ、偏航角ψ。
旋转顺序是:先偏航,再俯仰,最后滚转。这个顺序不是随便定的,它保证了不会出现「万向锁」问题(至少在常规飞行范围内不会)。
重要:欧拉角的旋转顺序是固定的。不同顺序会得到不同的姿态矩阵。飞控中常用的是Z-Y-X顺序(先偏航,再俯仰,最后滚转)。
从地面系到体系的旋转矩阵(方向余弦矩阵)为:
C_ned_to_body =
[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θ]
这个矩阵看着复杂,但用起来很简单。你只需要把地面系下的向量左乘这个矩阵,就得到了体系下的向量。
4.6 欧拉角的局限性
欧拉角虽然直观,但有个致命问题:万向锁。
当俯仰角θ接近±90°时,滚转和偏航的旋转轴会重合,导致丢失一个自由度。这时候,飞机的姿态就无法用欧拉角唯一表示了。
我曾经在试飞中遇到过这个情况。一架特技飞机做大仰角机动,俯仰角超过了85°,结果姿态解算直接发散。从那以后,我设计飞控时都会加一个判断:如果俯仰角超过80°,就切换到四元数模式。
警告:在俯仰角接近±90°时,欧拉角微分方程会出现奇点。此时必须使用四元数或其他姿态表示方法。千万不要在万向锁附近用欧拉角做控制,后果很严重。
4.7 欧拉角微分方程
飞控需要知道姿态的变化率。欧拉角的变化率和机体角速度之间的关系是:
[φ_dot] [1, sinφ tanθ, cosφ tanθ] [p]
[θ_dot] = [0, cosφ, -sinφ ] [q]
[ψ_dot] [0, sinφ/cosθ, cosφ/cosθ] [r]
其中p、q、r是机体坐标系下的滚转、俯仰、偏航角速度(由陀螺仪测得)。
这个方程是飞控姿态解算的核心。每次控制循环,都要用这个方程更新欧拉角。
注意看,当θ接近±90°时,tanθ和1/cosθ会趋于无穷大。这就是万向锁的数学本质。
4.8 坐标系转换的工程实践
在实际飞控代码中,坐标系转换是高频操作。我建议你封装成独立的函数,方便调用。
一个典型的转换流程是:
- 陀螺仪测出p、q、r(机体角速度)
- 用欧拉角微分方程更新姿态
- 用姿态矩阵将加速度计数据从体系转到地面系
- 在地面系下进行导航解算
- 将控制指令从地面系转回体系,输出给舵面
每一步都涉及坐标系转换。如果转换错了,飞机就会乱飞。我见过最离谱的bug,是有人把旋转矩阵的转置搞反了,结果飞机一上天就倒着飞。
小技巧:写代码时,可以在每个坐标系转换函数里加一个「自检」:用单位向量测试一下,看转换前后长度是否保持不变。如果长度变了,说明矩阵写错了。
4.9 本章小结
这一章我们讲了三个坐标系:地面系、体系、气流系。还讲了欧拉角及其微分方程。
说白了,飞控的核心就是在这三个坐标系之间来回切换。地面系管导航,体系管控制,气流系管气动。欧拉角是连接它们的桥梁。
下一章,我们会用这些坐标系工具,推导出完整的六自由度运动方程。到时候你会发现,坐标系定义清楚了,方程推导就是水到渠成的事。
嗯,今天就到这里。回去把欧拉角微分方程手推一遍,别偷懒。