两个容易混淆的概念
无人机在平飞时,有两个非常重要的速度概念经常被混淆:
- 平飞所需速度(Required Speed):维持匀速平飞所需的最小速度。本质上就是满足升力等于重力的那个速度,对应的是能否飞起来的问题。
- 平飞有利速度(Best Speed):在所需速度之上的某个特定速度值,能让某种性能指标(航程或航时)达到最大。对应的是怎么飞最划算的问题。
更准确地说,有利速度不是一个速度,而是两个:
| 速度 | 对应性能 | 物理本质 | 关系 |
|---|---|---|---|
| 最大航程速度 \(V_{R_{max}}\) | 飞得最远 | 对应 \((L/D)_{max}\) (总阻力最小点) | \(V_{R_{max}} > V_{E_{max}}\) |
| 最大航时速度 \(V_{E_{max}}\) | 飞得最久 | 对应最小需用功率点 | \(V_{E_{max}}\) 略高于失速速度 |
这两个速度都比失速速度高,但最大航时速度非常接近失速边界。飞最久要飞慢,飞最远要飞快一些。
理论基础
平飞条件
无人机匀速平飞时,升力必须等于重力:
由此解出平飞所需速度:
从这个公式看,只要迎角不超过临界值(\(C_L \leq C_{L_{max}}\)),总有一个速度满足平飞条件。但不同的速度对应不同的阻力,也就对应不同的燃油消耗率。
为什么两个最优速度不同
总阻力由两部分组成:
用平飞条件消去 \(C_L\),得到阻力随速度的变化:
- 低速时(大迎角):诱导阻力占主导,阻力随速度减小而急剧增大(因为需要更大的 \(C_L\))
- 高速时(小迎角):寄生阻力占主导,阻力随速度增大而急剧增大
- 中间某处:两种阻力相等,总阻力最小 —— 这就是 \((L/D)_{max}\) 点
而需用功率是阻力乘以速度:
功率的极小值点比阻力的极小值点出现在更低的速度上(因为功率多乘了一个 \(V\),使得高速端的惩罚更大)。
因此:
- \((L/D)_{max}\) 出现在总阻力的极小值点 \(\frac{dD}{dV}=0\)
- 最小需用功率出现在功率的极小值点 \(\frac{dP_{req}}{dV}=0\)
这两个点不重合。数学推导可得(螺旋桨飞机):
实际无人机由于气动特性、螺旋桨效率变化等因素,比值通常在 1.2~1.5 之间。
航程和航时公式
螺旋桨飞机:
航程(Breguet 航程公式):
航时(Endurance):
- 航程正比于 \(C_L/C_D = L/D\) → 最大航程对应 \((L/D)_{max}\)
- 航时正比于 \(C_L^{3/2}/C_D\) → 最大航时对应 \((C_L^{3/2}/C_D)_{max}\),即最小需用功率点
Python 建模与可视化
下面以一架典型小型无人机为例(JL-6 型参数参考):
- 重量 \(W = 20 \text{ kg} \times 9.81 = 196.2 \text{ N}\)
- 机翼面积 \(S = 0.65 \text{ m}^2\)
- 零升阻力系数 \(C_{D0} = 0.025\)
- 诱导阻力因子 \(k = 0.045\)
核心计算代码:
import numpy as np
rho = 1.225 # 海平面空气密度
W, S, C_D0, k = 196.2, 0.65, 0.025, 0.045
def CL_from_V(V):
"""平飞升力系数"""
return 2 * W / (rho * S * V**2)
def CD(val):
"""阻力系数"""
return C_D0 + k * val**2
def total_drag(V):
"""总阻力"""
c_l = CL_from_V(V)
return 0.5 * rho * V**2 * S * CD(c_l)
def power_required(V):
"""需用功率 (propeller)"""
return total_drag(V) * V
def L_over_D(V):
"""升阻比"""
c_l = CL_from_V(V)
return c_l / CD(c_l)
# 扫描速度范围
V_stall = np.sqrt(2*W / (rho*S*1.6)) # C_Lmax ≈ 1.6
V_range = np.linspace(V_stall, 60, 500)
# 找最优点
V_min_drag = V_range[np.argmin([total_drag(v) for v in V_range])]
V_min_power = V_range[np.argmin([power_required(v) for v in V_range])]
print(f"失速速度: {V_stall:.1f} m/s")
print(f"最大航程速度 (V_min_drag): {V_min_drag:.1f} m/s")
print(f"最大航时速度 (V_min_power): {V_min_power:.1f} m/s")
输出结果:
失速速度: 17.6 m/s ≈ 63 km/h
最大航程速度: 25.7 m/s ≈ 93 km/h (对应 L/D_max)
最大航时速度: 19.5 m/s ≈ 70 km/h (对应最小需用功率)
比值 V_range/V_endurance = 1.32
综合分析图
下图的四个面板展示了完整的平飞性能分析:

左上:总阻力分解为寄生阻力和诱导阻力,两条虚线交叉处为最小阻力点。
右上:需用功率曲线。注意最小功率点(紫色)在最小阻力点(蓝色)左侧。
左下:升阻比 L/D 曲线。峰值对应最大航程。
右下:相对航程(蓝)和相对航时(绿)随速度变化。100% 分别对应各自的最大值,两个最优速度不重合。
动态演示 GIF
下面的动画展示了在不同速度下阻力、升力、功率的变化,以及当前速度对应于航程最优还是航时最优:

速度从略高于失速逐渐增加到最大速度,可以直观看到:
- 低速阶段诱导阻力主导(红色条很高)
- 高速阶段寄生阻力主导(绿色条很高)
- 中间某处总阻力最小 → 最大航程速度
- 稍低速处需用功率最小 → 最大航时速度
小结
| 场景 | 使用速度 | 数值 | 原因 |
|---|---|---|---|
| 刚起飞/防止失速 | \(V > V_{stall}\) | > 17.6 m/s | 升力必须 ≥ 重力 |
| 最大航时(飞最久) | \(V_{E_{max}}\) | ~19.5 m/s | 对应最小需用功率 |
| 最大航程(飞最远) | \(V_{R_{max}}\) | ~25.7 m/s | 对应最大升阻比 \((L/D)_{max}\) |
| 快速到达/巡航 | \(V > V_{R_{max}}\) | > 25.7 m/s | 牺牲效率换速度 |
对于实际操作: - 需要在空中停留尽可能长的时间(监视、 loitering),飞最小时功率速度 - 需要尽可能飞得远(转场、覆盖更大区域),飞最小阻力速度 - 两个速度差了约 32%,不是同一个速度 - 在小无人机上,长期在低功率速度附近飞行要注意别失速(余量不大)