ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

飞行控制理论基础:从建模到调参与工程实践

飞行控制理论基础:从建模到调参与工程实践 飞行控制这块内容我前前后后翻来覆去学过好几遍也带着不少新人从零摸过。每次有人问我“飞控怎么入门”“为什么看了那么多代码还是心里没底”我几乎都会先让他回到最基础的那一套理论飞行控制理论基础。不是因为代码不重要而是因为代码只是理论的某种表达形式。你把方程、模态、稳定裕度这些东西吃透了再回头去看开源自驾仪的代码很多设计决策一眼就能懂反过来直接从代码入手调半天参数也不知道在调什么。这篇东西就是把我自己学习和带新人时反复强调的重点、踩过的坑以及实际应用中最常用的思考和操作方式整理出来。从事固定翼、多旋翼、直升机飞控或者只是对飞行控制感兴趣的读者都能在里面找到可以照着用的东西。1. 飞行控制到底在解决什么问题——整体思路的拆解1.1 飞控的本质控制一个六自由度刚体飞行器在空中的运动概括起来就是六个自由度的运动三个线运动前后、左右、上下和三个角运动俯仰、滚转、偏航。飞行控制的基础就是把飞行器抽象成一个质量分布已知、受气动力和力矩作用的刚体然后研究这个刚体在给定输入下的响应。这里有个特别容易被新手忽略的点飞控通常不直接“控制位置”。绝大多数飞行器控制方案是先把姿态角稳住再通过倾斜机身或改变推力方向让升力和推力的合力产生期望的平移加速度进而控制轨迹。说白了就是轨迹控制是外环姿态控制是内环。如果没有内环的姿态稳定外环的轨迹计算再好也没用。这就是为什么飞行控制理论里姿态动力学永远是重心和起点。我见过不少同学在仿真里直接给一个理想的推力矢量说“我的控制器能飞到目标点”。但一旦加上姿态动力学飞机翻筋斗或者发散他的控制器根本使不上力。把姿态回路和位置回路分层考虑这是飞行控制理论给的第一个核心框架。1.2 从开环操纵到闭环反馈的思维转变另一个需要建立的基础概念是“开环”和“闭环”的区别。早期飞机靠飞行员手动操纵飞行员的眼睛和感觉是传感器大脑是控制器手脚是执行机构。这是一个天然的闭环你看到机头偏了推杆压坡观察效果再修正。人在这个回路里承担了反馈、计算和执行的全部功能。飞控系统要做的就是把整个回路用机器替代陀螺仪和加速度计感知姿态控制器根据期望姿态和实际姿态的偏差计算舵面指令舵机驱动舵面改变气动力和力矩。这个结构理论篇一开始就会反复强调。你后续学到的几乎所有东西——传递函数、状态空间、PID、根轨迹、频域设计——都是在帮这个闭环里每个环节建立数学模型然后算出合适的增益。一定要搞清楚的一点是反馈不是越强越好。反馈增益太大舵面偏转剧烈相位延迟和饱和效应会让系统振荡发散增益太小又抵抗不了扰动。飞行控制本质上是“在灵敏度与稳定性之间折中”的艺术这个观念越早建立越好。1.3 为什么必须学理论三个真实翻车场景有些读者可能会说我直接调PID飞起来再说。但飞控不是一个“调坏了改回来就行”的东西。以我看到的几个典型翻车场景来说明第一个是持续性俯仰振荡。某飞手在自研固定翼上把姿态环比例增益调得过高结果一松杆飞机就开始前后点头幅度越来越大。这就是典型的短周期模态阻尼不足控制器让阻尼更低。懂理论的人会去看短周期频率和阻尼比而不是继续加大P。第二个是横航向振荡荷兰滚。在飞行过程中飞机方向舵受到一点扰动机头开始来回摆动带着滚转和偏航交互耦合。没有横航向模态分析经验的人根本不知道这个现象其实可以在设计阶段通过偏航阻尼器来抑制。第三个是仿真内看起来很好实飞一加上传感器噪声和舵机延迟就发散。仿真的飞机模型完美线性而实际系统存在纯延迟、噪声和舵面饱和。懂频域稳定裕度的人会在设计时就预留增益和相位裕度不懂的人只能在排故现场瞎试。这三个场景只是冰山一角。飞行控制理论的价值就是让你在没起飞之前就能用线性化模型、根轨迹和频域分析判断出很多问题省下大量试错时间。2. 建模基础飞行器运动方程与核心概念2.1 坐标系问题机体坐标与世界坐标必须分开建模的第一步是把“飞机受到哪些力”和“飞机往哪个方向飞”放到合适的坐标系里去描述。这个看起来简单实际上特别容易出问题。常用的坐标系有几套地面坐标系惯性系用于描述位置和航向、机体坐标系固定在飞机上用于描述姿态角速度和气动力、还有气流坐标系用于描述升力、阻力、侧力。为什么要分开因为在机体坐标系里力矩方程的形式最简单转动惯量是常数如果忽略燃油消耗带来的质量分布变化陀螺力矩的表达式也比较清楚。但是速度、位置这些量在地面坐标系里才有物理意义。所以飞控里必然涉及坐标转换转换公式就是欧拉角或四元数对应的旋转矩阵。我建议初学阶段至少亲手做一遍转换推导给定俯仰、滚转、偏航三个角把机体轴上的受力转换到地面系。这一步做完你对“坐标系变换”的恐惧就消除了一大半。还有一个必须知道的坑欧拉角表达姿态在接近±90°俯仰时会出现“万向锁”此时偏航和滚转的旋转轴重合微分方程产生奇异性。所以很多现代飞控用四元数表达姿态。理论基础部分不一定讲四元数微分但起码要知道欧拉角的局限性。2.2 六自由度方程与纵向/横航向解耦完整的六自由度刚体方程包括力方程3个质量 × 线加速度 气动力 推力 重力力矩方程3个转动惯量 × 角加速度 陀螺项 气动力矩 推力力矩写成标准形式后方程数量多变量耦合直接拿来分析相当复杂。好在大部分常规飞行器都有一个重要的几何特点关于机体XOZ平面对称。利用这个对称性可以把运动方程近似解耦成纵向运动和横航向运动。纵向运动指俯仰平面内的运动包含前向速度、垂向速度、俯仰角速度、俯仰角、迎角等变量。它可以进一步分解为短周期模态和长周期模态这个后面说。横航向运动指滚转–偏航耦合的运动包含滚转角速度、偏航角速度、侧滑角等变量。解耦之后每个方向的阶次降低可以用经典控制理论分别设计纵向控制器和横航向控制器极大地简化工程实现。需要提醒的是解耦是有条件的。飞行速度高、滚转角大、侧滑角大时纵向和横航向会产生明显耦合。飞控设计在初步阶段可以按解耦来做但在大机动飞行或飞翼布局没有垂直尾翼上必须考虑耦合影响。2.3 四个基本运动模态短周期、长周期、荷兰滚、螺旋这是飞行控制理论里面最有“手感”的部分。线性化后的飞机运动解耦后可以用一组特征根来描述动态特性。每一项特征根对应一种运动模态短周期模态纵向运动里频率较高通常在1~3 rad/s量级取决于飞机大小的运动。主要表现为迎角和俯仰角速度的快速变化周期短衰减快。短周期的阻尼比和自然频率决定了飞机俯仰响应的灵敏度和收敛性。飞控设计里的俯仰阻尼器主要就是改善这个模态。长周期模态也叫“沉浮模态”表现为速度与俯仰角的缓慢交替变化周期很长。想象一下你把油门保持不变飞机被扰动后它在保持飞行高度的同时速度和俯仰角做出缓慢的起伏。这个模态的阻尼通常还可以但增益设计不当会变得不稳定。荷兰滚模态横航向问题里的“麻烦精”。它表现为滚转、偏航、侧滑三者的耦合振荡频率较高阻尼一般偏小。最麻烦的是这个模态如果阻尼不足飞起来“左右摆尾滚转”操纵感受极差严重时可能导致侧滑失控。偏航阻尼器就是专门用来给它“加阻尼”的。螺旋模态一个非常慢的非周期或弱振荡模态通常对应缓慢的坡度变化和偏航变化。有些飞机螺旋模态不稳定但因为它非常缓慢飞行员来得及干预对飞控来说也可以通过适当的控制器来修正。我在实际调试时经常通过“观察模态”来判断建模和控制律的问题。如果闭环后短周期太响很可能是阻尼器增益不足或传感器滤波滞后如果长周期发散得很缓慢通常要考虑速度反馈或能量控制方案而不是单纯调姿态环。2.4 传递函数模型与状态空间模型怎么选飞行器建模可以用两种主要数学形式表达传递函数经典控制理论的基石适合单输入单输出系统。例如从升降舵偏角到俯仰角速度的传递函数可以直观地看到零点、极点、增益配合Bode图和根轨迹分析很方便。缺点是不容易处理多输入多输出和强耦合系统。状态空间模型现代控制理论的表达方式将所有状态变量速度、角速度、姿态角等写成向量输入是舵面偏角或推力输出是传感器测量值。状态空间的好处是统一、可以处理多输入多输出可以用于LQR、H∞、卡尔曼滤波等现代方法。实际工程里飞控开发往往先用状态空间建模方便引入传感器模型、扰动模型但设计控制律时又回到传递函数看频域特性、算稳定裕度。你不能只会其中一种。基础理论学习阶段我建议两个都学先用传递函数理解物理概念再找一本状态空间的书把它和矩阵理论结合起来。补充一个建模中经常被忽略的点线性化。飞行器的本质是非线性的但控制设计大多数情况是在某个平衡点比如定常平飞附近做小扰动线性化。线性化模型对姿态变化小的情况足够准确但大机动或大扰动时误差变大。这个“适用范围”必须时刻记在脑子里否则你把大机动仿真结果套到线性模型上分析会得到一堆没意义的结论。3. 核心设计环节从稳定性分析到控制律参数3.1 稳定性与操纵性一对需要折中的矛盾飞行控制理论中反复出现两个词稳定性和操纵性。稳定性是指飞机受到扰动后能自动回到原始状态的能力操纵性是指飞机对操纵输入做出响应、改变飞行状态的能力。直觉上我们希望飞机既稳定又好操纵。但二者往往是矛盾的稳定性太强飞机会“迟钝”对操纵输入反应迟钝稳定性太弱飞机虽然“灵巧”但稍微遇到气流就会飘。这就是为什么很多飞机自然特性并不理想——需要飞控系统来“重塑”动态特性。飞控里的增稳系统就是在不牺牲操纵性的前提下用反馈提高稳定性。典型例子就是增加阻尼给俯仰角速度反馈等效于增大俯仰阻尼但不会明显改变操纵增益。这个思路多次出现在设计里可以说是飞行控制的第一课。理解了这个你才能看懂为什么控制器里会有角速度反馈这一项。3.2 PID控制在飞控里怎么落地虽然现代控制方法很多但工程中最常见、最皮实耐用的还是PID控制。飞控里的姿态控制回路通常是个串级结构角速度环内环 姿态角环外环。内环反馈角速度来自陀螺仪外环反馈姿态角由陀螺仪积分或姿态解算得到。内环的物理意义就是前面说的阻尼器输出舵面指令外环根据姿态角误差给出期望角速度指令。把两个环分开设计比直接用一个大的姿态PID效果好得多因为内环能更快地抑制扰动。具体到每个项比例P相当于一个“复位弹簧”姿态角偏差越大舵面偏转越大驱动飞机回到目标姿态。P过小会反应迟钝过大会振荡。微分D提供阻尼作用在角速度上抑制振荡和超调。D过大会放大噪声导致舵面抖动。积分I消除稳态误差。比如飞机重心偏离、气动不对称导致需要长期压杆积分项会积累一个补偿量。但I也会有副作用饱和后产生大幅超调甚至积分饱和引发振荡所以需要抗积分饱和机制。实际整定时我的习惯顺序是先去掉I只调P和D让阶跃响应做到“快速但不振荡”然后加一点I消除稳态误差最后做小幅扰动测试确认没有振荡趋势。每一步都基于对模态的理解而不是瞎试。3.3 偏航阻尼器与增稳系统的工程实现增稳系统里最典型的就是偏航阻尼器。它的作用是抑制荷兰滚模态。工程实现上一般用偏航角速度来自陀螺仪作为反馈经过一个高通滤波器去除稳态偏航速率信号避免干扰协调转弯再加增益后驱动方向舵。高通滤波器很关键如果你不加它飞机在持续偏航转弯时阻尼器会错误地抑制你想要的偏航速率导致“阻尼器打架”的现象。类似地俯仰阻尼器用俯仰角速度反馈通常配合洗出washout滤波器或限制增益以便不影响飞机的稳态俯仰响应。增稳系统的设计不是简单越强越好而是在模态阻尼、操纵响应和噪声抑制之间找平衡。这些细节属于典型“书本上不写但工程里极重要”的东西。3.4 参数整定的手感与经验如果你在调参有一些基本的“手感”值得记录如果振荡频率高、速度很快通常是短周期/荷兰滚模态在振。先看阻尼如果波形像等幅振荡甚至发散优先检查角速度反馈增益是否过小或滤波延迟是否过大如果是收敛但超调大可以增加微分/角速度反馈。如果振荡很慢、周期好几秒多半是长周期/螺旋模态或外环参数问题需要检查速度反馈、积分项或外环增益。别用内环去解决外环的病。如果舵面一直在抖动没加速度计或陀螺噪声大那就先上滤波和降增益不要追求“看起来很灵敏”。如果试飞时某一侧方向明显迟钝考虑是否横向/航向增益匹配问题而不是PID参数本身。每次调参都要做记录什么条件下改了什么参数波形变化如何最终飞起来什么手感。这个习惯救过我太多次强烈建议培养。4. 常见问题与排查技巧实录从仿真到实飞4.1 气动参数不准仿真模型带病上天飞行控制设计依赖线性化模型而模型里的参数比如Cm_alpha——俯仰力矩对迎角的导数、Cl_beta——滚转力矩对侧滑角的导数来自风洞实验、CFD或系统辨识。任何一个参数误差很大设计出来的控制律在实际飞机上表现就会离谱。我曾经遇到一个项目仿真里设计的俯仰增益很合适但在实飞中飞机持续出现1.5Hz左右的俯仰振荡。后来一查是因为仿真用的Cm_alpha比真实值偏大导致控制器实际上获得了更大的回路增益相位裕度不足。解决方法是重新做扫频飞行辨识用实际频率响应修正模型然后重新设计增益。这件事给我的教训是建模数据必须自己心里有数不能拿过来就用如果条件允许至少做一次飞行辨识来验证模型。4.2 舵面饱和与执行机构延迟控制量的上限执行机构不是理想环节。舵机有角度限制、速率限制和延迟。这些非线性特性对飞行控制影响巨大。大增益会让舵面指令迅速打满出现“速率饱和”一旦饱和舵面实际偏转率小于指令变化率控制器以为自己已经输出很大力矩但飞机根本没反应过来后续就会缺乏阻尼甚至振荡。这就是所谓“积分饱和”和“执行器饱和”引发的不稳定。理论设计时最好做一个“返回-限制”检查看看在所有飞行条件下控制指令是否会超出舵面偏角和速率限制。如果会要么降低回路增益要么增加前馈补偿要么对积分项做限制。很多优秀的控制律恰恰是能在不饱和的前提下做到最大性能的。4.3 传感器噪声与滤波滞后一个你躲不掉的两难飞控系统依赖陀螺仪、加速度计等传感器。陀螺仪有噪声和零偏漂移加速度计在机动时对引力矢量感知不准确。为了让姿态解算平滑我们会加低通滤波或卡尔曼滤波。但滤波必然带来相位滞后控制器看到的角速度比真实角速度“迟”了一点这个延迟在反馈回路里相当于附加了相位滞后会侵蚀稳定裕度。我做一次飞控调试时为了抑制陀螺噪声加入了截止频率较低的滤波器结果试飞时突然出现高频振荡。一查滤波器引入的相位延迟导致角速度环裕度不足。最终我在噪声抑制和延迟之间取了一个平衡还换了更高带宽的陀螺仪。这个坑提醒我滤波参数也是控制律的一部分不能只看“滤波效果”还要看对闭环的影响。4.4 从仿真到实飞如何缩小差距仿真到实飞之间的矛盾是过去几十年飞控行业的永恒话题。我的建议是分步走先在纯数学仿真里把控制律调到理论合格稳定裕度够、响应满足指标。增加非线性环节舵面限制、速率限制、传感器噪声、量化延迟。这是最廉价也最能暴漏问题的一步。做硬件在环仿真把真实飞控硬件和数据链放进去。这一步能摸清代码时序、传感器采样率等纯数学仿真看不到的问题。小步实飞先做很保守的参数逐步增加机动性每次都留足安全裕度。如果条件允许用试飞数据进行模型辨识修正仿真模型把实验室和真实飞机的差距闭环掉。这套流程不是“标准文档”里的空话而是我在多个项目里验证过的做事顺序。它尤其适合预算有限、没有大型风洞的团队。5. 一些落地经验与学习路径建议5.1 学习路线的个人建议如果你刚接触飞行控制一定要克服“只想调参数”的诱惑。我的推荐路线是先把飞行器运动方程推到能背下来的程度六自由度方程、线性化、坐标转换。这一步慢但后面受益无穷。把纵向/横航向模态的物理含义彻底搞懂。每个模态什么时候出现对飞控意味着什么能闭着眼说出来。用经典控制理论重新理解PID带宽、相位裕度、增益裕度这些概念比“P大了会振荡”深刻得多。在开源工具中建立一个小型固定翼或四旋翼仿真模型用MATLAB/Simulink、Python控制库都可以自己用状态空间模型设计LQR或PID观察响应曲线。这个环节会把你从“看理论”变成“用理论”。推荐几个顺手就能用的工具MATLAB Aerospace Blockset方便但商业、Python的Control库 Flight Dynamics模型免费、灵活、ArduPilot/PX4的SITL仿真可以直接看真实飞控代码的行为。不要沉迷工具但工具确实能帮你把脑中的理论具象化。5.2 我在实际项目中坚持的做法最后分享几个我个人的实操习惯。第一任何控制律改动都必须配套“故障预案”万一飞机发散有什么保护策略是切手动还是加限幅这个比控制律本身更重要。第二频繁使用“扫频”而不是“阶跃”来观察飞机动态特性。阶跃响应容易掩盖高频模态扫频能直接看到各个频率的响应和相位对于分析振荡问题非常高效。第三每次飞行结束后记录全部日志包括控制器输出、传感器原始数据、实际舵面位置并和仿真做一次对比。哪怕是“看起来正常”的飞行也能帮你发现早期问题。飞行控制理论不是书架上落灰的公式它是一系列从物理到数学再到工程实现的链条。链条上的每一环都理解到位了你才能在天上出问题时保持冷静并有逻辑地排查。继续往下钻研的前方是更深的非线性控制、自适应控制、鲁棒控制但地基就是这章的内容。把这章“吃透”胜过你刷一万行飞控代码。
返回列表