2. 无人机基础
多旋翼无人机的强化学习控制,本质上是在一个强耦合、欠驱动、非线性且带有时变扰动的动力学系统上寻找控制策略。若不了解机体受力、坐标系转换、姿态表示与传感器执行器的物理边界,策略网络很容易学到“仿真里能飞、真机上失控”的虚假规律。本章从建模、坐标、姿态、动力到传感执行链路,建立后续 Sim2Real 所需的物理直觉。
一、多旋翼动力学模型:从受力到运动
四旋翼的六个自由度(位置 x、y、z 与姿态 φ、θ、ψ)只由四个电机推力控制,因此是典型的欠驱动系统:平移运动必须通过改变姿态、倾斜推力矢量来间接实现。其核心动力学可概括为“总推力决定升降,推力差决定姿态,姿态决定水平加速度”。
- 平动方程:合外力 = 重力 + 机体坐标系下的总推力旋转到世界系 + 空气阻力。
- 转动方程:角加速度由三轴力矩(滚转、俯仰、偏航)与转动惯量决定,力矩来自各螺旋桨推力差与反扭矩差。
- 耦合特性:姿态变化会立即改变推力方向,进而影响位置;位置误差又常通过姿态指令修正,形成内外环耦合。
在仿真中常用简化模型:忽略桨叶挥舞、电机瞬态与复杂气动,仅保留刚体动力学加一阶电机响应。这种简化对训练初期足够,但 Sim2Real 时必须通过域随机化补偿未建模动态。
二、坐标系定义与姿态表示
多旋翼控制至少涉及三个坐标系:世界系(惯性系)、机体系、传感器系。世界系通常取东北天或北东地,机体系原点在质心,x 轴指向前、y 轴指向右、z 轴指向下(或上,取决于约定)。所有控制指令最终都要在机体系下分配电机推力。
姿态表示有三种主流方式:欧拉角直观但有万向节死锁;旋转矩阵无死锁但冗余且需正交化;四元数紧凑、无死锁、插值平滑,是飞控与强化学习中最常用的内部表示。策略网络输出若为欧拉角,需在接近 ±90° 俯仰时特别小心。
三、电机与螺旋桨特性:控制输入的物理边界
螺旋桨推力与转速平方成正比,反扭矩同样与转速平方成正比。四旋翼通过四个转速的组合产生总推力与三轴力矩:对角电机同向旋转抵消反扭矩,转速差产生滚转与俯仰,两组对角转速差产生偏航。电机从指令到实际转速存在一阶滞后,电调响应、电池电压跌落、桨叶形变都会改变有效推力系数。
| 对象 | 关键参数 | 对控制的影响 | Sim2Real 注意点 |
|---|---|---|---|
| 无刷电机 | KV 值、内阻、最大电流 | 决定转速上限与响应速度 | 饱和与温升导致推力下降 |
| 电调 | PWM 频率、死区、延迟 | 指令到转速的滞后 | 延迟随机化,避免策略过拟合 |
| 螺旋桨 | 桨径、桨距、k_T、k_Q | 推力效率与反扭矩比例 | 桨损、气流干扰改变系数 |
| 电池 | 电压、内阻、放电曲线 | 电压跌落降低最大推力 | 按电量随机化推力上限 |
四、传感器与执行器:观测与动作的真实链路
飞控常用 IMU 提供三轴加速度与角速度,磁力计提供偏航参考,气压计提供高度,GPS 提供室外位置。视觉、激光雷达、光流等则用于定位与避障。强化学习策略的观测通常由这些传感器融合后的状态估计构成,而非原始测量值。
执行器链路为:策略输出 → 姿态/推力指令 → 混控分配 → 电调 PWM → 电机转速 → 螺旋桨推力。任何一环的延迟、噪声、量化或饱和,都会让仿真中“完美”的策略在真机上出现振荡或漂移。
五、案例与常见误区
假设训练一个悬停策略:仿真中观测为理想位置与姿态,动作直接映射为四个推力。若不做域随机化,真机上 IMU 噪声会让姿态估计抖动,电机延迟会让推力响应滞后,电池电压下降会让同样 PWM 对应更小推力。策略可能在高频修正中发散。
- 误区一:把欧拉角直接作为网络输出且不做范围约束,导致俯仰接近 90° 时数值爆炸。
- 误区二:忽略电机饱和,策略学到“无限推力”的激进动作,真机无法执行。
- 误区三:用世界系动作控制机体系推力,坐标系混淆导致方向错误。
- 误区四:只随机化质量而不随机化推力系数,迁移后高度控制偏差明显。
# 简化四旋翼推力分配(机体 z 向下,总推力向上)
# u = [T_total, tau_x, tau_y, tau_z]
# 电机转速平方向量 w2 = A_inv @ u
# 其中 A 由机臂长度 L、推力系数 kT、反扭矩系数 kQ 决定
L = 0.25 # 机臂长度 m
kT = 1.2e-5 # 推力系数
kQ = 2.0e-7 # 反扭矩系数
# 悬停时 T_total ≈ m * g,四电机均分
m = 1.2 # kg
g = 9.81
T_hover = m * g
w2_each = T_hover / (4 * kT)
print("单电机转速平方:", w2_each)