3. 坐标系与导航基础
做无人机飞控,坐标系是绕不开的第一道坎。我刚开始接触 ArduPilot 时,觉得坐标系这东西太理论了,不就是个参考系嘛。结果第一次调参数,飞机在天上乱转,我才意识到——坐标系搞错了,飞控根本不知道自己在哪。
说白了,坐标系就是给无人机一个「空间语言」。它告诉飞控:哪是前、哪是上、哪是北。没有这个基础,航线设计就是空中楼阁。
3.1 地理坐标系:WGS84
WGS84 是目前全球卫星导航系统通用的地理坐标系。GPS 给出的经纬度,就是基于这个标准。
它的核心逻辑很简单:用经度、纬度、海拔来描述地球上的一个点。地球被近似为一个椭球体,WGS84 定义了它的长半轴、短半轴和扁率。
| 参数 | 值 | 说明 |
|---|---|---|
| 长半轴 a | 6378137.0 m | 赤道半径 |
| 短半轴 b | 6356752.3142 m | 极半径 |
| 扁率 f | 1/298.257223563 | 地球椭球体扁平程度 |
在 ArduPilot 里,所有航点坐标都存为 WGS84 格式。你在地图上点一个点,飞控拿到的是经纬度,然后换算成本地坐标去执行。
3.2 机体坐标系
机体坐标系是固定在无人机上的。原点在飞机重心,X 轴指向机头,Y 轴指向右翼,Z 轴指向下方。
为什么要单独搞一个机体坐标系?因为飞控的传感器——陀螺仪、加速度计——都是装在飞机上的。它们测量的数据,天然就是机体坐标系下的。
举个例子:加速度计测到 X 轴方向有 9.8 m/s² 的加速度。这不一定代表飞机在向前加速,也可能是飞机仰头了,重力分量落到了 X 轴上。
3.3 NED 坐标系
NED 是 North-East-Down 的缩写。原点在飞机当前位置,X 轴指向北,Y 轴指向东,Z 轴指向地心。
这个坐标系有什么用?它把地球曲面「拍平」了。在局部小范围内,我们可以把地球近似成平面,用 NED 坐标做位置控制。
ArduPilot 的导航算法,本质上就是在 NED 坐标系下算位置偏差,然后换算成机体坐标系下的控制指令。
3.4 航向角 / 俯仰角 / 横滚角
这三个角定义了飞机的姿态。我习惯把它们叫做「飞机的三个自由度」。
- 航向角(Yaw):绕 Z 轴旋转。机头指向的方向,0° 为正北,顺时针为正。
- 俯仰角(Pitch):绕 Y 轴旋转。机头抬起为正,低下为负。
- 横滚角(Roll):绕 X 轴旋转。右翼抬起为正,左翼抬起为负。
在 ArduPilot 里,这三个角的数据来自姿态估计算法(EKF 或互补滤波)。它们决定了飞控如何输出电机指令。
3.5 GPS 定位原理与精度
GPS 的原理,说白了就是「三边测量」。卫星告诉你它的位置和信号发射时间,你的接收机算出信号传播时间,乘以光速,得到距离。有三颗卫星就能解出三维位置。
但实际没那么简单。卫星钟差、电离层延迟、多路径效应……各种误差源都会影响精度。
| 误差源 | 典型影响 | ArduPilot 应对方式 |
|---|---|---|
| 电离层延迟 | 2-5 m | 双频接收机 / SBAS 修正 |
| 卫星钟差 | 1-2 m | 广播星历修正 |
| 多路径效应 | 0.5-10 m | 天线位置优化 / 滤波器 |
| 几何精度因子 | 随卫星分布变化 | 选择 PDOP < 3 的时段 |
普通 GPS 模块的精度在 2-5 米。如果要做精准航线作业,比如植保无人机,建议用 RTK-GPS,精度可以到厘米级。
3.6 坐标系与导航基础结构图
下面这张图把本章的核心知识点串起来了。你可以看到 WGS84、机体坐标系、NED 坐标系之间的关系,以及它们如何支撑姿态角和 GPS 定位。
你想想看,没有坐标系,飞控怎么知道「向前飞」是朝哪个方向?GPS 给的是经纬度,飞控要转成 NED 坐标,再结合姿态角算出电机转速。每一步都离不开坐标系。