4. 坐标系与姿态表示

在GNSS拒止环境下,无人机无法依赖卫星提供绝对位置与航向,飞控必须完全依靠IMU、磁力计、气压计、视觉与激光等机载传感器推算自身状态。而所有传感器数据要融合成可用的位置、速度与姿态,第一步就是统一“语言”——坐标系与姿态表示。坐标系定义了“相对于谁描述”,姿态表示定义了“如何描述朝向”,坐标变换则把不同传感器、不同参考系下的量统一到同一计算框架中。若这一层出错,后续的卡尔曼滤波、路径规划与控制器都会在错误基准上运行。

一、四类核心坐标系

工程中通常同时使用四类坐标系,它们各自承担不同职责:

  • 惯性坐标系(i系,ECI):原点在地心,坐标轴指向恒星,不随地球自转。它用于描述卫星轨道、重力模型等长周期物理量,在无人机短时导航中主要作为理论基准。
  • 地球坐标系(e系,ECEF):原点在地心,随地球自转,z轴指向北极,x轴指向本初子午线与赤道交点。GNSS原始定位结果通常先落在ECEF,再转换为经纬高。
  • 导航坐标系(n系,NED/ENU):原点位于无人机所在位置,北-东-地(NED)或东-北-天(ENU)三轴构成局部水平坐标。它是飞控解算位置、速度、姿态的主坐标系,也是路径规划常用的工作系。
  • 机体坐标系(b系):原点在无人机质心,x轴指向机头,y轴指向右翼,z轴指向机腹(前右下)。IMU的加速度计与陀螺仪直接测量的是b系下的比力与角速度。

四者之间的转换关系可以概括为:i系与e系之间是地球自转角的旋转;e系与n系之间由经纬度决定;n系与b系之间由无人机姿态决定。工程上最频繁使用的是n系与b系之间的变换,也就是姿态矩阵。

坐标系层级与姿态变换关系 惯性坐标系 i ECI · 地心恒星定向 轨道/重力理论基准 地球坐标系 e ECEF · 随地球自转 GNSS 原始定位 导航坐标系 n NED / ENU 局部水平 位置/速度/姿态主系 机体坐标系 b 前-右-下 IMU 直接测量 自转角 经纬度 姿态 n 系 ↔ b 系 姿态表示与变换 欧拉角 滚转 φ · 俯仰 θ · 偏航 ψ 直观、易读 万向节死锁风险 旋转矩阵 R 3×3 正交矩阵 直接作用于向量 9 参数冗余 四元数 q q = [w, x, y, z] 无死锁、插值平滑 飞控内部首选 v^n = R_nb · v^b  R_nb = R_z(ψ)·R_y(θ)·R_x(φ) 机体测量 → 导航系表达;反向用 R_bn = (R_nb)^T

二、姿态表示:三种语言的取舍

姿态描述的是机体坐标系相对于导航坐标系的旋转关系。工程上常用三种等价表示:

  1. 欧拉角:用滚转φ、俯仰θ、偏航ψ三个角描述,最符合人的直觉,适合地面站显示与调试。但存在万向节死锁:当俯仰接近±90°时,滚转与偏航耦合,解算会奇异。
  2. 旋转矩阵:3×3正交矩阵,可直接左乘向量完成坐标变换,无奇异。但9个参数中只有3个自由度,数值积分后需反复正交化,计算与存储开销较大。
  3. 四元数:4个参数,满足单位模约束,无死锁,姿态更新只需四元数乘法,插值(SLERP)平滑,是飞控内部姿态传播与滤波的首选表示。

三者的转换关系是工程实现的关键。四元数转旋转矩阵、旋转矩阵转欧拉角、欧拉角转四元数都有标准公式,飞控中通常以四元数为内部状态,仅在显示或控制律需要时转换为欧拉角。

三、坐标变换的工程流程

以一次典型的IMU数据融合为例,坐标变换流程如下:

1. IMU 输出 b 系比力 f_b 与角速度 ω_b
2. 用四元数 q_nb 将 f_b 旋转到 n 系:f_n = R(q_nb) · f_b
3. 在 n 系中扣除重力 g_n = [0, 0, g]^T,得到运动加速度 a_n
4. 积分 a_n 得速度 v_n,再积分得位置 p_n
5. 用 ω_b 更新四元数:q_nb ← q_nb ⊗ Δq(ω_b·dt)
6. 归一化 q_nb,并按需转换为欧拉角供控制使用

注意第3步:加速度计测量的是比力,包含重力反作用,必须先旋转到n系再扣除重力,顺序不能颠倒。若在b系直接扣重力,会引入随姿态变化的误差。

四、典型场景与常见误区

在GNSS拒止的室内穿越场景中,无人机从室外进入室内,导航系原点若仍固定在室外起飞点,长距离飞行后局部水平面近似会引入误差。工程上常采用“局部导航系重置”或“视觉里程计相对坐标系”来缓解。

常见误区:
  • 把欧拉角直接用于长航时姿态积分,俯仰接近90°时解算发散。
  • 四元数更新后忘记归一化,模长漂移导致旋转矩阵不再正交。
  • 混淆NED与ENU:同一组数据在两种约定下z轴方向相反,高度与俯仰符号会整体出错。
  • 坐标变换顺序写反:R_nb与R_bn互为转置,用错方向会让速度、位置全部反向。

五、关键参数与表示对照

表示方法 参数个数 自由度 奇异/死锁 典型用途
欧拉角 3 3 有(俯仰±90°) 显示、调试、控制指令
旋转矩阵 9 3 无 向量变换、坐标投影
四元数 4 3 无 姿态传播、滤波、插值
工程建议:飞控内部统一用四元数维护姿态,接口层再转换为欧拉角或旋转矩阵;所有涉及n系与b系的变换,明确标注R_nb还是R_bn,并在单元测试中用已知姿态验证变换方向,避免“转置错误”这类低级但致命的bug。

坐标系与姿态表示是GNSS拒止自主导航的数学地基。只有把i、e、n、b四系关系理清,把欧拉角、旋转矩阵、四元数三种表示用对,把变换方向与顺序写准,后续的多传感器融合、状态估计与轨迹控制才有可靠的计算基础。