3. HIL 测试环境搭建:硬件选型与软件栈

好,咱们正式开始搭建 HIL 环境。这一章内容很关键,说白了就是“配齐家伙事儿”。硬件选错了,后面跑起来全是坑;软件栈没搭对,调试能让你怀疑人生。我这些年踩过的雷,今天一次性给你讲透。

3.1 硬件选型:实时机、接口板、信号调理

硬件选型是 HIL 平台的骨架。我个人的习惯是:先定实时机,再配接口板,最后看信号调理。顺序反了容易出问题。

3.4.1 实时机选型

实时机是 HIL 的大脑。它要保证每个控制周期(通常 1-5 ms)内,模型计算和 I/O 刷新都能准时完成。一旦超时,测试结果就废了。

参数 入门级 工业级 说明
CPU 架构 x86_64 x86_64 / ARM x86 生态最成熟
核心数 4 核 8 核以上 至少留 1 核给 I/O
实时系统 Simulink Real-Time Speedgoat / NI PXI 商用方案更省心
典型型号 Speedgoat Baseline Speedgoat Performance 按预算选
我的经验: 入门阶段用 Speedgoat Baseline 完全够用。我曾经在一个项目中用 4 核跑 PX4 SITL + 飞控模型,CPU 占用率才 60% 左右。别一上来就上 8 核,浪费钱。

3.4.2 接口板选型

接口板是实时机和飞控之间的“翻译官”。它负责把数字信号转成模拟信号,或者反过来。常见的接口类型有:

  • PWM 输出:模拟舵机/电机控制信号,频率 50-400 Hz
  • 模拟输入:采集传感器电压信号,比如气压计、IMU
  • 数字 I/O:处理开关量、中断信号
  • CAN / RS232:外接 GPS、数传等设备

我建议选接口板时,至少预留 20% 的通道余量。为什么?因为测试过程中经常会临时加信号。我吃过这个亏——有一次项目中期要加一个舵机反馈信号,结果接口板通道全满了,只能外挂调理板,麻烦得要命。

3.4.3 信号调理

信号调理是 HIL 里最容易被忽视的环节。说白了,就是把飞控的真实信号电平(比如 5V PWM)转换成实时机能接受的电压范围(比如 0-3.3V)。

注意: 飞控输出的 PWM 信号通常是 5V 逻辑电平,而大部分实时机接口板只支持 3.3V。直接接上去会烧板子!我曾经亲眼见过一个实习生把 5V 信号怼进 3.3V 接口,板子当场冒烟。

信号调理模块的核心参数:

  • 隔离电压:至少 1000V,防止地环路干扰
  • 带宽:至少 1 MHz,保证 PWM 信号不失真
  • 通道数:按实际需求 x1.5 配置

3.2 软件栈:MATLAB/Simulink、PX4 SITL、QGroundControl

软件栈是 HIL 的灵魂。我习惯把软件分成三层:

  1. 实时模型层:MATLAB/Simulink,跑飞控动力学模型
  2. 飞控层:PX4 SITL,模拟真实的飞控固件
  3. 地面站层:QGroundControl,监控和调参

3.2.1 MATLAB/Simulink 配置

Simulink 负责搭建飞行器动力学模型。这里有几个关键点:

  • 求解器:用固定步长,步长 1 ms 或更小
  • I/O 驱动:用 Simulink Real-Time 的 I/O 模块库
  • 模型接口:PWM 输入、传感器输出、GPS 数据

核心配置示例:

% 设置固定步长求解器
set_param('myModel', 'Solver', 'ode4');
set_param('myModel', 'FixedStep', '0.001');

% 添加 I/O 模块
% 使用 Simulink Real-Time 的 'PWM Read' 和 'Analog Output'

3.2.2 PX4 SITL 搭建

PX4 SITL 是软件在环仿真。它跑在 Ubuntu 上,通过 UDP 和 Simulink 通信。搭建步骤:

  1. 安装 PX4 工具链(make、gcc、python)
  2. 下载 PX4 源码,编译 SITL 版本
  3. 启动 SITL,配置 UDP 端口
避坑指南: 我曾经在 Ubuntu 20.04 上编译 PX4,结果因为 GCC 版本不兼容,编译了整整 3 个小时才成功。建议直接用 PX4 官方推荐的 Ubuntu 版本和 GCC 版本,别自己折腾。

3.2.3 QGroundControl 配置

QGroundControl 是地面站,用来监控飞控状态、调参、看日志。在 HIL 模式下,它通过 UDP 连接 PX4 SITL。

配置要点:

  • 通信协议:MAVLink v2
  • 连接方式:UDP,端口 14550
  • 参数同步:自动从 SITL 读取

3.3 系统连接图

下面这张图展示了 HIL 测试平台的完整连接关系。我画这张图的时候,特意把信号流向标清楚了,方便你对照搭建。

HIL 测试平台系统连接图 HIL 测试平台系统连接图 实时机 Simulink Real-Time 动力学模型 接口板 PWM / 模拟 / 数字 信号调理 飞控 PX4 SITL 真实固件 地面站 QGroundControl 监控 / 调参 模拟信号 PWM / 传感器 MAVLink UDP 信号流向说明: 1. 实时机运行动力学模型,输出传感器模拟信号(IMU、气压计等) 2. 接口板将模拟信号调理为飞控可识别的 PWM / 模拟电压 3. 飞控(PX4 SITL)接收信号,运行控制算法,输出舵机/电机 PWM 4. 地面站通过 UDP 监控飞控状态,实时调参

3.4 搭建步骤总结

最后,我把搭建步骤整理成一个清单。你照着做,基本不会出大问题。

步骤 操作内容 预计耗时 注意事项
1 安装实时机系统(Simulink Real-Time) 2 小时 确认网卡驱动兼容
2 配置接口板驱动和信号调理 1 小时 先测通道通断
3 搭建 PX4 SITL 环境 3 小时 用官方 Docker 镜像省时间
4 配置 QGroundControl UDP 连接 0.5 小时 端口别冲突
5 联调测试:跑一个简单的悬停场景 2 小时 先开 SITL,再开 Simulink
重要提醒: 联调时一定要先启动 PX4 SITL,再启动 Simulink 模型。顺序反了,Simulink 会一直等待 SITL 的 UDP 握手信号,导致模型卡死。我刚开始做 HIL 时,因为这个顺序问题浪费了整整一个下午。

嗯,硬件选型和软件栈搭建就讲到这里。你把这些基础打牢了,后面跑测试案例就会顺手很多。记住一句话:HIL 测试,七分在搭建,三分在测试。环境搭好了,后面就是水到渠成的事。