4、飞控系统概述:飞控组成、传感器、执行器、控制律、状态估计、任务管理
飞控系统(Flight Control System, FCS)是无人机或飞行器的“大脑”与“神经中枢”,其核心任务是通过感知飞行状态、计算控制指令、驱动执行机构,使飞行器按照预定指令或任务规划稳定飞行。在MATLAB飞控仿真中,理解飞控系统的组成与数据流是建立仿真模型的第一步。本章将从飞控的硬件与逻辑组成出发,深入剖析传感器、执行器、控制律、状态估计与任务管理五大模块的功能边界与相互耦合关系,为后续章节的模型搭建与代码实现奠定基础。
上图展示了飞控系统的核心数据流架构。在MATLAB仿真环境中,我们通常将飞控系统拆分为独立的子系统模块,每个模块对应一个函数或Simulink子系统。这种模块化设计不仅便于调试,也使得算法替换与参数优化更加灵活。下面我们将逐一剖析每个模块的功能、实现要点及在仿真中的建模方法。
4.1 飞控系统的硬件组成与逻辑分层
核心原理:飞控系统的硬件架构通常分为三层:感知层、决策层与执行层。感知层由各类传感器组成,负责采集飞行器自身的运动状态与环境信息;决策层是飞控计算机(Flight Controller, FC),运行状态估计算法与控制律算法,生成控制指令;执行层包括电机、舵机等执行机构,将控制指令转化为物理动作。在逻辑上,飞控系统还包含任务管理层,负责飞行模式切换、航点规划与应急处理。
在MATLAB仿真中,我们不需要模拟真实的硬件电路,但需要建立各模块的数学模型。例如,传感器模型需要包含噪声、偏差、标度因数误差与量化误差;执行器模型需要包含响应延迟、饱和特性与死区效应。这些模型参数通常来源于硬件数据手册或实测数据。
| 层级 | 硬件组成 | 仿真模型要点 | MATLAB实现方式 |
|---|---|---|---|
| 感知层 | IMU、GPS、气压计、磁力计 | 噪声特性、采样频率、时间同步 | 使用imuSensor、gpsSensor对象或自定义噪声模型 |
| 决策层 | 飞控计算机(MCU/SoC) | 计算延迟、控制频率、算法逻辑 | MATLAB Function块或Stateflow状态机 |
| 执行层 | ESC+电机、舵机 | 一阶惯性延迟、PWM分辨率、饱和 | 传递函数或查表模型 |
| 任务层 | 地面站、机载任务计算机 | 模式切换逻辑、航点队列 | Stateflow或MATLAB脚本 |
4.2 传感器系统:测量、噪声与标定
核心原理:传感器是飞控系统的信息源,其测量质量直接决定了状态估计与控制性能。常见的传感器包括:
- IMU(惯性测量单元):包含三轴陀螺仪(角速度)与三轴加速度计(比力)。陀螺仪存在零偏稳定性与角度随机游走,加速度计存在低频噪声与振动敏感问题。
- 磁力计:提供航向参考,但易受电机磁场与周围铁磁物质干扰,需要校准。
- 气压计:用于高度估计,对气流扰动敏感,响应较慢。
- GPS:提供位置与速度,更新率低(通常5-10Hz),在城市峡谷或室内可能失效。
- 空速计:固定翼飞行器必需,用于测量相对气流速度。
判断方法:在仿真中,我们需要为每个传感器建立误差模型。以IMU为例,其测量模型可表示为:
ω_meas = ω_true + b_gyro + n_gyro
a_meas = a_true + b_accel + n_accel + R * g
其中,b为随机游走偏差,n为高斯白噪声,R为姿态旋转矩阵,g为重力矢量。在MATLAB中,可以使用imuSensor系统对象快速生成带噪声的IMU数据,也可以手动编写噪声生成函数。
4.3 执行器系统:延迟、饱和与混控
核心原理:执行器将控制律计算出的期望力矩/推力转换为物理动作。对于多旋翼,执行器为电机+电调(ESC),控制信号为PWM占空比;对于固定翼,执行器包括副翼、升降舵、方向舵舵机以及油门舵机。执行器模型的关键参数包括:
- 响应延迟:从指令到转速/舵面达到目标值的时间常数,通常为一阶惯性环节。
- 饱和特性:电机转速有上下限,舵面偏转角度有限位。
- 死区:小信号输入时执行器不响应。
- 混控矩阵:将控制律输出的滚转、俯仰、偏航力矩与总推力映射到各电机/舵面的具体指令。
操作流程:在MATLAB中建立执行器模型时,建议使用以下步骤:
- 根据机型确定执行器数量与布局(如四旋翼的X型或十字型)。
- 建立混控矩阵,将期望力矩与推力转换为各电机转速指令。
- 为每个执行器添加一阶惯性环节与饱和限幅。
- 将转速指令转换为PWM占空比(考虑ESC的线性化区间)。
% 四旋翼混控矩阵示例(X型布局)
mixer = [1 1 1 1; % 总推力
1 -1 1 -1; % 滚转
1 1 -1 -1; % 俯仰
-1 1 1 -1]; % 偏航
% 期望力矩 tau = [thrust, roll, pitch, yaw]
motor_cmds = mixer * tau;
4.4 控制律:从PID到现代控制
核心原理:控制律是飞控系统的核心算法,其任务是根据期望状态与当前状态的偏差,计算执行器指令。最常见的控制结构为串级PID:内环控制角速度(快回路),外环控制姿态角(慢回路),最外层控制位置。对于固定翼,还需要考虑空速保持与航迹控制。
判断方法:在MATLAB中设计控制律时,通常采用以下流程:
- 建立被控对象的线性化模型(在悬停或平飞状态点)。
- 使用
pidTuner或手动整定内环PID参数。 - 验证内环闭环带宽,确保外环带宽为内环的1/5~1/3。
- 加入抗积分饱和、微分滤波等工程措施。
对于复杂飞行任务,可引入LQR、H∞或模型预测控制(MPC),但PID因其结构简单、鲁棒性强,仍是工程首选。
pid对象构建控制器,并通过feedback函数构建闭环系统,进行频域分析。结果显示,内环带宽为12 rad/s,外环带宽为3.5 rad/s,满足设计准则。4.5 状态估计:多传感器融合
核心原理:状态估计模块负责从带噪声的传感器数据中提取飞行器的最优状态估计(姿态、位置、速度)。由于单一传感器无法在全工况下提供可靠数据,必须采用多传感器融合。最常用的算法是扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)。
操作流程:在MATLAB中实现EKF的步骤为:
- 定义状态向量(如四元数+位置+速度+传感器偏差)。
- 建立状态转移方程与观测方程。
- 初始化协方差矩阵。
- 在每个时间步执行预测与更新。
% EKF预测步骤(简化)
x_pred = f(x_est, u); % 状态预测
P_pred = F * P_est * F' + Q; % 协方差预测
% 更新步骤
K = P_pred * H' * inv(H * P_pred * H' + R);
x_est = x_pred + K * (z - h(x_pred));
P_est = (eye(n) - K * H) * P_pred;
在仿真中,状态估计的性能直接影响控制效果。如果估计的姿态存在滞后或噪声,控制律将产生不必要的修正动作。
insEKF对象快速搭建GPS+IMU融合的导航系统,也可以使用navStateEstimator进行自定义融合。建议初学者先使用MATLAB内置的imuSensor与gpsSensor生成数据,再编写自己的EKF代码,以加深理解。4.6 任务管理:模式切换与应急处理
核心原理:任务管理层负责飞行模式的切换(手动、定高、悬停、自动航线、返航等),以及异常情况下的应急处理(低电量返航、GPS丢失、遥控信号丢失等)。在仿真中,任务管理通常使用有限状态机(FSM)建模。
案例拆解:以无人机自动航线任务为例,任务管理模块需要处理以下状态:
| 状态 | 触发条件 | 动作 | 退出条件 |
|---|---|---|---|
| 起飞 | 地面站指令 | 垂直爬升到安全高度 | 达到目标高度 |
| 航点飞行 | 起飞完成 | 依次飞向各航点 | 所有航点完成 |
| 返航 | 任务完成/低电量 | 飞向起飞点 | 到达起飞点 |
| 降落 | 到达起飞点 | 垂直下降 | 触地 |
| 紧急降落 | GPS丢失/电机故障 | 立即降落 | 触地 |
在MATLAB中,可以使用Stateflow图表来建模这些状态及转换条件。每个状态内部可以调用控制律模块与状态估计模块,形成完整的仿真闭环。
4.7 常见误区与总结复盘
常见误区:
- 误区一:忽略传感器采样率差异。在仿真中,如果所有传感器都使用同一采样率,会掩盖真实系统中的时间同步问题。
- 误区二:执行器模型过于理想。真实电机存在延迟与饱和,忽略这些特性会导致仿真中控制效果良好,但实飞时振荡。
- 误区三:状态估计与控制律分开调试。实际上,估计误差会直接影响控制性能,应联合调试。
- 误区四:任务管理逻辑过于简单。真实飞行中,模式切换需要处理边界条件(如切换瞬间的指令跳变),仿真中应加入平滑过渡。
总结复盘:本章从系统角度剖析了飞控的五大组成模块。在MATLAB仿真中,建议按照“传感器模型→状态估计→控制律→执行器模型→任务管理”的顺序逐步搭建,每完成一个模块就进行单元测试。最终,将所有模块集成到Simulink中,进行硬件在环(HIL)仿真验证。飞控仿真的核心价值在于:通过参数化建模,快速验证算法在不同工况下的表现,减少实飞试验的次数与风险。
simulink的PIL(Processor-in-the-Loop)模式,将控制律代码部署到真实的飞控硬件上运行,传感器与执行器仍使用仿真模型,这样可以提前发现代码实现中的bug,而无需进行危险的实飞测试。