2. 仿真环境搭建要点:选择合适的仿真平台,配置HIL与SIL环境
仿真环境搭建,说白了就是给飞控算法找个「练手的地方」。你想想看,代码写完了直接上真机?那风险太大了。我见过太多团队,仿真没跑透就急着飞,结果炸机炸到怀疑人生。
这一节,我重点聊聊怎么选平台、怎么搭环境。核心就两件事:软件在环(SIL)和硬件在环(HIL)。搞懂了这两套东西,你从仿真到实飞的衔接会顺很多。
2.1 仿真平台怎么选?
市面上的仿真平台不少,但真正在工程里用得多的,其实就三个。我按自己的经验排了个序,你参考一下。
| 平台 | 适用场景 | 我的评价 |
|---|---|---|
| PX4 SITL + Gazebo | 纯软件仿真,快速验证逻辑 | 上手快,社区活跃,适合前期迭代 |
| MATLAB/Simulink | 控制算法开发、模型验证 | 建模能力强,但license贵,适合深度调参 |
| 硬件在环(HIL) | 带真实飞控硬件跑仿真 | 最接近实飞,但搭建成本高 |
我个人习惯:前期用PX4 SITL + Gazebo快速跑通逻辑,中期用Simulink做控制律调优,最后上HIL做全系统验证。一步到位上HIL?没必要,效率太低。
2.2 软件在环(SIL)环境搭建
SIL,说白了就是「纯软件跑飞控」。你的飞控代码在电脑上编译运行,仿真器(比如Gazebo)提供虚拟传感器数据。没有真实硬件,但能验证大部分逻辑。
搭建步骤其实不复杂,我拆成几步说:
- 安装PX4工具链:下载PX4源码,运行
make px4_sitl gazebo。第一次编译会下载依赖,耐心等。 - 启动Gazebo:默认会加载一个四旋翼模型。你可以换成固定翼、VTOL,甚至自定义机型。
- 连接QGroundControl:地面站会自动识别SITL实例。你可以在里面看状态、发指令。
- 跑一个简单任务:比如起飞、悬停、降落。看看飞控响应正不正常。
我在项目中遇到过:有一次SIL跑得好好的,但一上真机就偏航。查了半天,发现是仿真里的磁罗盘模型太理想了,没模拟真实干扰。所以啊,SIL只能验证逻辑,不能替代真实传感器测试。
--speed 2 参数,让仿真跑快一点。不过要注意,太快了可能会掩盖一些时序问题。
2.3 硬件在环(HIL)环境搭建
HIL就比SIL复杂多了。你得把真实的飞控硬件(比如Pixhawk)接上电脑,让它在仿真环境里「以为自己在真飞」。传感器数据、执行器信号,全部通过硬件接口模拟。
为什么要搞HIL?说白了,就是验证「硬件+软件」的配合。我见过有人SIL跑得飞起,一上HIL就炸——原因是硬件接口的时序延迟没处理好。
搭建HIL环境,核心步骤:
- 硬件连接:飞控通过USB或串口连电脑。注意供电要稳,别用劣质USB线。
- 配置仿真接口:PX4 HIL需要开启
HIL_MODE参数。Gazebo那边要切换到HIL模式。 - 校准传感器:虽然是在仿真里,但飞控的陀螺仪、加速度计还是要校准。不然数据会漂。
- 跑一个完整任务:从起飞到降落,模拟真实飞行场景。看看飞控有没有异常重启、丢数据的情况。
我曾经帮一个团队排查HIL问题。他们飞控在仿真里一切正常,但一上真机就失控。后来发现是HIL配置里忘了开 HIL_ACTUATOR 参数,导致执行器输出没被正确模拟。嗯,这种坑,踩过一次就记住了。
2.4 SIL vs HIL:什么时候用哪个?
这个问题,我经常被问到。其实没那么复杂,我画了张图帮你理解。
你看,决策逻辑其实很清晰。前期开发、算法调优,用SIL就够了。但如果你要验证硬件接口、传感器融合、任务调度的实时性,那就必须上HIL。
我个人习惯:SIL跑通后,至少留一周时间做HIL测试。别急着上真机,HIL能帮你省下至少三倍的炸机成本。
2.5 常见坑与避坑指南
做仿真环境搭建,有几个坑我几乎每次都会遇到。列出来,你注意一下。
- 时间同步问题:SIL和HIL的时间基准不一样。SIL用的是系统时间,HIL用的是飞控硬件时间。如果你发现仿真和实飞表现不一致,先检查时间配置。
- 传感器模型太理想:Gazebo默认的传感器模型噪声很小。但真实传感器噪声大得多。我建议你手动加一些高斯噪声,让仿真更真实。
- 忽略通信延迟:HIL环境下,飞控和仿真器之间的通信有延迟。如果你用USB,延迟一般在1-5ms。但如果你用无线数传,延迟可能到50ms以上。这个一定要测。
- 参数配置遗漏:比如HIL模式下忘了开
HIL_MODE,或者SIL模式下忘了设置SIM_*参数。这种低级错误,我犯过不止一次。