飞控系统核心架构:传感器、执行机构、飞控计算机与RTOS

做HIL测试,首先得把飞控系统本身摸透。说白了,你得知道被测对象长什么样,才能搭好测试台架。这一章咱们就拆开看看,一套完整的飞控系统到底由哪些部分组成。

我个人习惯把飞控系统分成四大块:感知(传感器)、决策(飞控计算机)、执行(舵机/电机)、调度(RTOS)。缺一个,这飞机都飞不起来。

2.1 传感器:飞控的“眼睛”和“耳朵”

传感器负责告诉飞控计算机“我现在在哪、姿态怎么样、飞得多快”。没有传感器数据,飞控就是瞎子。

2.1.1 IMU(惯性测量单元)

IMU是飞控最核心的传感器,它包含三轴加速度计和三轴陀螺仪。加速度计测比力,陀螺仪测角速度。两者融合,才能算出姿态角(横滚、俯仰、偏航)。

关键参数: 采样率(通常200Hz-1kHz)、量程(加速度计±2g~±16g,陀螺仪±250°/s~±2000°/s)、噪声密度。

我在项目中遇到过一个问题:某款IMU在高温下零偏漂移严重,导致悬停时飞机慢慢往一边偏。后来我们加了温度补偿模型,才把问题压下去。嗯,选型时一定要看温漂系数。

2.1.2 GPS(全球定位系统)

GPS提供位置和速度信息,更新率通常5Hz-10Hz。它和IMU是天生一对——IMU短时精度高但会漂移,GPS长期稳定但更新慢。两者通过卡尔曼滤波融合,才能得到可靠的导航解。

传感器 优点 缺点 典型更新率
IMU 高频、不受外界干扰 随时间漂移 200-1000 Hz
GPS 绝对位置、无漂移 更新慢、易受遮挡 5-10 Hz
气压计 低成本测高 受气流/温度影响大 25-100 Hz
避坑指南: 我曾经在HIL测试中忘记模拟GPS的更新延迟,结果真实飞控在室内收不到星,导致融合滤波器发散。后来我强制在仿真中注入5Hz的GPS数据,并加入随机时延,才复现了真实场景。

2.1.3 气压计

气压计通过测量大气压强来推算高度。每上升100米,气压大约下降12hPa。但气压计对气流非常敏感——无人机旋翼下洗气流会直接吹偏读数。

你想想看,如果飞控只用气压计定高,飞机稍微一抖,高度就跳来跳去。所以实际中气压计数据要经过低通滤波,并且和IMU的垂直加速度融合。

2.2 执行机构:飞控的“手脚”

传感器告诉飞控“发生了什么”,执行机构负责“去做什么”。在HIL测试中,执行机构通常被模拟,但你必须理解它们的特性。

2.2.1 舵机(Servo)

舵机用于控制固定翼的舵面(副翼、升降舵、方向舵)或旋翼机的倾斜盘。它接收PWM信号(通常50Hz,脉宽1ms-2ms对应0°-90°)。

  • 关键指标: 响应速度(0.1s/60°)、扭矩(kg·cm)、死区(通常1-2μs)。
  • HIL模拟要点: 需要模拟PWM信号采集,并加入舵面响应延迟和限位。

我记得有一次测试,舵机模型没加死区,结果飞控输出微小修正时,仿真里的舵面立刻响应,但实际舵机根本不动。这导致HIL测试通过,真机试飞却震荡。后来我在模型里加了±1.5μs的死区,才对齐。

2.2.2 电机(Motor)

电机配合螺旋桨产生推力。飞控通过ESC(电子调速器)控制电机转速,ESC同样接收PWM信号(通常50Hz-400Hz)。

电机模型在HIL中很关键——你要模拟电机响应延迟(从PWM指令到实际转速变化,通常几十毫秒)和推力-转速曲线(通常不是线性的)。

注意: 电机堵转、过热、电池电压跌落等故障模式,在HIL测试中一定要覆盖。我曾经漏了电池电压跌落场景,结果飞控在低电量时还在满油门输出,导致仿真坠机——但真实情况更危险。

2.3 飞控计算机:Pixhawk与Cube Orange

飞控计算机是决策中心。它读取传感器数据,运行控制算法,输出PWM指令。目前最主流的是Pixhawk系列和Cube Orange。

2.3.1 Pixhawk

Pixhawk是开源飞控硬件的标杆。它基于STM32F4/F7系列MCU,主频168MHz-216MHz,内置IMU、气压计,支持多路PWM输出和UART/CAN/I2C接口。

  • 典型型号: Pixhawk 4(STM32F765,216MHz),Pixhawk 6C(STM32H743,480MHz)。
  • HIL连接: 通常通过USB虚拟串口或UART与仿真机通信,接收MAVLink协议的数据。

2.3.2 Cube Orange

Cube Orange是Hex/ProfiCNC推出的高端飞控,基于STM32H7系列,主频400MHz+,带冗余IMU(三套)和冗余气压计。适合工业级或科研用途。

特性 Pixhawk 4 Cube Orange
MCU STM32F765 STM32H753
主频 216 MHz 400 MHz
IMU冗余 双套 三套
典型用途 教育/科研/轻量无人机 工业/测绘/重载无人机
我的经验: 做HIL测试时,尽量用和真机相同的飞控硬件。如果条件不允许,至少保证MCU架构一致(比如都用STM32F4),否则时序行为可能不同,导致测试结果不可信。

2.4 实时操作系统(RTOS)

飞控必须运行在RTOS上,因为控制任务有严格的截止时间。你想想看,如果姿态控制循环延迟了10ms,飞机可能已经翻了。

常用的飞控RTOS有:

  • NuttX: PX4飞控栈的默认RTOS,POSIX兼容,支持多任务、文件系统、网络协议栈。
  • ChibiOS: 轻量级RTOS,ArduPilot早期使用,现在部分版本仍支持。
  • FreeRTOS: 通用RTOS,一些定制飞控会使用。

RTOS的核心机制是任务调度和中断管理。飞控中典型的任务优先级如下:

  1. 传感器采集(最高优先级): 通过SPI/I2C读取IMU数据,通常1kHz。
  2. 姿态估计: 运行卡尔曼滤波,更新姿态和位置。
  3. 控制律计算: PID控制器输出。
  4. PWM输出: 将控制量转为PWM脉宽。
  5. 日志/通信(最低优先级): 记录数据、发送MAVLink。
HIL测试中的RTOS陷阱: 我曾经在HIL测试中遇到一个问题——仿真机发送传感器数据的速度比真实IMU快得多,导致飞控的传感器采集任务一直处于就绪状态,挤占了控制任务的时间。结果控制律计算周期抖动很大,飞控表现异常。后来我在仿真中加入了传感器数据发布的随机延迟,才让RTOS的调度行为接近真实情况。

2.5 飞控系统核心架构总览

下面这张图把整个飞控系统的数据流和模块关系画清楚了。你可以看到,传感器数据经过飞控计算机处理后,输出给执行机构,而RTOS负责调度所有任务。

飞控系统核心架构图 飞控系统核心架构 传感器组 IMU (加速度计+陀螺仪) GPS (位置+速度) 气压计 (高度) 磁力计 (航向) 飞控计算机 Pixhawk / Cube Orange MCU: STM32F4/F7/H7 运行: PX4 / ArduPilot 通信: MAVLink 执行机构 舵机 (舵面/倾斜盘) 电机 + 螺旋桨 ESC (电子调速器) PWM信号 (50-400Hz) RTOS (实时操作系统) NuttX / ChibiOS / FreeRTOS 任务调度 + 中断管理 优先级: 采集 > 估计 > 控制 > 日志 SPI/I2C PWM 状态反馈 调度 HIL测试要点 传感器数据需模拟真实时序和噪声 | 执行机构模型需包含延迟和死区 | RTOS调度行为必须与真实飞控一致

这张图把四大模块的关系理清了。传感器数据通过SPI/I2C总线送入飞控计算机,飞控运行控制算法后输出PWM给执行机构,而RTOS在底层负责所有任务的实时调度。箭头上的文字标明了通信协议和数据流向。

核心要点: HIL测试的本质就是模拟传感器数据输入飞控,并采集执行机构输出进行验证。你不需要真的让电机转起来,但必须让飞控“以为”它在真实环境中。