1. 课程导入与HIL仿真全景
在无人机、自动驾驶与机器人系统中,飞控是决定飞行安全与任务成败的核心。当系统引入视觉相机与激光雷达后,感知、定位、规划与控制之间形成了复杂的闭环:相机提供纹理与语义信息,激光雷达提供高精度三维几何信息,飞控则依据融合结果输出姿态与位置控制指令。若直接把这些传感器装到真机上反复试飞,不仅成本高、风险大,而且很多极端场景(如传感器失效、目标丢失、强光干扰、点云稀疏)几乎无法稳定复现。硬件在环(Hardware-in-the-Loop,HIL)仿真正是为解决这一矛盾而生的工程方法。
HIL仿真的本质,是让真实的飞控硬件运行在虚拟的传感器与虚拟的飞机之间。飞控仍然执行它原本的固件与算法,但它接收到的IMU、磁力计、气压计、视觉图像、激光点云等数据,不再来自真实传感器,而是由仿真计算机实时生成并通过接口注入;飞控计算出的电机、舵机输出,也不驱动真实电机,而是被仿真模型采集,用于推进虚拟飞机的运动学与动力学积分。这样,飞控硬件、通信链路、时序约束都被真实保留,而环境、传感器与飞机本体则完全可编程、可重复、可注入故障。
从系统视角看,飞控视觉与激光雷达HIL仿真涉及四类角色:飞控硬件(真实)、传感器仿真(虚拟)、飞机动力学模型(虚拟)、以及场景与评估系统。它们之间的数据流与信号链关系,是理解整套工具链的关键。下图给出典型HIL仿真的信号链与数据流全景。
理解这张图后,就能看清HIL仿真与纯软件仿真(SITL)的区别。SITL中飞控本身也是被仿真的,算法运行在PC上,时序和硬件接口被简化;而HIL中飞控是真实硬件,必须处理真实的串口、PWM、时钟抖动与中断延迟。这意味着HIL能暴露SITL无法发现的接口电平不匹配、通信丢包、任务调度超时等问题,更接近真实飞行。
典型应用场景包括:视觉定位验证——在虚拟纹理丰富或纹理缺失的环境中测试光流与视觉里程计;激光雷达建图与避障——注入不同密度、不同噪声水平的点云,观察飞控避障决策;多传感器融合——人为让相机或激光雷达失效,检验融合算法的降级策略;回归测试——每次固件更新后自动重放标准场景集,防止引入新缺陷。
工具链概览可以按数据流分层理解。最上层是场景与评估层,常用Gazebo、Unreal Engine、AirSim或自研引擎,负责生成地形、建筑、动态目标以及记录轨迹误差、碰撞次数等指标。中间层是传感器仿真层,相机需要建模内参、畸变、曝光与噪声,激光雷达需要建模线束、扫描频率、测距噪声与反射强度。下层是飞控与动力学层,飞控运行真实固件,动力学模型则通过执行机构接口接收控制量并积分位姿。各层之间通过UDP、串口或共享内存交换数据,时间同步是工程难点之一。
学习路径建议按“先通链路、再调参数、后做评估”推进。第一步,搭建最小闭环:让飞控在HIL模式下解锁,虚拟飞机能稳定悬停,说明信号链已通。第二步,接入视觉与激光雷达仿真,观察飞控状态估计是否收敛,重点检查时间戳对齐与坐标系定义。第三步,注入故障与边界工况,例如将激光雷达点云丢帧率设为20%,或将相机曝光时间拉长导致运动模糊,记录飞控的响应与恢复时间。第四步,建立评估指标与回归场景集,把每次修改都放到同一批场景中对比。
下面给出一个最小HIL配置检查表示例,用于确认链路是否具备进入仿真的条件。表中参数为教学示例,实际值需根据飞控型号与仿真器版本调整。
| 检查项 | 示例值 / 状态 | 判断依据 |
|---|---|---|
| 飞控HIL模式 | 已启用,解锁成功 | 地面站显示 armed,无预解锁错误 |
| 传感器数据注入 | IMU 200 Hz,相机 30 fps,激光雷达 10 Hz | 飞控日志中对应话题有持续更新 |
| 时间同步偏差 | < 5 ms | 对比仿真时间戳与飞控接收时间戳 |
| 悬停位置误差 | 示例:水平 < 0.5 m,高度 < 0.3 m | 虚拟飞机在无风条件下稳定悬停 |
| 故障注入通道 | 可独立关闭相机或激光雷达 | 关闭后飞控进入预期降级模式 |