做无人机仿真(如 AirSim/Colosseum/PX4)时,会反复用到下面这些概念。


一、坐标系与姿态

1.1 常用坐标系

坐标系 含义 仿真里的用法
NED(North-East-Down) 北-东-地,x 北、y 东、z 向下 AirSim、PX4、很多飞控用 NED 做「世界系」
ENU(East-North-Up) 东-北-天,z 向上 部分视觉、ROS 用 ENU
机体系(Body) 原点在质心,x 前、y 右、z 下(NED 约定) 传感器输出、推力/力矩、角速度 pqr 都在机体系

仿真里要先约定世界系是 NED 还是 ENU,所有公式、接口统一,避免符号和轴搞反。

1.2 姿态的几种表示

表示 含义 优点 缺点
欧拉角(roll, pitch, yaw) 绕 3 个轴依次转动的角度(° 或 rad) 直观,便于调试、可视化 万向锁、插值不线性
四元数(q0,q1,q2,q3) 4 个数表示旋转,单位四元数 无万向锁、积分简单、插值好 不直观
旋转矩阵(3×3) 机体相对世界系的旋转 变换向量、推导公式方便 9 个数、有约束

仿真里内部状态常用四元数积分姿态,输入/输出可以再转成欧拉角(日志、地面站、ThunderView 等)。

1.3 欧拉角顺序

常见 ZYX(先 yaw 再 pitch 再 roll)。不同顺序会得到不同欧拉角,写公式、对接口时要和飞控/文档一致(例如 PX4、AirSim 用哪种顺序)。


二、刚体运动学与动力学

2.1 状态量(你要积分的东西)

维度 单位 含义
位置 3(x,y,z) m 质心在世界系下的位置
速度 3(vx,vy,vz) m/s 质心在世界系下的线速度
姿态 4 或 3 四元数或欧拉角 机体相对世界系的朝向
角速度 3(p,q,r 或 ωx,ωy,ωz) rad/s 机体系下的旋转快慢

仿真里通常维护:位置、速度、四元数、角速度,每步用动力学算加速度和角加速度,再积分更新状态。

2.2 平动方程(牛顿第二定律)

ma=Ftotal=Fthrust+Fgravity+Fdrag+ m \mathbf{a} = \mathbf{F}_{total} = \mathbf{F}_{thrust} + \mathbf{F}_{gravity} + \mathbf{F}_{drag} + \ldots
  • 重力:世界系下一般为 (0, 0, +g) 或 (0, 0, −g),取决于 NED/ENU 和 g 的符号约定。
  • 推力:由桨产生,在机体系下通常是沿机体 z 轴;要乘以机体→世界的旋转矩阵再加到世界系合力里。
  • 阻力:与速度相关,Fdragv\mathbf{F}_{drag} \propto -\mathbf{v}vv-\mathbf{v}\lVert\mathbf{v}\rVert,系数即前面说的线阻力系数。

仿真里:每步算总力 → a = F/m → 对 a 积分得 v,再积分得 position

2.3 转动方程(欧拉方程)

Iω˙+ω×(Iω)=Mtotal \mathbf{I} \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (\mathbf{I} \boldsymbol{\omega}) = \mathbf{M}_{total}
  • I:转动惯量矩阵,常用对角 Ixx, Iyy, Izz(机体主轴惯量)。
  • ω:机体系角速度 (p, q, r)。
  • M:总力矩(桨产生的力矩 + 角阻力等);ω × (Iω) 是陀螺项,不能省。

仿真里:已知 M 和当前 ω,可解出 ω˙\dot{\boldsymbol{\omega}},积分得 ω;再用 ω 积分/更新四元数(有标准微分方程)。


三、多旋翼的力与力矩

3.1 单桨推力与力矩

  • 推力T=CTρn2D4T = C_T \rho n^2 D^4(n 转速,D 桨径,ρ 空气密度,CTC_T 推力系数)。
  • 反扭力矩Q=CPρn2D5/(2π)Q = C_P \rho n^2 D^5 / (2\pi)CPC_P 功率系数)。
  • 仿真里常用简化:推力 ∝ 指令² 或线性,再配合 C_T / C_P 或查表。

3.2 四桨如何产生合力/力矩

  • 总推力:四桨推力之和,沿机体 z 轴(再转到世界系参与平动)。
  • 滚转力矩:左右桨推力差 × 臂长。
  • 俯仰力矩:前后桨推力差 × 臂长。
  • 偏航力矩:两对桨反扭之差(CW/CCW 各两个)。

分配关系写成 4×4 或 4×1 的混控矩阵,和 PX4/SimpleFlight 的混控一致,仿真出来的响应才像实机。

3.3 阻力(线阻力 / 角阻力)

  • 线阻力Fdrag=klinearv\mathbf{F}_{drag} = -k_{linear} \mathbf{v}(或与 v\lVert\mathbf{v}\rVert 成正比),减缓平动。
  • 角阻力Mdrag=kangularω\mathbf{M}_{drag} = -k_{angular} \boldsymbol{\omega},减缓转动。

LinearDragCoefficient / AngularDragCoefficient、火箭形与 X 四旋翼的差异,就是这些系数。


四、数值积分(时间推进)

4.1 为什么需要积分

动力学给出的是加速度 a\mathbf{a}角加速度 ω˙\dot{\boldsymbol{\omega}};要得到下一时刻的位置、速度、姿态、角速度,必须对时间积分。

4.2 常用方法

方法 公式思路 精度 计算量 适用
欧拉 xn+1=xn+x˙ndtx_{n+1} = x_n + \dot{x}_n \cdot dt 一阶 快速原型、大步长时易发散
RK2(中点) 用半步斜率再算一步 二阶 折中
RK4 用 4 个斜率加权 四阶 离线/高精度仿真常用

仿真步长 dt 要足够小(如 1–5 ms),否则高阶动力学会不稳定;和实机/飞控对比时,dt 最好和飞控控制周期同量级。

4.3 四元数积分

姿态不用欧拉角直接积分(会万向锁),而是用 ω 和当前四元数 q 的微分关系:

q˙=12Ω(ω)q \dot{q} = \frac{1}{2} \Omega(\boldsymbol{\omega}) q

有标准离散化公式(如零阶保持、一阶积分),仿真里按一种写死并和文档一致即可。


五、传感器模型(仿真要「造」的数据)

5.1 IMU(加速度计 + 陀螺)

输出 物理量 仿真里怎么给
加速度计 比力(除去重力后的加速度) 用当前 a(世界系)转到机体系,再减机体系下的重力,可加零偏/噪声
陀螺 机体角速度 ω 直接用当前 ω,可加零偏/噪声

HIL 时,仿真把这两类数据发给飞控,所以单位、坐标系、符号要和 PX4 约定一致(NED、m/s²、rad/s)。

5.2 GPS

  • 输出:经纬高、速度(或只位置)。
  • 仿真:由世界系位置加原点偏移转成经纬高;速度由世界系速度或数值微分得到;可加延迟、噪声、多路径等。

5.3 磁强计、气压计

  • 磁强计:与机体姿态、地磁矢量相关,仿真里按姿态和当地地磁方向算,再加噪声。
  • 气压计:与高度、大气模型相关,仿真里可由高度换算气压,再加噪声。

这些在 AirSim/Colosseum 里大多已有模型,自研 FDM 时只要保证位姿、速度正确,传感器层可以后接。


六、控制与混控(和仿真的关系)

6.1 控制层级(典型)

  1. 位置环:目标位置 → 目标速度或加速度。
  2. 速度环:目标速度 → 目标姿态(如前倾角)或推力。
  3. 姿态环:目标姿态 → 目标角速度。
  4. 角速度环:目标角速度 → 力矩或桨指令。
  5. 混控:力矩/推力指令 → 四个电机指令。

仿真可以只做动力学(输入四电机指令,输出状态);飞控(或仿真里的简化控制器)负责上面各环。做 HIL 时,仿真只提供「机体真实状态→传感器」,控制全在真飞控里。

6.2 混控

总推力 + 滚/俯/偏力矩 变成 4 个电机指令。X 四旋翼有标准 4×4 矩阵;火箭形公式相同,只是惯量、阻力不同导致响应不同,混控矩阵可以不变。


七、仿真专用注意点

7.1 实时与欠实时

  • HIL:仿真要实时或略快于实时,否则飞控会「感觉」时间不对。
  • 离线:可以超实时(大步长、少渲染),只关心轨迹和逻辑。

7.2 初始条件与稳定性

  • 初始姿态要一致(如水平);初始角速度为 0 或小量;位置要在场景内。
  • 质量、惯量、桨效、阻力要在合理范围,否则积分会发散(例如推力不足以悬停、惯量取错导致角速度爆炸)。

7.3 单位与符号

  • 全用 SI:m, kg, s, rad, N, N·m。
  • 重力方向、NED/ENU、欧拉角顺序、角速度正方向,全文档化并在代码里统一,避免「看起来公式对却飞反了」。

7.4 与实机对齐(数字孪生)

  • 参数:质量、Ixx/Iyy/Izz、阻力、桨效 从称重、CAD、辨识来。
  • 验证:同一操纵(阶跃油门、阶跃姿态)下,对比仿真 vs 实飞的角速度、高度、速度曲线,迭代调参数。

八、按主题的速查

你想做/理解… 需要掌握
坐标系、画轨迹、对日志 坐标系(NED/ENU)、姿态表示(欧拉/四元数)、单位
写/改 6-DOF 动力学 平动/转动方程、推力/力矩、阻力、积分(欧拉/RK4)、四元数积分
和实机像 转动惯量 Ixx/Iyy/Izz、角速度、质量、阻力、桨效、参数获取与辨识
接飞控 HIL 传感器模型(IMU/GPS)、单位与坐标系、实时与时间步长
调控制/混控 控制层级、混控矩阵、角速度环与姿态环

九、延伸概念速览

转动惯量(Ixx / Iyy / Izz)

描述绕机体三根轴转动时「有多难被拧动」:惯量越大,同样力矩下角加速度越小。单位 kg·m²。火箭形截击机通常 Izz 小、Ixx/Iyy 大,与短粗 X 四旋翼比例相反。

角速度(ω 或 p, q, r)

描述绕某轴转动的快慢,单位常用 rad/s。陀螺仪测的就是机体角速度;飞控用角速度做内环;仿真里对角速度积分得到姿态变化。