四旋翼无人机 推力分配模拟器 返回
无人机控制·航空器

四旋翼无人机 推力分配模拟器

四旋翼无人机用 4 个马达推力仅仅控制总推力和 3 轴力矩(横滚、纵倾、偏航)共 4 个自由度。本工具针对 X/+/H 机架分别实时求解分配矩阵,可视化 4 个马达各自的必要推力和「还能踩多少」的推力余裕。

参数设置
机体质量 m
kg
臂长 L
m
机架形式
机头与翼的配置。X 字是现代主流
横滚角 φ
°
纵倾角 θ
°
偏航速率 ψ̇
°/s
竖直加速度 a_z
m/s²
悬停=0,上升+,下降-
推力系数 k_T
N/(rad/s)²
力矩系数 k_M
N·m/(rad/s)²
计算结果
必要总推力 T (N)
马达 1 推力 (N)
马达 2 推力 (N)
马达 3 推力 (N)
马达 4 推力 (N)
推力余裕 (%)
四旋翼平面图 — 推力·偏航方向·姿态

4 个圆表示马达,棒的长度与各马达的必要推力成正比。中央的箭头为偏航方向,机体的倾斜表示横滚和纵倾。

4 马达推力分配
推力分配 vs 横滚角 φ
理论·主要公式

$$T_{total} = \frac{m\,(g + a_z)}{\cos\phi\cos\theta},\qquad [T_1, T_2, T_3, T_4]^T = A^{-1}\,[T, M_\phi, M_\theta, M_\psi]^T$$

A 为分配矩阵(4×4)。对于对称配置的四旋翼,A 的逆矩阵可解析求得,各马达的必要推力可代数方式获得。

$$M_\phi = I_{xx}\,\dot\omega_\phi,\quad M_\theta = I_{yy}\,\dot\omega_\theta,\quad M_\psi = I_{zz}\,\dot\omega_\psi,\qquad I_{xx}\!\approx\!I_{yy}\!\approx\!\tfrac{1}{2}mL^2,\ I_{zz}\!\approx\!mL^2$$

必要力矩为惯性矩 I 与角加速度 ω̇ 的乘积。本工具在简化模型中用横滚、纵倾增益 5 和偏航速率微分系数 0.05 来生成 ω̇。

$$T_i = k_T\,\omega_i^2,\qquad \tau_i = k_M\,\omega_i^2$$

螺旋桨推力 T_i 与转速 ω_i 的平方成正比,反作用力矩 τ_i 也与同一的 ω² 成正比。通过顺逆交替配置可以抵消 τ,在保持推力的同时仅保留偏航力矩。

四旋翼无人机推力分配 — 4 马达控制分配

🙋
无人机怎么用 4 个翅膀做到前进和转向的?螺旋桨的方向没有变化,也没有像直升机那样的尾桨。
🎓
问得好。四旋翼靠的不是「螺旋桨方向」,而是「4 个转速的差异」来实现所有动作。想前进时就让前面 2 个马达转速稍低,后面 2 个转速稍高,这样机头会向前倾斜,总推力矢量就指向斜前方。既能平衡重力,又能产生向前的力。转向更复杂一些,通常 2 个螺旋桨顺时针,2 个逆时针交替配置,在全部马达转速相同时偏航力矩会抵消。如果增加顺时针一侧、减少逆时针一侧(总推力保持不变),机体就会获得净的偏航力矩,向顺时针方向缓慢转向。
🙋
原来如此!那「推力分配」就是「哪个马达应该转多快」这个问题的答案,对吧?
🎓
完全正确。专业术语叫 Control Allocation 或 Mixer,是 PX4、ArduPilot、Betaflight 等主流飞控的核心模块。输入是「总推力 T 和 3 轴力矩 M_φ, M_θ, M_ψ」这 4 个值,输出是「马达 1~4 的推力 T1~T4」这 4 个值。它们之间用一个 4×4 的分配矩阵 A 连接,对于对称机体来说 A 的逆矩阵形式很漂亮。看起来是线性代数问题,但实际应用的复杂性才刚开始。
🙋
线性代数而已,怎么会复杂?
🎓
两大难点。第一个是「马达有上下限」。逆矩阵的解可能给出 T_i < 0 或 T_i > T_max,但现实中马达不能出负推力,也不能超过最大值。这叫「饱和」,在急速机动或超载时经常发生。处理方法包括伪逆矩阵 + 限制、二次规划(QP)、优先级分配的零空间配分等。第二个是「机架形状会改变矩阵」。+ 字和 X 字的马达排列相差 45°,所以系数矩阵的形式不同。你在这个工具里切换「机架形式」,就能看到同样的姿态指令,4 个马达的分配方式完全不同。
🙋
右上的「推力余裕」是什么意思?悬停时显示约 66%。
🎓
这是「还能踩多少油门」的指标,计算方式是 (马达最大推力 − 4 个马达中最大的 T_i) / 马达最大推力。竞速无人机通常推重比 3~5,也就是悬停时大约 25% 油门,还剩 75% 的余量。本工具假设「马达能输出悬停推力的 3 倍」,所以默认条件下正好是 66%。如果低于 20%,红灯亮,任何急机动、阵风、电压下降其中之一,马达都会饱和→控制失效→坠毁。重型无人机比如 Inspire 2 推力余裕薄,机动要很谨慎。
🙋
六旋翼切换成什么会有不同的效果?只是推力增加 1.5 倍吗?
🎓
远不止推力增加。更大的意义是「容错性」。四旋翼一个马达坏就无法挽救,但六旋翼一个马达故障、剩下 5 个还能重新分配、继续飞行(偏航控制会变弱,但可以维持)。DJI Matrice、Boston Dynamics LS3、农业植保无人机等产业级机型多数用六旋翼或八旋翼,就是为了这种冗余性。消费者级的 Mavic、Skydio 维持四旋翼,是性能、成本、维护的平衡。本工具的六旋翼其实是「4 马达等效物」的简化,但你能感受到精神。

常见问题

四旋翼无人机用 4 个马达推力 T1~T4 这 4 个输入,控制总推力 T 和 3 轴力矩(横滚 M_φ、纵倾 M_θ、偏航 M_ψ)共 4 个自由度。这可以用 [T; M_φ; M_θ; M_ψ] = A·[T1; T2; T3; T4] 这样一个 4×4 的分配矩阵 A 表示。根据所期望的 T 和 M 求取各个马达的推力,需要对 A 矩阵求逆。这被称为推力分配(Control Allocation, Mixer),是姿态控制环路之后、马达指令之前的基本模块。
+ 机架中 4 个马达分别位于前后左右,所以前后马达的差会直接产生纵倾力矩,左右马达的差会产生横滚力矩(系数为 1/(2L))。X 机架中机体轴穿过翼间的中央,所有马达对横滚和纵倾都有贡献。有效臂长为 L/√2,纵倾和横滚的系数为 1/(4·L/√2)。X 机架的实际优点是前后左右位于马达之间,机头方向的摄像头视野中不会被螺旋桨挡住。
螺旋桨在产生推力的同时,也会向机体施加反作用力矩(reaction torque, k_M·ω²)。如果 4 个螺旋桨中 2 个顺时针,2 个逆时针交替排列,那么在全部马达转速相同时偏航力矩会相互抵消。如果增加顺时针一侧、减少逆时针一侧(保持总推力不变),机体就会获得净的偏航力矩,向顺时针方向缓慢转向。这是偏航控制的原理,PX4、ArduPilot、Betaflight 等所有主流飞控都用这种方式实现偏航通道。
分配结果中某个马达推力 T_i 超过马达最大值(通常是悬停推力的 3 倍)时即为「饱和」状态。实际马达不能再增加油门,因此无法产生所需的力矩,机体会失去控制。短时间饱和还能接受,但在急速机动(大横滚、纵倾)或超载状态下,推力余裕相对悬停推力很小时,饱和会持续发生,是坠毁的主要原因。解决办法包括:(1) 减轻机体重量 (2) 换用更高 KV 的马达和更大直径螺旋桨 (3) 在控制律侧使用伪逆矩阵 + 优先级分配的零空间配分(prioritized null-space allocation)等。

实际应用

消费级无人机:DJI Mavic 系列、Skydio 2、Parrot Anafi 等都是四旋翼(X 机架)构成,本工具涉及的分配矩阵在飞控内部每个控制周期(通常 1 kHz)求解一次。Mavic 3 这种可变载重的机器,由于电池剩余量和云台方向导致重心移动,推力余裕会动态变化,姿态控制律必须考虑这一点。

产业级与农业无人机:DJI Matrice 350、Agras T50、Yamaha FAZER R 等多用六旋翼或八旋翼构成,目的是 1 个马达故障仍能安全降落,属于容错设计。本工具说的「六旋翼」模式就对应这类机型的推力余裕充足。农业植保机在装载液体时重心大幅移动,需要实时质量估算和分配矩阵再标定。

竞速无人机(FPV):5 英寸级 FPV 机推重比 5~8,远超常规机型,本工具所说的推力余裕能达到 80% 以上,才能实现 100 度/秒量级的急速横滚纵倾。Betaflight 的混控器在 X 机架分配矩阵基础上加了「Air Mode」防饱和逻辑,与本工具保守的 3:1 设定完全不同世界。

城市型 eVTOL(电动垂直起降飞行汽车):Joby、Lilium、Volocopter 等飞行汽车配备 6~36 个马达的分布式电推系统,本质上就是「超大型多旋翼」的推力分配问题。1 个马达故障时的重新分配是安全认证的必需条件,现场采用基于二次规划的动态分配方案,是本工具六旋翼思想的专业版。

常见误区与注意事项

第一个陷阱是以为「求逆矩阵就完事儿」。如本工具所示,机体大角度倾斜或偏航速率急剧变化时,某些马达的 T_i 会变成负数或超过最大值,出现饱和。纯线性代数轻易输出负值,但现场实现必须加「饱和判定→优先级重分配→余量分到其他自由度」的非线性限幅逻辑。消费级 DJI 产品能维持温和的姿态和缓慢转向,一个重要原因就是运动规划侧制约了饱和的发生。

第二个误解是「推力系数 k_T 和反作用系数 k_M 是常数」。本工具做了这个假设,但实机中 (1) 飞行速度(后面螺旋桨进入乱流),(2) 地面效应(靠近地面时推力增加),(3) 电池电压降低,都会改变 k_T。Betaflight 的「Throttle Boost」和 PX4 的「Battery-compensated throttle」就是用前馈补偿这类模型偏差的。实装时别假设「名义 k_T 就够了」,要考虑 10~30% 的补偿余量。

第三个过度相信是「六旋翼八旋翼就是安全的」。确实有 1 马达故障的冗余性,但如本工具所示,偏航力矩靠反作用力矩差异产生,对角马达同时失效的话只有偏航控制失效,这是一个漏洞。Boston Dynamics 和日本山叶的产业机采用八旋翼,原因是「无论哪个马达坏掉,剩下的组合都能保留偏航控制」的配置存在,是比单纯「数量冗余」更深层的设计考量。

使用指南

  1. 输入机体质量(kg)和臂长(m)。例如可设置与 DJI M300 RTK 相当的 9kg、臂长 0.68m。
  2. 设置横滚角和纵倾角(度),指定机体姿态。悬停时两角均为 0°,前进飞行时纵倾角设为 -10~-20°。
  3. 模拟器计算 4 个马达的必要推力(N)和推力余裕(%),显示各马达推力是否在最大定格值以内。

具体计算示例

机体质量 1.2kg、臂长 0.25m、横滚 0°、纵倾 0° 的悬停状态:必要总推力为 1.2kg × 9.8m/s² = 11.76N。X 机架配置(马达 1=前右、马达 2=后左、马达 3=前左、马达 4=后右)时,各马达输出推力约 2.94N(11.76N ÷ 4)。若使用最大推力 15N 的马达,推力余裕约 80%。将纵倾角改为 -15° 前进飞行,前侧马达(1,3)推力增加,后侧马达(2,4)推力减少。

实际应用注意事项