想象一下,如果要设计一架能够悬停的飞行器,传统的工程师会立即想到直升机——复杂的旋翼倾斜盘、尾桨、变距机构。然而,四旋翼飞行器用一个激进的思路颠覆了这一切:用软件的复杂性换取硬件的简单性。
本章将深入探讨四旋翼飞行器如何通过高频控制算法,让一个机械上极其简单但动力学上极不稳定的系统实现精确飞行。我们将看到,这不仅仅是一个技术选择,更代表了一种全新的设计哲学——当计算成本趋近于零时,我们可以重新思考机械设计的基本假设。
四旋翼飞行器在物理上是一个欠驱动系统(underactuated system)——它有6个自由度(3个位置 + 3个姿态),但只有4个独立控制输入(4个电机转速)。更关键的是,这个系统是动态不稳定的。
让我们用一个简单的类比:试着用手掌托起一根倒立的扫帚。如果你的手完全不动,扫帚会在几秒钟内倒下。四旋翼的情况更糟——没有主动控制,它会在100毫秒内失控翻转。
传统直升机 vs 四旋翼稳定性对比:
传统直升机(有旋翼倾斜盘):
重心 ↓
═══╪═══ <- 旋翼产生的升力可调节方向
│
╔══╧══╗
║ 机身 ║ <- 重心在升力点下方,自然稳定
╚═════╝
四旋翼(无倾斜机构):
↑ ↑ ↑ ↑ <- 升力始终垂直向上
╱ ╲ ╱ ╲
M1 M2 M3 M4
╲ ╱ ╲ ╱
╳ ╳ <- 任何扰动都会导致倾覆
╔═════╗
║ 机身 ║
╚═════╝
四旋翼的硬件极其简单:
这种简化带来的好处是显而易见的:
| 对比项 | 传统直升机 | 四旋翼 |
|---|---|---|
| 机械部件数 | >1000 | <100 |
| 活动部件 | >100 | 4(仅电机) |
| 制造成本 | 高 | 低 |
| 维护复杂度 | 需要专业人员 | 用户可自行更换 |
| 故障模式 | 复杂(连杆、轴承、齿轮) | 简单(电机、电调) |
但代价是什么?控制系统必须以至少400Hz的频率运行,持续补偿系统的不稳定性。
四旋翼的每个飞行动作都需要精确协调4个电机:
基本飞行动作的电机控制逻辑:
悬停(Hover):
M1 = M2 = M3 = M4 = Mbase
上升(Throttle up):
M1 = M2 = M3 = M4 = Mbase + ΔM
向前俯仰(Pitch forward):
M1 = Mbase + ΔM M2 = Mbase + ΔM
↑增加 ↑增加
M3 = Mbase - ΔM M4 = Mbase - ΔM
↓减少 ↓减少
横滚(Roll):
M1 = Mbase - ΔM M2 = Mbase + ΔM
M3 = Mbase + ΔM M4 = Mbase - ΔM
偏航(Yaw)- 利用反扭矩:
M1 = Mbase + ΔM M2 = Mbase - ΔM (顺时针旋转的电机)
M3 = Mbase + ΔM M4 = Mbase - ΔM (逆时针旋转的电机)
人类飞行员不可能手动协调这些输入——反应时间太慢(~200ms),而系统需要<10ms的响应。这就是为什么四旋翼在没有飞控计算机的情况下根本无法飞行。
四旋翼的机械设计遵循极简主义原则:
四旋翼硬件架构图:
前进方向
↑
M1(CW) ←─────┼─────→ M2(CCW)
╲ │ ╱
╲ │ ╱
╲ │ ╱
╲ │ ╱
╳──────┼──────╳
╱ │ ╲
╱ │ ╲
╱ │ ╲
╱ │ ╲
M3(CCW) ←─────┼─────→ M4(CW)
↓
CW: 顺时针旋转
CCW: 逆时针旋转
中心载荷舱:
┌─────────────────────┐
│ ┌─────┐ ┌─────────┐ │
│ │ IMU │ │ FCU │ │ <- 飞控单元
│ └─────┘ └─────────┘ │
│ ┌─────────────────┐ │
│ │ 电池组 │ │ <- 能源系统
│ └─────────────────┘ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐│
│ │E1│ │E2│ │E3│ │E4││ <- 电子调速器(ESC)
│ └──┘ └──┘ └──┘ └──┘│
└─────────────────────┘
关键设计考虑:
四旋翼的执行器系统是其动力核心:
无刷电机特性:
电机响应特性:
转速-推力关系:
F = kf × ω² (推力与转速平方成正比)
扭矩-转速关系:
τ = km × ω² (反扭矩与转速平方成正比)
时间响应:
┌────────────────────────────┐
│ 推力 │
│ ↑ │
│ │ ╱─────── 目标推力 │
│ │ ╱ <- 上升时间 ~20ms │
│ │ ╱ │
│ │╱ │
│ └────────────────→ 时间 │
└────────────────────────────┘
关键参数:
- 响应带宽: 50-100 Hz
- 最大转速: 10,000-30,000 RPM
- 推力/重量比: >2:1(单个电机)
电子调速器(ESC)的作用:
电调不仅仅是功率放大器,更是一个精密的控制器:
四旋翼的”感知”能力完全依赖传感器:
传感器系统架构:
核心传感器(必需):
┌─────────────────────────────────────┐
│ 惯性测量单元 (IMU) │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ 加速度计 │ │ 陀螺仪 │ │
│ │ 3轴@1kHz │ │ 3轴@8kHz │ │
│ │ ±16g量程 │ │ ±2000°/s量程 │ │
│ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────┘
辅助传感器(增强性能):
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 磁力计 │ │ 气压计 │ │ GPS │
│ 航向参考 │ │ 高度保持 │ │ 位置/速度 │
│ 10-100Hz │ │ 50Hz │ │ 5-10Hz │
└─────────────┘ └─────────────┘ └─────────────┘
高级传感器(自主飞行):
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 光流传感器 │ │ 激光雷达 │ │ 立体相机 │
│ 速度估计 │ │ 避障/建图 │ │ 视觉SLAM │
└─────────────┘ └─────────────┘ └─────────────┘
传感器数据的特点:
四旋翼的动力学可以用牛顿-欧拉方程描述:
坐标系定义:
世界坐标系 (W) 机体坐标系 (B)
Zw ↑ Zb ↑ (推力方向)
│ │
│ │╱ Yb
│______→ Yw ╱
╱ ╱
╱ Xw Xb (机头方向)
状态向量 x = [x, y, z, vx, vy, vz, φ, θ, ψ, p, q, r]ᵀ
位置 │ 速度 │ 欧拉角 │ 角速度
控制输入 u = [F, τx, τy, τz]ᵀ
总推力│ 三轴扭矩
简化的动力学方程(小角度近似):
线性运动(世界坐标系):
ẍ = (F/m) × sin(θ)
ÿ = -(F/m) × sin(φ)
z̈ = (F/m) × cos(φ)cos(θ) - g
角运动(机体坐标系):
φ̈ = τx / Ixx
θ̈ = τy / Iyy
ψ̈ = τz / Izz
其中:
m: 总质量
g: 重力加速度
Ixx, Iyy, Izz: 转动惯量
四旋翼通常采用级联PID控制结构:
级联控制架构:
期望位置 ──→ [位置控制器] ──→ 期望姿态 ──→ [姿态控制器] ──→ 电机指令
(xd,yd,zd) PID (φd,θd,ψd) PID (M1,M2,M3,M4)
↑ ↑ │
│ │ │
位置反馈 姿态反馈 ↓
(GPS/视觉) (IMU) 电机执行
详细控制流程:
外环(位置控制) @ 50-100Hz:
┌──────────────────────────────────┐
│ ex = xd - x (位置误差) │
│ ėx = vxd - vx (速度误差) │
│ │
│ ax_cmd = Kp_x×ex + Kd_x×ėx │
│ + Ki_x×∫ex dt │
│ │
│ θd = atan2(ax_cmd, g) │
│ (期望俯仰角) │
└──────────────────────────────────┘
内环(姿态控制) @ 400-1000Hz:
┌──────────────────────────────────┐
│ eφ = φd - φ (横滚误差) │
│ eθ = θd - θ (俯仰误差) │
│ eψ = ψd - ψ (偏航误差) │
│ │
│ τx = Kp_φ×eφ + Kd_φ×(pd-p) │
│ + Ki_φ×∫eφ dt │
│ │
│ τy = Kp_θ×eθ + Kd_θ×(qd-q) │
│ + Ki_θ×∫eθ dt │
│ │
│ τz = Kp_ψ×eψ + Kd_ψ×(rd-r) │
│ + Ki_ψ×∫eψ dt │
└──────────────────────────────────┘
电机混控矩阵:
┌──────────────────────────────────┐
│ M1 = F/4 - τy/2L - τx/2L + τz/4k│
│ M2 = F/4 - τy/2L + τx/2L - τz/4k│
│ M3 = F/4 + τy/2L + τx/2L + τz/4k│
│ M4 = F/4 + τy/2L - τx/2L - τz/4k│
│ │
│ L: 电机到重心距离 │
│ k: 推力/扭矩系数比 │
└──────────────────────────────────┘
PID参数调节是四旋翼调试的核心:
| 参数类型 | 作用 | 调节过小的影响 | 调节过大的影响 | 典型值范围 |
|---|---|---|---|---|
| Kp(比例) | 误差响应强度 | 响应迟缓 | 振荡 | 3-8 |
| Ki(积分) | 消除稳态误差 | 漂移 | 超调、振荡 | 0.01-0.1 |
| Kd(微分) | 抑制振荡 | 振荡 | 噪声放大 | 0.1-0.5 |
调参顺序:
不同控制环路的频率要求反映了系统动力学的时间尺度:
控制环路频率层次:
┌─────────────────────────────────────────┐
│ │
│ 路径规划 (1-10 Hz) │
│ ↓ │
│ 位置控制 (50-100 Hz) │
│ ↓ │
│ 姿态控制 (400-1000 Hz) │
│ ↓ │
│ 电机控制 (8-32 kHz PWM) │
│ │
└─────────────────────────────────────────┘
时间常数对比:
- 位置响应: ~1-2秒
- 姿态响应: ~100-200毫秒
- 电机响应: ~10-20毫秒
为什么需要如此高的控制频率?
奈奎斯特采样定理告诉我们,控制频率必须至少是系统最高响应频率的2倍。四旋翼的姿态动力学带宽约为10-20Hz,因此:
IMU是四旋翼最重要的传感器,但原始数据充满噪声:
IMU误差源及补偿:
加速度计误差:
实际测量 = 真实加速度 + 重力分量 + 偏置 + 刻度误差 + 噪声 + 振动
陀螺仪误差:
实际测量 = 真实角速度 + 偏置 + 温漂 + 刻度误差 + 噪声
典型误差特性:
┌────────────────────────────────────┐
│ 误差类型 │ 加速度计 │ 陀螺仪 │
├────────────┼──────────┼───────────┤
│ 偏置 │ ~0.05g │ ~0.1°/s │
│ 噪声(RMS) │ ~0.01g │ ~0.01°/s │
│ 温漂 │ 小 │ ~0.02°/s/°C│
│ 振动敏感性 │ 高 │ 低 │
│ 长期稳定性 │ 好 │ 差(积分漂移)│
└────────────────────────────────────┘
振动滤波:
机械振动是IMU数据的主要噪声源:
振动频谱分析:
功率谱密度
↑
│ 电机基频
│ (200-400Hz)
│ ↓
│ ╱╲ ╱╲ 桨叶通过频率
│ ╱ ╲╱ ╲ (100-200Hz)
│ ╱ ╲ ↓
│ ╱ ╲╱╲╱╲
│╱ ╲ 机架谐振
└──────────────────────→ 频率(Hz)
10 50 100 200 400
滤波策略:
1. 硬件减振: 橡胶减振垫
2. 低通滤波: 截止频率 ~50Hz
3. 陷波滤波: 针对电机频率
扩展卡尔曼滤波(EKF)是四旋翼状态估计的核心算法:
EKF状态估计流程:
预测步骤(基于运动模型):
x̂(k|k-1) = f(x̂(k-1|k-1), u(k-1))
P(k|k-1) = F×P(k-1|k-1)×Fᵀ + Q
更新步骤(融合测量):
K = P(k|k-1)×Hᵀ×(H×P(k|k-1)×Hᵀ + R)⁻¹
x̂(k|k) = x̂(k|k-1) + K×(z(k) - h(x̂(k|k-1)))
P(k|k) = (I - K×H)×P(k|k-1)
其中:
x̂: 状态估计
P: 误差协方差
F: 状态转移矩阵
Q: 过程噪声
H: 观测矩阵
R: 测量噪声
K: 卡尔曼增益
多传感器融合架构:
传感器融合时序图:
时间轴 →
IMU: |--|--|--|--|--|--|--|--|--|--| (1000Hz)
Baro: |--------|--------|--------|----| (50Hz)
Mag: |--------|--------|--------|----| (50Hz)
GPS: |----------------------|--------| (5Hz)
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
EKF更新(每次有新测量时触发)
融合策略:
- IMU: 高频预测,提供短期精度
- 气压计: 高度校正,消除Z轴漂移
- 磁力计: 航向校正,消除偏航漂移
- GPS: 位置/速度校正,提供绝对参考
四元数相比欧拉角的优势:
四元数姿态更新:
q = [q0, q1, q2, q3]ᵀ (标量部分 + 向量部分)
基于角速度的四元数微分方程:
q̇ = 0.5 × Ω(ω) × q
其中 Ω(ω) = [ 0 -ωx -ωy -ωz ]
[ ωx 0 ωz -ωy ]
[ ωy -ωz 0 ωx ]
[ ωz ωy -ωx 0 ]
离散更新(一阶近似):
q(k+1) = q(k) + 0.5 × Ω(ω) × q(k) × Δt
归一化(保持单位四元数):
q = q / ||q||
互补滤波器(简化替代方案):
对于计算资源受限的系统,互补滤波器提供了一个简单有效的替代:
互补滤波原理:
姿态角 = α × (姿态角 + 陀螺仪积分) + (1-α) × 加速度计测量角度
其中 α ≈ 0.98 (高通滤波陀螺仪,低通滤波加速度计)
频率响应:
增益
↑
1 │ 陀螺仪主导
│ ╱────────
│ ╱ 交叉频率
│ ╱ (~1Hz)
0 │╱─────╲
│ ╲ 加速度计主导
└──────────────→ 频率(Hz)
0.01 0.1 1 10 100
位置估计通常结合多种传感器:
位置估计方法对比:
┌───────────────────────────────────────────────┐
│ 方法 │ 精度 │ 更新率 │ 环境依赖 │
├────────────┼────────┼────────┼─────────────┤
│ GPS │ 1-5m │ 5-10Hz │ 需要天空视野 │
│ 光流 │ 5-10% │ 30Hz │ 需要纹理地面 │
│ 视觉SLAM │ 1-5% │ 30Hz │ 需要特征点 │
│ UWB定位 │ 10cm │ 50Hz │ 需要基站 │
│ IMU积分 │ 漂移大 │ 1000Hz │ 无 │
└───────────────────────────────────────────────┘
融合架构示例(GPS+IMU):
- 短期(<1s): 依赖IMU积分
- 中期(1-10s): IMU为主,GPS校正
- 长期(>10s): GPS为主导
传统直升机与四旋翼代表了两种截然不同的设计哲学:
复杂度对比图:
传统直升机机械系统:
旋翼头
│
┌─────────────┼─────────────┐
│ │ │
变距拉杆 旋翼倾斜盘 混控连杆
│ │ │
└─────────────┼─────────────┘
│
主减速箱
│
┌────────┼────────┐
│ │
发动机 尾传动轴
│ │
离合器 尾减速箱
│
尾桨变距
四旋翼机械系统:
电机1 ──── 机架 ──── 电机2
│ ╳ │
│ ╱ ╲ │
│ ╱ ╲ │
电机3 ─────────── 电机4
部件数量对比:
传统直升机: >1000个机械部件
四旋翼: <50个机械部件(不含电子)
两种飞行器的控制策略反映了其根本设计差异:
| 控制维度 | 传统直升机 | 四旋翼 |
|---|---|---|
| 悬停稳定性 | 机械稳定(钟摆效应) | 主动稳定(持续控制) |
| 姿态控制 | 周期变距(机械) | 差分推力(电子) |
| 响应速度 | ~100ms(机械惯性) | ~10ms(电子控制) |
| 失控模式 | 可自转降落 | 立即坠落 |
| 控制权威 | 受限于伺服速度 | 受限于电机响应 |
| 能量效率 | 高(大旋翼) | 低(小旋翼) |
控制输入映射对比:
传统直升机(4个输入):
1. 总距(Collective)→ 垂直运动
2. 周期横向(Lateral Cyclic)→ 横滚
3. 周期纵向(Longitudinal Cyclic)→ 俯仰
4. 尾桨距(Pedal)→ 偏航
四旋翼(4个虚拟输入 → 4个电机):
1. 油门(Throttle)→ Σ(M1+M2+M3+M4)
2. 横滚(Roll)→ M2+M3-M1-M4
3. 俯仰(Pitch)→ M1+M2-M3-M4
4. 偏航(Yaw)→ M1+M3-M2-M4
控制解耦程度:
- 直升机: 强耦合(每个输入影响多个轴)
- 四旋翼: 数学解耦(通过混控矩阵)
成本结构分析:
成本分解(相对值):
传统直升机(同等载重):
┌──────────────────────────────┐
│ 机械系统(60%) │
│ ├─ 旋翼系统: 25% │
│ ├─ 传动系统: 20% │
│ └─ 机身结构: 15% │
│ 动力系统(25%) │
│ 控制系统(10%) │
│ 其他(5%) │
└──────────────────────────────┘
四旋翼:
┌──────────────────────────────┐
│ 电子系统(45%) │
│ ├─ 电机+电调: 25% │
│ ├─ 飞控+传感器: 20% │
│ 电池(30%) │
│ 机架(15%) │
│ 其他(10%) │
└──────────────────────────────┘
可靠性对比:
| 故障模式 | 传统直升机 | 四旋翼 |
|---|---|---|
| 单点故障 | 多(传动链任何环节) | 少(主要是飞控) |
| 渐进退化 | 可能(振动增加等) | 罕见(多为突发) |
| 冗余设计 | 困难(机械冗余重) | 容易(六旋翼、八旋翼) |
| 故障检测 | 需要经验 | 自动诊断 |
| 现场维修 | 需要专业工具 | 模块化更换 |
不同设计理念导致不同的应用优势:
应用场景适配性:
场景特点 ←→ 最适合机型
载重要求高
续航要求长 ←─────→ 传统直升机
自转安全性 (机械效率高)
敏捷性要求高
室内飞行 ←─────→ 四旋翼
自主飞行 (控制精确)
低成本量产
性能包络对比:
载重/自重比
↑
3 │ ▪ 传统直升机
│ ╲
2 │ ╲
│ ╲
1 │ ╲▪ 四旋翼
│ ╲
0 └────────╲───→ 飞行时间(小时)
0 1 2 3
关键指标对比:
- 悬停效率: 直升机 > 四旋翼(2-3倍)
- 最大速度: 直升机 > 四旋翼(200km/h vs 50km/h)
- 抗风能力: 直升机 > 四旋翼(30m/s vs 10m/s)
- 控制精度: 四旋翼 > 直升机(厘米级 vs 米级)
- 噪音水平: 四旋翼 < 直升机(高频 vs 低频)
四旋翼的成功揭示了软硬件协同设计的核心原则:
发展趋势对比:
性能提升曲线(2000-2024):
相对性能
10│ ╱ 四旋翼
│ ╱ (指数增长)
│ ╱
│ ╱
5│ ╱
│ ╱
│ ──────── 传统直升机
│ ╱ (线性增长)
1│──╱
└────────────────────→ 年份
2000 2010 2020
驱动因素:
四旋翼: MEMS传感器、算力、电池密度
直升机: 材料科学、空气动力学
四旋翼飞行器的成功,本质上是软件定义硬件的胜利。通过接受机械上的不稳定性,换取结构的极简化,四旋翼展示了当计算能力充足时,我们可以重新思考机械设计的基本假设。
| 设计选择 | 获得 | 失去 |
|---|---|---|
| 固定螺距 | 机械简单 | 能效 |
| 小旋翼高转速 | 快速响应 | 续航时间 |
| 纯软件稳定 | 灵活性 | 故障容错 |
| 对称布局 | 控制简单 | 载荷灵活性 |
1. 控制频率计算 一个四旋翼的姿态响应带宽为15Hz,按照工程经验,控制频率应该设置为多少?
提示:考虑奈奎斯特采样定理和安全裕度
2. 电机混控 如果要让四旋翼向前飞行,应该如何调整4个电机的转速?(假设M1、M2在前,M3、M4在后)
提示:向前飞需要向前倾斜
3. 传感器选择 为什么四旋翼必须使用陀螺仪而不能只用加速度计?
提示:考虑动态响应和噪声特性
4. 悬停功耗估算 一个1kg的四旋翼,假设推力系数kf=1×10⁻⁶ N/(rpm)²,每个电机在悬停时的转速是多少?
提示:悬停时总推力等于重力
5. 故障模式分析 如果四旋翼的一个电机突然失效,理论上能否通过调整其他三个电机继续飞行?请分析控制自由度。
提示:分析剩余的控制权威
6. 卡尔曼滤波设计 设计一个简化的一维高度估计卡尔曼滤波器,融合气压计(50Hz,噪声0.1m)和加速度计积分(1000Hz,漂移0.01m/s²)。给出主要参数。
提示:确定状态变量、观测模型和噪声参数
7. 振动分析 一个四旋翼的电机转速为10,000 RPM,双叶桨。计算主要振动频率,并设计IMU低通滤波器参数。
提示:考虑电机基频和桨叶通过频率
8. 系统辨识 描述如何通过实验确定四旋翼的转动惯量Ixx、Iyy、Izz。
提示:考虑施加已知扭矩并测量响应
问题:IMU直接硬连接到机架,电机振动导致姿态估计噪声巨大 解决:使用橡胶减振器,设计合适的低通滤波器
问题:电机和电调产生的磁场干扰磁力计读数 解决:磁力计远离电机和大电流线路,做好磁场校准
问题:串行通信、滤波器等引入的延迟累积,导致控制不稳定 解决:优化代码路径,使用DMA,减少不必要的滤波器阶数
问题:电池放电时电压下降,相同PWM产生的推力减少 解决:实现电压补偿,根据电池电压动态调整PWM
问题:载荷变化导致重心偏移,原有PID参数不再适用 解决:实现自适应控制或增益调度,根据载荷调整参数
问题:温度变化或天气变化导致气压计读数漂移 解决:温度补偿,使用GPS高度进行长期校正
问题:调节一个PID参数影响其他轴的表现 解决:理解耦合机理,使用解耦控制或现代控制方法
问题:激进的控制输入导致电机饱和,失去控制权威 解决:实现抗饱和机制,限制积分项,优先保证姿态控制