跳到主要内容

一个任意的周期函数都可以表示为简单正弦波的和。

Joseph Fourier傅里叶分析创始人

飞行器控制挑战

每学完一个章节,用所学知识解决一个真实的飞行控制问题。挑战涵盖空气动力学、坐标变换、运动学/动力学方程和数值积分方法。


1. 空气动力学基础

Challenge挑战:计算升力系数
Scenario

你的无人机在高度 100m 处以 50 m/s 的速度平飞。空气密度 ρ = 1.225 kg/m³,机翼面积 S = 2.0 m²。你需要计算维持平飞所需的升力系数 CL。

🎯编写函数 calculate_lift(alpha),其中 alpha 是迎角(弧度),返回升力系数 CL = 2πα(薄翼理论小迎角近似)

Challenge挑战:飞行速度包线计算
Scenario

某型无人机的设计参数:最大升力系数 CL_max = 1.8,最小阻力系数 CD_min = 0.02,翼载 W/S = 150 N/m²,空气密度 ρ = 1.225 kg/m³。

🎯编写函数 stall_speed() 返回失速速度(m/s)。失速速度是升力刚好等于重力时的速度:V_stall = sqrt(2 * W/S / (ρ * CL_max))

2. 坐标系与变换

Challenge挑战:机体坐标系到地理坐标系变换
Scenario

无人机在机体坐标系下的速度为 (u, v, w) = (20, 0, -2) m/s(u 为前向,v 为侧向,w 为下向)。当前姿态:滚转角 φ = 10°,俯仰角 θ = 5°,偏航角 ψ = 30°。

🎯编写函数 body_to_earth(u, v, w, phi, theta, psi) 将机体坐标系速度变换到地理坐标系(NED: 北-东-地)。使用欧拉角旋转矩阵。

3. 运动学与动力学

Challenge挑战:四旋翼运动学方程
Scenario

四旋翼无人机当前状态:位置 (x, z) = (0, 0) m,速度 (vx, vz) = (5, 0) m/s,姿态角 θ = 10°(俯仰)。推力 T = 15 N,质量 m = 2 kg,重力加速度 g = 9.81 m/s²。

🎯编写函数 dynamics(theta, T, m, g) 返回加速度 (ax, az)。简化二维模型:ax = (T/m) * sin(θ),az = (T/m) * cos(θ) - g

4. 数值积分方法

Challenge挑战:欧拉法积分轨迹
Scenario

四旋翼从原点起飞,初始速度 (vx, vz) = (5, 0) m/s。加速度恒定 (ax, az) = (1.3, -2.5) m/s²(来自上一挑战的结果)。采样时间 dt = 0.1 s。

🎯编写函数 euler_integrate(vx0, vz0, ax, az, dt, steps) 返回 steps 步后的位置 (x, z)。使用前向欧拉法:v += a*dt,p += v*dt

Challenge挑战:四阶龙格-库塔法 (RK4)
Scenario

欧拉法精度有限,步长大时误差累积明显。四阶龙格-库塔法 (RK4) 是工程中最常用的高精度积分方法,截断误差为 O(dt⁵)。

🎯编写函数 rk4_step(f, t, y, dt) 执行一步 RK4 积分。f(t, y) 是导数函数,y 是状态向量(列表)。