3. 多旋翼飞行器动力学建模
姿态与位置控制器的设计质量,最终取决于模型对真实飞行器动态的刻画精度。多旋翼的动力学建模不是把几个公式堆在一起,而是要把“电机输入 → 旋翼气动力/力矩 → 机体六自由度运动 → 外部扰动叠加”这条因果链完整写清楚。本节按刚体动力学、牛顿-欧拉方程、旋翼升力与反扭矩、电机模型、风阻与外部扰动五个部分展开,最后合成一个可直接用于仿真和控制器设计的六自由度非线性模型。
一、坐标系与状态量定义
建模前必须先固定参照系,否则正负号会前后矛盾。本文采用如下约定,全文及图示保持一致:
- 惯性系(大地系):原点固定于起飞点,z 轴竖直向上,x、y 轴水平,符合右手定则。重力加速度 g = 9.81 m/s²,方向沿 −z。
- 机体系:原点位于飞行器质心,xb 指向机头,yb 指向右侧,zb 指向机体上方。四个旋翼按“X”型布局,编号 1 为右前、2 为右后、3 为左后、4 为左前。
- 姿态角:滚转角 φ、俯仰角 θ、偏航角 ψ,采用 Z-Y-X 欧拉角序列,旋转矩阵 R 由机体到惯性系。
状态量取 12 维:位置 p = [x, y, z]T,速度 v = [vx, vy, vz]T,姿态角 η = [φ, θ, ψ]T,机体角速度 ω = [p, q, r]T。控制输入为四个电机的转速指令,经电机模型后得到实际转速 Ωi。
二、刚体动力学与牛顿-欧拉方程
多旋翼可视为一个质量恒定、外形对称的刚体。平动部分由牛顿第二定律在惯性系下描述:
m·v̇ = R·F_body + m·g_vec + F_drag + F_dist
其中 m 为总质量,Fbody 为机体系下旋翼产生的合外力,gvec = [0, 0, −g]T,Fdrag 为气动阻力,Fdist 为外部扰动(如阵风)。
转动部分由欧拉方程给出,注意必须在机体系下书写,因为转动惯量张量在机体系下近似为常量:
I·ω̇ = M_body − ω × (I·ω)
其中 I = diag(Ixx, Iyy, Izz) 为转动惯量矩阵,Mbody 为旋翼产生的合力矩,ω × (I·ω) 为陀螺耦合项。对于 X 型四旋翼,若轴距为 L,则各旋翼到质心的力臂在 xb、yb 方向的分量均为 L/√2。
姿态角与机体角速度之间的运动学关系为:
η̇ = W(η)·ω
W = [1 sinφ·tanθ cosφ·tanθ
0 cosφ −sinφ
0 sinφ/cosθ cosφ/cosθ]
当 θ → ±90° 时该矩阵奇异,这是欧拉角表示的固有缺陷,实际控制器中常用四元数替代,但本节为便于理解仍采用欧拉角。
三、旋翼升力与反扭矩
单个旋翼在悬停或低速飞行时,升力近似与转速平方成正比:
F_i = k_F · Ω_i²
M_i = k_M · Ω_i²
其中 kF 为升力系数,kM 为反扭矩系数,二者由桨叶几何和空气密度决定。以 10 寸桨、3S 电池的典型四旋翼为例,kF ≈ 1.2×10⁻⁵ N·s²/rad²,kM ≈ 2.4×10⁻⁷ N·m·s²/rad²,比值 kM/kF ≈ 0.02 m,与桨径同量级。
四个旋翼的转向按对角同向配置:1、3 号逆时针,2、4 号顺时针。这样反扭矩在悬停时相互抵消,同时通过转速差产生偏航力矩。机体合外力与合力矩为:
F_body = [0, 0, ΣF_i]^T
M_body = [ L/√2·(F_1+F_2−F_3−F_4),
L/√2·(−F_1+F_2+F_3−F_4),
k_M/k_F·(F_1−F_2+F_3−F_4) ]^T
注意第三行偏航力矩的符号取决于各旋翼转向定义,建模时必须与电机编号、桨叶正反装一致,否则偏航通道会反向。
四、电机模型
无刷电机加电调的动态通常用一阶惯性环节近似,从转速指令 Ωcmd 到实际转速 Ω 的传递关系为:
Ω̇ = (Ω_cmd − Ω) / τ_m
时间常数 τm 典型值为 0.02~0.05 s,取决于电机电感、转子惯量和电调响应速度。若忽略电机动态,控制器在仿真中会表现得过于理想,实际飞行时容易出现高频振荡。因此六自由度模型中应保留这一环节,或至少用一阶滤波近似。
五、风阻与外部扰动
气动阻力在机体系下可写为:
F_drag = −0.5·ρ·C_d·A·|v_b|·v_b
其中 ρ 为空气密度,Cd 为阻力系数,A 为迎风面积,vb 为机体速度。低速时阻力较小,但高速前飞时不可忽略。外部扰动 Fdist 可建模为常值风、阵风或周期性扰动,用于测试控制器的抗扰能力。
六、六自由度非线性模型合成
将上述各部分联立,得到完整的六自由度非线性状态方程。以状态向量 x = [p, v, η, ω]T 表示:
ṗ = v
v̇ = (1/m)·R(η)·F_body + g_vec + (1/m)·F_drag + (1/m)·F_dist
η̇ = W(η)·ω
ω̇ = I⁻¹·[M_body − ω×(I·ω)]
其中 Fbody 和 Mbody 由四个旋翼转速经气动模型计算,转速由电机一阶模型从指令生成。该模型是非线性的,主要来源有三:旋转矩阵 R(η) 中的三角函数、欧拉方程中的陀螺耦合项 ω×(I·ω)、以及阻力项中的速度平方。
该模型可直接用于 MATLAB/Simulink 或 Python 数值仿真。以 1 kg 四旋翼、轴距 0.25 m、Ixx=Iyy=0.005 kg·m²、Izz=0.009 kg·m² 为例,悬停时每个电机约需 4500 rad/s(约 43000 rpm 的电机轴转速,经减速或直接驱动视具体配置而定),此时 ΣFi ≈ 9.81 N,与重力平衡。给定期望位置和姿态轨迹,即可用该模型验证控制器在扰动下的跟踪误差和恢复时间。
建模的最终目的不是追求公式完备,而是让控制器设计有可依据的对象。模型精度与复杂度需要权衡:若只做悬停和低速位置控制,可忽略阻力高阶项和电机动态;若要做高速前飞或抗风测试,则必须保留阻力平方项和扰动输入通道。下一阶段将基于该模型展开姿态环和位置环的控制器设计。