2、无人机基础与坐标系:机体坐标系、地面坐标系、欧拉角与四元数、旋转矩阵、常用单位与转换方法

无人机飞控系统的核心任务之一,是实时、准确地描述无人机在三维空间中的姿态与位置。无论是姿态解算、导航定位,还是轨迹跟踪控制,都离不开一套严谨的坐标系定义与数学表达工具。本章将系统梳理无人机开发中最基础的坐标系体系(机体坐标系与地面坐标系)、姿态描述方法(欧拉角、四元数、旋转矩阵),以及工程中常用的单位与转换流程。这些内容构成了飞控算法(如互补滤波、卡尔曼滤波、PID控制)的数学地基,理解不透彻将直接导致姿态解算发散、控制发散甚至飞行器失控。

无人机姿态描述与坐标系转换关系图 地面坐标系 (NED) 原点:起飞点/机体质心投影 X_N → 北 (N) Y_E → 东 (E) Z_D → 地 (D, 向下) 导航/位置控制基准 机体坐标系 (BRF) 原点:无人机重心 X_B → 机头方向 Y_B → 右翼方向 Z_B → 机体下方 IMU/传感器测量基准 姿态描述方法 ① 欧拉角 (Roll/Pitch/Yaw) ② 旋转矩阵 (3×3) ③ 四元数 (q0~q3) 三者可互相转换 旋转矩阵 R 欧拉角/四元数 欧拉角旋转顺序 (Z-Y-X) 1. 偏航 Yaw (ψ) 绕 Z_N 轴 2. 俯仰 Pitch (θ) 绕 Y' 轴 3. 横滚 Roll (φ) 绕 X'' 轴 四元数 q = [q0, q1, q2, q3] q0 = cos(θ/2) [q1,q2,q3] = sin(θ/2)·n̂ 无万向节锁,适合插值 常用单位与转换 角度 ↔ 弧度: rad = deg × π/180 角速度: rad/s ↔ °/s (×57.3) 高度: m ↔ ft (×3.281) 飞控系统坐标转换工程链路 IMU (加速度/陀螺) → 姿态解算 → 四元数/欧拉角 → 旋转矩阵 → 控制律计算 → 电机输出

2.1 核心原理:两大坐标系的定义与物理意义

无人机飞控中涉及的所有运动学与动力学方程,都必须明确参考系。工程上最常用的是地面坐标系(NED,North-East-Down)与机体坐标系(BRF,Body Reference Frame)。地面坐标系的原点通常取起飞点或无人机重心在地面的投影,X轴指向正北,Y轴指向正东,Z轴垂直向下,构成右手直角坐标系。该坐标系是导航、定位、航迹规划的统一基准,GPS/RTK输出的经纬高数据最终都会转换到NED系下参与位置环控制。

机体坐标系的原点固定在无人机重心,X轴沿机体纵轴指向机头,Y轴垂直于X轴指向右翼,Z轴垂直于机体平面指向下方。IMU(惯性测量单元)中的加速度计与陀螺仪直接测量的是机体坐标系下的物理量,因此所有传感器原始数据都必须经过坐标变换才能用于导航与控制。两个坐标系之间的转换关系由姿态决定,而姿态的数学表达正是本章的核心。

工程要点:在PX4/ArduPilot等开源飞控中,NED系是导航状态估计的默认参考系,而机体系是IMU数据与电机控制量的天然坐标系。任何控制算法(如PID)在计算误差时,必须确保反馈量与期望量处于同一坐标系,否则会出现“看似调参正确但实际飞行发散”的典型问题。

2.2 姿态描述方法:欧拉角、旋转矩阵与四元数

姿态描述本质上是确定机体坐标系相对于地面坐标系的旋转关系。工程中主要有三种表达方式,各有优劣,飞控开发中往往需要频繁切换。

2.2.1 欧拉角(Roll, Pitch, Yaw)

欧拉角通过三次绕不同轴的旋转来描述姿态,飞控中约定使用Z-Y-X内旋顺序(即先偏航、再俯仰、最后横滚)。具体定义为:

  • 偏航角 Yaw (ψ):绕地面系Z_N轴旋转,范围通常为 [-π, π] 或 [0, 2π];
  • 俯仰角 Pitch (θ):绕旋转后的Y'轴旋转,范围 [-π/2, π/2];
  • 横滚角 Roll (φ):绕再次旋转后的X''轴旋转,范围 [-π, π]。

欧拉角的优点是物理意义直观,便于人机交互与调试。但其存在著名的万向节锁(Gimbal Lock)问题:当俯仰角接近 ±90° 时,横滚与偏航的旋转轴重合,导致自由度丢失,姿态解算出现奇异。因此,欧拉角通常仅用于显示与参数记录,不用于内部姿态递推。

2.2.2 旋转矩阵(Direction Cosine Matrix, DCM)

旋转矩阵是一个 3×3 的正交矩阵,记为 R,它将机体坐标系下的向量映射到地面坐标系:v_N = R · v_B。由Z-Y-X顺序生成的旋转矩阵为:

R = Rz(ψ) · Ry(θ) · Rx(φ)

其中:
Rz(ψ) = [cosψ  -sinψ  0;  sinψ  cosψ  0;  0  0  1]
Ry(θ) = [cosθ  0  sinθ;  0  1  0;  -sinθ  0  cosθ]
Rx(φ) = [1  0  0;  0  cosφ  -sinφ;  0  sinφ  cosφ]

旋转矩阵无奇异问题,且可以直接用于向量旋转,但包含9个元素,存在冗余,且多次连续旋转后需正交化修正,计算量较大。在飞控中,DCM常用于将加速度计测量的比力从机体系转换到地面系,以便进行速度与位置积分。

2.2.3 四元数(Quaternion)

四元数是一种超复数,表示为 q = q0 + q1·i + q2·j + q3·k,其中 q0 为标量部分,[q1, q2, q3] 为矢量部分。单位四元数满足 q0² + q1² + q2² + q3² = 1,可描述刚体绕任意轴 n̂ 旋转角度 θ:

q = [cos(θ/2), sin(θ/2)·n̂x, sin(θ/2)·n̂y, sin(θ/2)·n̂z]

四元数避免了欧拉角的万向节锁问题,且仅需4个参数,无冗余,非常适合计算机递推。飞控中姿态解算(如互补滤波、Mahony算法、EKF)普遍使用四元数作为姿态状态量。四元数乘法可表示旋转合成,且归一化操作简单(除以模长),保证了数值稳定性。

描述方法 参数个数 奇异问题 计算效率 工程应用场景
欧拉角 3 有(万向节锁) 高(三角函数) 地面站显示、遥控器输入、姿态指令生成
旋转矩阵 9 无 中(矩阵乘法) 向量坐标变换、加速度计数据投影
四元数 4 无 高(四则运算) 姿态解算核心、控制律内部状态、滤波递推

2.3 判断方法与操作流程:姿态转换的工程实现

在飞控代码中,姿态转换是高频操作。以下给出标准流程与关键判断准则。

  1. 传感器数据读取:从IMU获取原始角速度 (p, q, r) 与加速度 (ax, ay, az),单位分别为 rad/s 与 m/s²。
  2. 姿态初始化:上电时通过加速度计静态对齐估算初始横滚与俯仰角,通过磁力计或外部航向参考获取初始偏航角,生成初始四元数。
  3. 姿态递推:使用陀螺仪角速度通过四元数微分方程更新姿态:
    dq/dt = 0.5 · q ⊗ [0, p, q, r]
    其中 ⊗ 表示四元数乘法。实际代码中采用一阶或二阶龙格-库塔积分。
  4. 姿态校正:利用加速度计测量的重力方向与四元数推算的重力方向之间的误差,通过PI控制器修正陀螺仪漂移(即互补滤波的核心思想)。
  5. 坐标转换:将加速度计数据从机体系转换到地面系:
    a_NED = R(q) · a_body
    其中 R(q) 由四元数生成旋转矩阵。
  6. 单位统一:确保所有角速度统一为 rad/s,角度统一为 rad,加速度统一为 m/s²。若外部输入为角度(如遥控器通道),需先转换为弧度。
风险提示:四元数在长时间运行后可能因数值积分误差导致模长偏离1,必须在每次更新后执行归一化操作。若忽略此步骤,姿态矩阵将失去正交性,导致加速度投影错误,最终引发位置估计漂移甚至控制发散。

2.4 案例拆解:基于四元数的姿态解算与坐标转换实战

以某四旋翼开发项目为例,飞控主控采用STM32F405,IMU为MPU6000(陀螺仪量程 ±2000°/s,加速度计量程 ±8g)。系统上电后,地面站发送解锁指令,飞控进入姿态模式。

初始现象:无人机在地面静止时,地面站显示的Roll/Pitch角在 ±2° 范围内波动,但Yaw角缓慢漂移,约每分钟增加 0.5°。飞行时,飞机出现“低头”现象,且水平位置漂移明显。

关键数据与参数:

  • 陀螺仪零偏:±0.05 °/s(出厂值),但实际温度变化后达 ±0.2 °/s;
  • 加速度计噪声:0.01 g RMS;
  • 控制频率:500 Hz;姿态解算频率:1000 Hz。

分析判断过程:Yaw漂移主要源于陀螺仪Z轴零偏未完全补偿,且磁力计未参与融合。低头现象则是因为加速度计在机体坐标系下的重力分量投影到地面系时,由于姿态误差导致水平加速度计算错误,进而使速度环产生虚假反馈。

实际操作步骤:

  1. 在静止状态下采集1000组陀螺仪数据,计算平均零偏并写入校准参数;
  2. 将姿态解算中的陀螺仪积分改为:
    gyro_bias += 0.001 * error_acc;  // 互补滤波积分项
    gyro_corrected = gyro_raw - gyro_bias;
  3. 将加速度计数据通过旋转矩阵投影到NED系,并减去重力分量 [0, 0, 9.80665];
  4. 在位置控制中,将水平加速度积分前先经过低通滤波(截止频率 20 Hz),抑制高频噪声。

结果对比:修改后,Yaw漂移降至每分钟 0.05° 以内;飞行中低头现象消失,水平位置漂移在10秒悬停测试中从 1.2m 降至 0.15m。

风险与代价:增加互补滤波积分项后,若加速度计受到剧烈振动(如桨叶不平衡),会导致姿态估计引入高频噪声。因此需在积分项前加入死区或动态权重调整。

复盘经验:坐标系转换的精度直接取决于姿态估计的准确性。工程中应优先保证陀螺仪零偏校准与四元数归一化,再考虑滤波算法复杂度。

2.5 常用单位与转换方法

飞控开发中单位错误是低级但致命的错误。以下列出最常用的单位转换关系:

物理量 常用单位 转换关系 典型场景
角度 度 (°) / 弧度 (rad) rad = deg × π/180 ≈ deg × 0.01745 遥控器输入为角度,姿态控制内部用弧度
角速度 °/s / rad/s rad/s = °/s × π/180 陀螺仪输出为°/s,控制律需rad/s
加速度 g / m/s² 1g = 9.80665 m/s² 加速度计输出为g,导航计算用m/s²
高度 米 (m) / 英尺 (ft) 1m = 3.28084 ft GPS高度为m,部分地面站显示ft
速度 m/s / km/h / knot 1m/s = 3.6 km/h = 1.94384 knot 空速管输出为m/s,航迹规划用km/h
经验提醒:在PX4中,所有内部状态变量统一使用SI单位(rad, rad/s, m, m/s, m/s²)。当从MAVLink协议接收外部数据时,必须检查数据字段的单位定义,例如ATTITUDE消息中的roll/pitch/yaw为弧度,而GPS_RAW_INT中的vel为cm/s。建议在代码入口处统一转换为SI单位,避免在算法中反复换算。

2.6 常见误区与总结复盘

在无人机飞控开发中,坐标系与姿态相关错误往往隐蔽且难以排查。以下列出高频误区:

  • 误区一:混淆旋转方向。旋转矩阵 R 表示“从机体到地面”还是“从地面到机体”必须明确。PX4中使用 R_body_to_ned,而部分算法库使用 R_ned_to_body,两者互为转置。若搞反,会导致控制量反向,飞机会立即翻转。
  • 误区二:欧拉角旋转顺序不一致。不同飞控可能采用不同的旋转顺序(如Z-Y-X或Z-X-Y)。在将欧拉角转换为四元数时,必须严格遵循约定顺序,否则姿态解算结果与真实姿态偏差巨大。
  • 误区三:忽略四元数归一化。长时间运行后四元数模长漂移,导致旋转矩阵非正交,加速度投影产生误差。应在每次更新后执行 q = q / ||q||。
  • 误区四:单位混用。将陀螺仪输出的 °/s 直接代入期望 rad/s 的控制律中,会导致角速度环增益缩小57.3倍,表现为飞机反应迟钝或振荡。
  • 误区五:忽略重力补偿。在将加速度计数据用于位置估计时,必须减去重力分量 [0, 0, 9.80665](NED系下)。若未补偿,水平加速度计算将包含重力分量,导致速度发散。
总结复盘:本章内容虽为基础,但贯穿飞控全链路。建议开发者在编写代码前,先绘制坐标系转换关系图,明确每个变量的参考系与单位。在调试阶段,利用地面站同时显示欧拉角、四元数与旋转矩阵元素,对比传感器原始数据与解算结果,可快速定位问题。对于初学者,建议从四元数姿态解算入手,配合互补滤波,逐步过渡到EKF/卡尔曼滤波。掌握本章内容后,后续的动力学建模、控制律设计与状态估计将水到渠成。