第二章 坐标系与运动学基础
各位同学,今天我们来聊聊固定翼编队飞行中最基础、也最容易让人头疼的部分——坐标系和运动学。说实话,我刚开始做无人机那会儿,觉得坐标系这东西不就是个参考系嘛,有啥好学的?直到第一次试飞时,飞机在空中翻了个跟头,地面站显示的数据完全对不上,我才意识到——坐标系没搞对,后面全是白搭。
2.1 地球坐标系:我们到底在哪儿?
地球坐标系,说白了就是告诉飞机「你在哪儿、往哪儿飞」。常用的有两种:
- 地理坐标系(NED):北-东-地,右手系。我习惯用这个,因为直观。
- 地心地固坐标系(ECEF):原点在地心,适合全球导航。
实际项目中,我们通常用NED做控制,用ECEF做长距离规划。嗯,这里要注意:GPS给的是经纬高,得先转成NED才能用。我曾经在编队测试时,直接拿经纬度算相对位置,结果两架飞机差点撞上——因为没考虑地球曲率。
核心公式:经纬度转NED
// 简化版:假设地球为球体
dx = (lon - lon0) * R * cos(lat0)
dy = (lat - lat0) * R
dz = alt - alt0
R ≈ 6371000米,lat0/lon0为参考点。
2.2 机体坐标系:飞机自己的视角
机体坐标系固定在飞机上,原点在重心,x轴指向机头,y轴指向右翼,z轴指向下(符合右手定则)。
为什么需要它?因为传感器(IMU、空速管)测量的数据都是相对于机体的。你想想看,飞机侧倾时,GPS说它在往北飞,但机头其实朝东——这时候就得靠坐标系转换。
我的经验:机体坐标系下,滚转角速度p、俯仰角速度q、偏航角速度r,这三个量在控制律里直接对应舵面偏转。我曾经在调试时发现滚转响应慢,查了半天发现是p和r搞反了——低级错误,但很容易犯。
2.3 欧拉角与四元数:姿态的两种表达
姿态描述,说白了就是「飞机相对于地面是怎么摆的」。两种主流方法:
| 方法 | 优点 | 缺点 |
|---|---|---|
| 欧拉角(φ, θ, ψ) | 直观,容易理解 | 万向锁,插值困难 |
| 四元数(q0, q1, q2, q3) | 无奇点,适合计算 | 不直观,难调试 |
欧拉角:滚转φ、俯仰θ、偏航ψ。旋转顺序我习惯用Z-Y-X(偏航→俯仰→滚转)。为什么?因为符合人的直觉:先看方向,再抬头,最后侧身。
四元数:q = q0 + q1*i + q2*j + q3*k,模长为1。说白了就是「绕某个轴转某个角度」的数学表达。我刚开始学的时候也觉得抽象,但后来发现它在姿态解算里太好用了——没有万向锁,而且计算效率高。
避坑指南:我曾经在编队同步时,用欧拉角做姿态插值,结果飞机在俯仰90°时突然乱转——万向锁!从那以后,所有姿态插值我都用四元数球面线性插值(SLERP)。
2.4 固定翼六自由度运动方程
六自由度,就是三个平动(x, y, z)加三个转动(φ, θ, ψ)。固定翼的运动方程,说白了就是牛顿第二定律在飞机上的应用。
力方程(平动):
m * (dV/dt + ω × V) = F_aero + F_gravity + F_thrust
其中V是速度向量,ω是角速度,F_aero是气动力(升力、阻力、侧力)。
力矩方程(转动):
I * dω/dt + ω × (I * ω) = M_aero
I是惯性张量,M_aero是气动力矩(滚转、俯仰、偏航)。
这两个方程联立,就是固定翼飞行的完整动力学模型。实际仿真时,我们通常把它写成状态空间形式:
状态量:x = [u, v, w, p, q, r, φ, θ, ψ, X, Y, Z]
输入量:u = [δe, δa, δr, δt] // 升降舵、副翼、方向舵、油门
我的建议:初学者别急着搞全量方程。先从纵向(俯仰+速度)和横侧向(滚转+偏航)分开学,搞懂了再合起来。我在做编队控制时,就是先解耦了纵向和横侧向,调试效率高很多。
2.5 知识体系总览
下面这张图,是我自己总结的坐标系与运动学知识结构。你把它理清了,后面学编队控制就顺了。
这张图里,我特意把「坐标系转换」放在最下面——因为不管你用欧拉角还是四元数,最终都要落到坐标转换上。编队飞行时,每架飞机都有自己的机体坐标,但编队控制是在地球坐标下做的,所以转换是家常便饭。
实用技巧:写代码时,我习惯把坐标转换封装成独立函数,比如 ned_to_body()、euler_to_quat()。这样调试时只要测一个函数,不用满世界找bug。
好了,这一章的内容就到这里。坐标系和运动学是后面所有章节的基石,你把它吃透了,编队控制、通信协议那些就都好办了。下一章我们会深入通信协议,讲讲编队里飞机之间怎么「说话」——嗯,到时候见。