固定翼无人机着陆纵向控制:配平、拉平与控制律选型

发布时间:2026/10/26 23:46:13
固定翼无人机着陆纵向控制:配平、拉平与控制律选型 简介这份压缩包面向固定翼无人机着陆控制的学习者与工程实践者聚焦着陆阶段的纵向动力学建模、下滑轨迹规划与高度跟踪问题适合具备一定MATLAB/Simulink基础、希望把PID控制策略落到仿真中的读者。包内共8个文件以4个m脚本、2个mdl模型和2个slx模型为主整体约70KBm文件承担纵向模型参数、着陆路径与高度跟踪模型的定义mdl与slx则给出控制系统和高度跟踪子系统的可视化仿真结构。已有2071人学习说明该主题在无人机控制学习中具有较高关注度。读者可据此梳理从动力学方程、ABCD状态空间描述到着陆轨迹生成、PID参数整定与Simulink联调验证的完整链路并借助模型对比不同控制参数对着陆平稳性与高度跟踪精度的影响形成可复用的仿真分析与排错思路。1. 固定翼无人机着陆纵向控制最后 30 米难在哪里巡航段高度保持做得漂亮不代表能安全落地。某次试飞飞机在五边之前高度像钉在气压高度上一样稳一进最后 30 米就暴露出问题要么拉飘接地前两米还在缓慢下沉最后砸在跑道头要么拉平过猛机头上仰、空速掉到失速边界触地后弹跳。这些现象几乎都能归到同一个题目上——固定翼无人机着陆纵向控制。它管的不是单个姿态角而是在低动压、地效、风切变和传感器噪声叠加的最后几十秒里同时把高度、下沉率、空速和俯仰姿态约束在触地包线内。这四件事互相冲突想抬机头降下沉率空速就下降想保住空速推油门飞机又会重新爬升。这个话题适合已经跑通基本姿态增稳、准备上自主降落的团队更适合那些仿真跑得很漂亮、实飞却总差一点的人。因为绝大多数翻车点不在控制律形式本身而在参考轨迹、配平点和边界处理上。2. 把着陆纵向通道拆成四段下滑道、拉平、接地、滑跑各自在控什么一套能上天的着陆纵向控制通常不会用一条控制律负责全程。常见做法是按高度和下沉率分段段与段之间留明确的交接条件。分段的目的是让每一段控制同一个物理量而不是让算法看起来更丰富。下面这四段是最主流的切法先看清各自在控什么再去谈控制律才有意义。2.1 四段的分界条件高度、下沉率、空速在哪一刻交接段起点判据主控目标主控执行机构典型参数下滑道高度 进场高度或截获下滑道航迹角恒定空速恒定升降舵管姿态、油门管速度航迹角 -3°、速度 1.3Vs拉平无线电高度 拉平高度下沉率按指数收敛升降舵为主油门缓收拉平高度 3~8 m接地高度 0.3~0.5 m姿态保持防擦尾升降舵保持俯仰不下压滑跑主轮受压信号速度刹车、方向刹车、方向舵纵向基本放开分界条件不要用单一阈值。只用气压高度判断进入拉平在气压实测有 1~2 m 漂移的日子里就会提前或滞后拉平这是反复出现的问题。惯常做法是无线电高度做主判据、气压高度和 GNSS 高度做一致性校验三者差超过阈值就报警切人工或复飞。2.2 下滑道段恒定航迹角背后的速度-姿态耦合下滑道段的本质是让飞机沿一条固定斜率的直线下降。航迹角 γ 和俯仰角 θ、迎角 α 的关系是 γ θ − α而升力又决定了 α。这意味着「高度误差」这个输入最终是由俯仰角去消化的而俯仰角一动迎角跟着变升力和阻力一起变速度就跑了。所以下滑道段一般不会只用一个高度回路。常见做法是双回路外环把高度误差和高度变化率折算成航迹角指令航迹角指令加上配平迎角得到俯仰角指令内环用俯仰角加俯仰角速率阻尼去追这个指令。速度通道单独用油门闭环和俯仰通道解耦。这里有个容易被忽略的细节外环的航迹角修正项需要限幅。典型取 ±3°也就是在下滑道 ±3° 的基础上最多再偏 3°。不限幅的话截获瞬间如果高度误差有 20 m指令会瞬间打到 ±15°飞机一个猛抬头速度掉下去接下来几秒全在补速度高度反而更偏。这个现象在实飞里叫「截获振荡」属于典型翻车。下滑道角本身怎么选运输类常用 3°小型固定翼无人机在 3°~5° 之间都有人用。角度小的好处是下沉率低、拉平窗口宽、对速度误差不敏感坏处是同样的高度需要更长的进近距离对场地要求高。角度大的好处是抗风、进近短坏处是下沉率大拉平段留给你的高度和时间都少。没有普适最优取决于你的场地长度和空速。2.3 拉平段把 h_dot −h/τ 讲透包括 τ 怎么定拉平段是整个着陆纵向控制里最考手艺的一段。它的目标很明确把下滑道段那个恒定的大约 −1 m/s 的下沉率平滑地收敛到接地时的 −0.2~−0.3 m/s同时不让空速掉出安全边界。最常用的参考轨迹是指数拉平$$\dot h -\frac{h}{\tau}, \quad h(t) h_f e^{-t/\tau}$$它的好处是天然收敛到零下沉率且在任何高度都连续可微。坏处是它是渐近的理论上永远到不了 h0所以工程上会在 h 降到 0.3~0.5 m 时把拉平律切掉改用固定小下沉率或者直接交出去。关键在 τ 怎么定。不少团队凭手感试试出来一个「看起来能落地」的值就固定下来换个空速或者换个拉平高度就得重调。其实 τ 有一个明确的物理约束拉平起始时刻的下沉率必须等于下滑道段末端的下沉率否则参考轨迹在交接点会有一个台阶飞机会去追这个台阶。由 $\dot h(0) -h_f/\tau$ 和下滑道下沉率 $\dot h_{gs} V\sin\gamma_{gs}$ 相等直接得到$$\tau \frac{h_f}{V,|\sin\gamma_{gs}|}$$举例拉平高度 4 m空速 20 m/s下滑道 3°则 $\tau 4/(20 \times 0.0523) \approx 3.8$ s。这个 τ 是从几何里推出来的不需要人工调参。工程上我更习惯用水平距离形式因为它和位置直接对应$$h_{ref}(s) h_f \exp\left(-\frac{s - s_f}{L}\right), \quad L \frac{h_f}{\tan|\gamma_{gs}|}$$同样参数下 L ≈ 76 m且 τ L/V两个形式完全等价。用距离形式的好处是拉平轨迹只和地面位置有关不受空速瞬时波动影响风切变下更稳。顺带算一下拉平过载确认它落在结构和使用包线内$$n \approx 1 \frac{V\dot\gamma}{g}$$指数拉平起始处 $\dot\gamma |\gamma_{gs}|/\tau$代入 20 m/s、3°、3.8 s得 n ≈ 1.03。非常温和。但如果有人把拉平高度提到 8 m 又不想延长拉平距离τ 被迫压到 1.9 s过载翻倍到 1.06同时升降舵速率需求也会翻倍——这时候舵机要是只有 30°/s就跟不上表现出来的就是拉平段抖动。所以拉平高度、τ、舵机速率这三个参数是绑在一起的改一个必须回头检查另外两个。2.4 配平点建模前必须先算准的 6 个数在写任何一行控制代码之前先把进场配平点算准。常用做法是用非线性六自由度模型在给定空速和下滑道角下求一组配平解。至少要把这 6 个量固化下来作为基准配平空速 V_trim一般取 1.25~1.35 倍失速速度配平迎角 α_trim配平俯仰角 θ_trim γ_gs α_trim配平升降舵 δe_trim配平油门 δt_trim配平升降舵到俯仰的静稳定性 ∂Cm/∂α这 6 个量错了后面所有控制律都在错误的基准上工作。最典型的错误是直接拿巡航配平的舵量当进场配平用——进场速度低、动压小同样的舵面偏角产生的力矩小得多结果就是飞机一进五边就低头控制器拼命拉杆几秒钟就把舵面拉到饱和。我一般会在仿真里先把这 6 个数打印出来和风洞或辨识结果对照一遍再往下走。这一步省掉后面全是血泪经验。3. 控制律选型LQR、TECS 与串级 PID 在着陆段怎么分工控制律形式是着陆纵向控制里讨论最热闹的部分但实际影响远小于参考轨迹和配平。三种主流方案各有明确的适用边界选错不会飞不起来但会让你在调试时找不到问题在哪。下面按从简到繁的顺序拆开说。3.1 串级 PID外环航迹角、内环俯仰角加角速率阻尼这是最容易被复现的方案也是绝大多数小型固定翼无人机的实际选择。结构清晰最内环俯仰角速率 q 反馈到升降舵作用是增加短周期阻尼压住振荡中间环俯仰角误差到升降舵比例为主积分可选最外环高度误差和高度变化率到航迹角指令再折算成俯仰角指令参数怎么起内环角速率增益一般从「能让短周期阻尼比从 0.2 提到 0.6 左右」这个量级反推用频域或者简单试凑都行。中环俯仰角比例增益先取内环的 1/5~1/10保证中环带宽低于内环一个数量级。外环再降一个数量级。下滑道段的外环有一个坑高度误差直接乘增益得到航迹角指令本质是 PD。D 项如果用气压高度差分噪声会很大表现出来是升降舵持续小幅抖动。常见做法是用 GNSS 垂直速度或融合后的高度变化率代替差分或者干脆只对高度误差做 PI把阻尼交给内环。串级 PID 的边界很清楚它是单输入单输出逐环设计的每一环都假设其他环已经稳定。一旦速度通道和俯仰通道的耦合变强比如低速大迎角、或者风切变导致动压骤变这种「各管各的」假设就不成立会出现拉杆掉速、推油门爬升的耦合振荡。3.2 LQR把高度、下沉率、俯仰角一次装进代价函数LQR 的思路是把纵向小扰动模型写成状态空间然后用一个代价函数同时惩罚多个状态和控制量一次解出全状态反馈增益。它的优势是天然处理多变量耦合俯仰角、俯仰角速率、下沉率、高度误差的相对权重是你显式设定的不会像串级 PID 那样出现「内环调好了外环又乱」的反复。代价函数是标准的$$J \int_0^\infty \left(x^TQx u^TRu\right)dt$$Q 和 R 怎么定是唯一需要手艺的地方。我的一般流程是先把 Q 设成对角只保留高度和俯仰角速率两项非零R 设单位阵跑一遍看闭环极点逐步加入下沉率、俯仰角权重每次只改一个数量级观察增益变化定下来之后做一次饱和检查把 5 m 高度误差代入算出的舵偏角不能超过舵面行程的一半第 3 步是必须做的。LQR 只保证在配平点附近线性最优不保证舵量合理。见过不少团队算出增益直接上机结果一有 3 m 高度误差舵面就打满实际表现还不如一个调好的 PID。LQR 的边界在于模型精度。它对你给的 A、B 矩阵是「全信」的没有鲁棒性保证。如果你的气动导数来自经验估算误差 30% 以上LQR 解出来的增益很可能在实飞中表现得很「硬」抗扰差。补救办法通常是在 LQR 外面再套一层参考模型或者加积分状态但这又把它拉回了 PI 的思路。3.3 TECS 的总能量与能量分配着陆段油门和升降舵为什么要解耦TECS 是 Total Energy Control System 的缩写核心思想只有一句话把飞机的总能量和能量分配当作两个独立通道来控。总能量$E h V^2/(2g)$由油门控制能量分配$B h - V^2/(2g)$由升降舵控制为什么这个分解在着陆段特别好用因为着陆段最大的矛盾就是「想降下沉率就得抬手抬手就掉速」。传统串级结构里升降舵同时影响航迹角和速度油门也同时影响两者两个通道互相干扰。TECS 把这两个物理量重新组合成正交的一对让油门专心管「能量够不够」升降舵专心管「能量放在高度上还是速度上」。在下滑道上如果遇到顺风切变地速增加、空速下降总能量减少。TECS 的第一反应是加油门补总能量同时升降舵略微下压把能量分配往速度上偏而不是一味拉杆。这个行为恰好就是人飞行员会做的。这也是为什么 TECS 在风切变场景下的表现明显优于朴素的串级 PID。代价是复杂度。TECS 需要比较可靠的动压、真空速和升降速率信号还要处理推力模型的非线性和油门响应延迟。小型无人机上常见的 10 Hz 气压计加 GNSS 组合噪声水平往往撑不住 TECS 的全套逻辑实际落地时经常要退化成「伪 TECS」——只保留能量分配的思想外层还是 PID。3.4 三种方案怎么选一张按团队能力划分的对照表维度串级 PIDLQRTECS实现工作量低几百行中需要模型和求解器高需要能量估计与推力模型对模型精度要求低高中高抗风切变一般一般好参数可解释性好一参数一现象差Q/R 调整不直观中调试周期1~2 周3~4 周6 周以上适合阶段首次上自主降落有可靠气动数据、追求性能有成熟速度测量和推力模型我的建议是第一次做自主降落先用串级 PID 把全流程跑通把配平、参考轨迹、段间交接这些「非控制律」的部分全部验证正确。等这套流程稳定了再考虑把外环换成 LQR 或 TECS 去提升抗风性能。反过来做——一上来就上 TECS一旦出问题你分不清是控制律错了还是参考轨迹错了调试会变成玄学。4. 用 Python 搭一条可复现的着陆纵向仿真闭环配平、LQR、拉平律与出图原理讲完落到能跑的东西上。下面这套代码不是某个项目的源码而是一个最小可复现骨架5 个状态、1 个舵面、1 个油门把下滑道加指数拉平跑完输出三张关键曲线。你可以把 A、B 换成自己飞机的辨识结果其余结构不用动。4.1 先把纵向线性模型和配平点写成可替换的参数块import numpy as np from scipy.linalg import solve_continuous_are # 状态顺序: [u, w, q, theta, h] # u,w : 机体系速度扰动 (m/s)w 取机体下为正 # q : 俯仰角速率 (rad/s) # theta: 俯仰角 (rad) # h : 高度 (m) # 输入顺序: [de, dt] 升降舵 (rad)、油门 (0~1) # 注意以下数值仅作示例必须整体替换为你自己飞机的量纲导数 A4 np.array([ [-0.276, 0.021, -1.216, -0.188], [-5.124, -0.661, 10.755, 0.000], [ 0.227, -1.764, -8.949, 0.000], [ 0.000, 0.000, 1.000, 0.000], ]) B4 np.array([ [ 0.043, 0.500], # 油门对 u 的导数按你自己的动力系统标定 [-6.520, -0.089], [-9.195, -0.277], [ 0.000, 0.000], ]) V_trim 20.0 # 进场空速 m/s g 9.81 gamma_gs np.deg2rad(-3.0) # 下滑道角 # 高度状态由运动学补上: h_dot V*theta - w # 若你的模型里 w 符号相反这一行整体取反 A np.zeros((5, 5)) A[:4, :4] A4 A[4, 1] -1.0 A[4, 3] V_trim B np.zeros((5, 2)) B[:4, :] B4这段的关键是把高度当成一个纯运动学状态挂在纵向模型后面h_dot V·θ − w是小角度下的近似误差在 γ 10° 时小于 1.5%对着陆段够用。油门那一列的 0.5 是示例值真实飞机的油门到加速度增益必须实测写错这个数速度环的表现会完全对不上。A、B 里的其他数也一样直接抄别人的矩阵是仿真跑得通、实飞翻车的经典起点。4.2 六步搭出闭环参考轨迹、外环、内环、限幅、积分、记录# ---- 1. 只取 [w, q, theta, h] 四个状态做俯仰/高度综合速度交给油门 ---- idx [1, 2, 3, 4] A_sub np.zeros((4, 4)) A_sub[:3, :3] A4[1:4, 1:4] A_sub[3, 0] -1.0 # h_dot 中的 -w A_sub[3, 2] V_trim # h_dot 中的 V*theta B_sub np.zeros((4, 1)) B_sub[:3, 0] B4[1:4, 0] # ---- 2. LQR 求增益Q 的重心放在 h 和 theta 上 ---- Q np.diag([1.0, 20.0, 200.0, 10.0]) # 顺序: w, q, theta, h R np.array([[1.0]]) P solve_continuous_are(A_sub, B_sub, Q, R) K np.linalg.solve(R, B_sub.T P) # 形状 1x4 # 饱和检查5 m 高度误差下舵偏不应超过行程一半 de_check float(-K np.array([0, 0, 0, 5.0])) assert abs(de_check) np.deg2rad(12), f舵量过大: {np.rad2deg(de_check):.1f} deg # ---- 3. 拉平律参数让起始下沉率和下滑道接上 ---- h_flare 4.0 tan_gs abs(np.tan(gamma_gs)) L_flare h_flare / tan_gs # 水平拉平长度 ~76 m tau L_flare / V_trim # 等效时间常数 ~3.8 s def h_ref_of(s): 沿地速方向 s 的参考高度 s_f (H0 - h_flare) / tan_gs # 拉平起点对应的水平距离 if s s_f: return H0 - tan_gs * s, gamma_gs h h_flare * np.exp(-(s - s_f) / L_flare) return h, -h / L_flare # 参考航迹角随高度指数衰减 # ---- 4. 初值与积分器 ---- H0 50.0 x np.zeros(5); x[4] H0 3.0 # 故意给 3 m 初始高度误差 dt, T, s 0.01, 150.0, 0.0 de_int, v_int 0.0, 0.0 de_prev 0.0 log [] # ---- 5. 主循环外环给参考LQR 给舵PI 给油门 ---- for k in range(int(T / dt)): h_ref, gamma_ref h_ref_of(s) theta_ref gamma_ref # 小扰动下 alpha 偏置接近 0非零请补 alpha_trim x_sub x[idx] x_ref np.array([0.0, 0.0, theta_ref, h_ref]) de_cmd float(-K (x_sub - x_ref)) 0.05 * de_int # 舵面速率限幅真实舵机跟不上会让拉平段抖动 de_cmd np.clip(de_cmd, de_prev - np.deg2rad(60) * dt, de_prev np.deg2rad(60) * dt) de float(np.clip(de_cmd, np.deg2rad(-25), np.deg2rad(25))) de_int (h_ref - x[4]) * dt de_int float(np.clip(de_int, -2.0, 2.0)) # 抗饱和 # 速度环油门管空速和俯仰解耦 u_err 0.0 - x[0] v_int u_err * dt dt_cmd float(np.clip(0.5 0.15 * u_err 0.03 * v_int, 0.0, 1.0)) # ---- 6. 一步欧拉积分并记录 ---- xdot A x B np.array([de - de_prev, dt_cmd - 0.5]) x x xdot * dt de_prev de s (V_trim x[0]) * dt log.append((s, x[4], h_ref, xdot[4], np.rad2deg(de), dt_cmd)) if x[4] 0.3: break几个参数说明Q里的 200 是 θ 的权重10 是 h 的权重这个比例决定了「宁可多偏姿态也要把高度拉回来」还是反过来。着陆段一般让 h 权重不低于 θ否则高度收敛慢。de_int前面的 0.05 是手工加的慢积分用来消下滑道段的稳态高度偏差。线性模型是在平飞点配平的直接拿去跟踪 −3° 的斜线必然留一个固定偏差。积分系数从小往大调调到高度曲线贴合参考线就停再大会在拉平段引起过冲。舵面速率限幅那段不是装饰。真实舵机 30~60 °/s 很常见仿真里不加限幅LQR 会给出理论上最优但物理上做不到的指令实飞时表现为拉平段飞机「跟不上指令」下沉率曲线出现台阶。这个坑非常隐蔽因为仿真里一切正常。xdot里减去的de_prev和0.5是把绝对舵量换算成相对配平点的增量如果你直接把配平值写进 B 矩阵就不需要这一步。4.3 跑完看三张图高度-距离、下沉率-高度、升降舵与油门import matplotlib.pyplot as plt L np.array(log) fig, ax plt.subplots(1, 3, figsize(15, 4)) ax[0].plot(L[:, 0], L[:, 1], labelh) ax[0].plot(L[:, 0], L[:, 2], --, labelh_ref) ax[0].set_xlabel(水平距离 s (m)); ax[0].set_ylabel(高度 (m)) ax[0].set_title(高度跟踪); ax[0].legend(); ax[0].grid(alpha.3) ax[1].plot(L[:, 1], L[:, 3]) # 下沉率 vs 高度 ax[1].axhline(-0.3, colorr, ls:) # 接地包线 ax[1].set_xlabel(高度 (m)); ax[1].set_ylabel(下沉率 (m/s)) ax[1].set_title(拉平段下沉率); ax[1].grid(alpha.3) ax[2].plot(L[:, 0], L[:, 4], labelde (deg)) ax2 ax[2].twinx(); ax2.plot(L[:, 0], L[:, 5], g, labelthrottle) ax[2].set_xlabel(水平距离 s (m)); ax[2].set_ylabel(升降舵 (deg)) ax2.set_ylabel(油门); ax[2].set_title(执行机构); ax[2].grid(alpha.3) plt.tight_layout(); plt.show()三张图对应三类问题看的时候按这个顺序第一张看高度跟踪。曲线在拉平起点应该有明显的曲率变化但不断裂。如果出现台阶说明 τ 和下滑道角不匹配回去检查L_flare h_flare / tan_gs这一行有没有被改过。第二张看下沉率-高度关系这是最有信息量的一张。健康的曲线应该是一条从大约 −1 m/s 平滑下滑到 −0.3 m/s 附近的单调曲线且在 h0 处斜率不为零。如果曲线在中段出现回勾下沉率先减后增说明拉平过早飞机在还有高度的时候就把下沉率压到接近零然后失去速度又掉下去——这就是实飞里的「拉飘」。第三张看执行机构。升降舵曲线在拉平起点如果有明显的高频抖动八成是积分的抗饱和没做好或者速率限幅设得太紧。油门曲线在拉平段应该是缓慢下降的如果出现先增后减说明速度环在跟俯仰环抢需要降低速度环带宽。5. 着陆纵向控制的 5 个高频翻车点现象、原因与改法仿真跑通只是起点实飞暴露的问题集中在几个固定位置。下面这 5 条是我在不同项目里反复遇到的按「现象 → 原因 → 解决」记下来可以直接当检查表用。5.1 截获下滑道时高度剧烈超调之后一路振荡收敛现象飞机从进场高度切到下滑道高度先冲过参考线 10~15 m然后来回摆三四次才稳定整个过程中空速掉了 3~4 m/s。原因外环航迹角修正项没限幅加上积分器在截获前已经积了大量误差。截获瞬间指令从「保持高度」跳到「−3° 下滑」误差项直接打满飞机猛低头速度上来后又猛抬头。解决两件事一起做。第一给航迹角修正项限幅到 ±3°这个前面提过。第二积分器做条件积分——截获前 2 s 清零并冻结进入下滑道后再放开。另外可以在截获前预置一个 −3° 的俯仰角前馈让指令起点就在参考线附近而不是从零开始。5.2 拉平段升降舵高频抖动接地前飞机点头现象高度降到 5 m 以下升降舵开始 3~5 Hz 的小幅抖动机身能明显看到点头接地后弹跳一次。原因外环用了气压高度的差分做阻尼项。气压计噪声在低高度被地面反射和气流干扰放大差分后噪声更夸张直接灌进舵面。另外拉平段参考高度是指数衰减的越接近地面 dh/dt 越小信噪比进一步恶化。解决拉平段把外环的微分项换成融合后的垂直速度GNSS 加惯导或者干脆在 h 8 m 时切到纯下沉率指令——直接控 h_dot 而不是控 h绕开对高度微分。切换时要做无扰切换用当前实测下沉率初始化指令不能硬切。5.3 顺风切变下接地速度偏大冲出预定接地区现象进近时一切正常最后 20 m 遇到顺风增大空速掉、地速升飞机以明显高于预期的地速接地接地点比仿真远了 80~120 m。原因速度环只控空速不控地速遇到风切变时飞机保持了空速但地速增加同时升力不足导致下沉率增大两个效应叠加。如果外环增益偏低高度还会掉在参考线以下。解决短期靠速度环带宽——把空速环的积分时间缩短让它能跟上 2~3 s 量级的风速变化。中期靠前馈——把 GNSS 地速和空速之差即风速估计作为前馈加到油门指令上风来了先加油门再等误差积累。长期就是上 TECS让总能量通道统一处理。另外接地区判定要用实际接地点而不是预定接地点超出包线就复飞不要硬落。5.4 换了个电池配平全变了起飞就偏现象同一架飞机换了更重的电池包重心后移 8 mm进场时飞机持续抬头控制器拉杆到底仍然压不住最后失速。原因配平点是用固定质量特性算的重心变化直接改变俯仰力矩平衡。8 mm 的重心后移在小型固定翼上足以让配平舵量变化好几度。如果升降舵的权限本来就吃了大半剩下的余量不够补偿。解决一是每次飞行前用称重加力矩平衡实测重心把重心位置作为配平计算的输入而不是写死。二是在控制律里给升降舵留足权限——配平舵量不应超过行程的 40%剩下的余量要能覆盖重心前后各 5% 平均气动弦长的变化。三是加一个地面自检上电后让控制器算一遍当前配平如果舵量超出预设范围直接报警不要起飞。5.5 仿真完美实飞拉平段下沉率曲线出现台阶现象仿真里下沉率曲线光滑实飞数据回放发现拉平段每隔 0.2~0.3 s 出现一个小台阶整体看是锯齿状。原因三个可能叠在一起。舵机速率限制没建模控制周期和传感器更新周期不同步实际控制频率只有设计的 1/3参考轨迹按时间生成但实际按位置生成两者在有空速波动时不一致。解决先查控制周期把主循环的实际执行频率打出来很多人以为是 100 Hz实际因为串口阻塞只有 30 Hz。再查舵机速率把实测的 °/s 写进仿真的限幅里重新跑一遍看台阶是否复现。最后统一参考轨迹的生成方式——一律用位置触发不要用时间触发因为时间是匀速的飞机不是。6. 用蒙特卡洛把着陆品质打出来三个指标与一个改动习惯单次仿真跑得漂亮没有说服力因为你调参数的时候潜意识就在往那条好看的曲线上靠。真正能说明问题的是分布。我一般会盯三个指标触地下沉率目标 −0.3 m/s 以内且标准差小于 0.1、接地点相对预定点的纵向散布目标 3σ 小于 30 m、拉平起始高度的散布目标 3σ 小于 1.5 m。前两个决定落得安全不安全第三个决定你的拉平律稳不稳。扰动的撒法要贴着真实不确定性来不要均匀随机撒一堆没意义的量扰动源分布范围说明进场高度误差正态σ 3 m气压高度漂移空速偏差正态σ 1.2 m/s阵风与配平误差常值风均匀±6 m/s顺风最危险风切变梯度均匀0~2 (m/s)/10m只加在下滑道末端质量均匀±8%载荷与电池差异舵机延迟均匀40~120 ms一阶惯性等效跑 500 次每次重采样记录三个指标画成直方图。代码骨架就是在 4.2 的主循环外面套一层采样把H0、V_trim、gamma_gs、A、B里的关键项和舵机延迟参数换成采样值其余不动。rng np.random.default_rng(2024) results [] for _ in range(500): p dict( H0 50 rng.normal(0, 3.0), V 20 rng.normal(0, 1.2), wind rng.uniform(-6, 6), # 顺风为正 mass rng.uniform(0.92, 1.08), delay rng.uniform(0.04, 0.12), ) r run_landing(p) # 复用 4.2 的闭环加一阶延迟 results.append((r.sink_rate, r.touchdown_x, r.flare_h)) arr np.array(results) print(下沉率 均值/3σ:, arr[:,0].mean(), 3*arr[:,0].std()) print(接地点 3σ 散布:, 3*arr[:,1].std()) print(拉平高度 3σ 散布:, 3*arr[:,2].std())看结果的时候如果某一项 3σ 突然超标本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询