1. 课程导入与HIL仿真全景

在无人机、自动驾驶与机器人系统中,飞控是决定飞行安全与任务成败的核心。当系统引入视觉相机与激光雷达后,感知、定位、规划与控制之间形成了复杂的闭环:相机提供纹理与语义信息,激光雷达提供高精度三维几何信息,飞控则依据融合结果输出姿态与位置控制指令。若直接把这些传感器装到真机上反复试飞,不仅成本高、风险大,而且很多极端场景(如传感器失效、目标丢失、强光干扰、点云稀疏)几乎无法稳定复现。硬件在环(Hardware-in-the-Loop,HIL)仿真正是为解决这一矛盾而生的工程方法。

HIL仿真的本质,是让真实的飞控硬件运行在虚拟的传感器与虚拟的飞机之间。飞控仍然执行它原本的固件与算法,但它接收到的IMU、磁力计、气压计、视觉图像、激光点云等数据,不再来自真实传感器,而是由仿真计算机实时生成并通过接口注入;飞控计算出的电机、舵机输出,也不驱动真实电机,而是被仿真模型采集,用于推进虚拟飞机的运动学与动力学积分。这样,飞控硬件、通信链路、时序约束都被真实保留,而环境、传感器与飞机本体则完全可编程、可重复、可注入故障。

HIL仿真的核心价值可以概括为三点:安全——炸机只发生在虚拟世界;可复现——同一场景可精确重放,便于定位偶发问题;可扩展——能构造真实世界难以获得的边界工况,如激光雷达雨雾衰减、相机过曝、GPS拒止等。

从系统视角看,飞控视觉与激光雷达HIL仿真涉及四类角色:飞控硬件(真实)、传感器仿真(虚拟)、飞机动力学模型(虚拟)、以及场景与评估系统。它们之间的数据流与信号链关系,是理解整套工具链的关键。下图给出典型HIL仿真的信号链与数据流全景。

飞控视觉与激光雷达 HIL 仿真信号链与数据流 场景与评估系统 地形 / 建筑 / 动态目标 故障注入 / 指标记录 传感器仿真 相机图像 / 激光点云 IMU / 磁力计 / 气压计 飞控硬件(真实) 固件 / 状态估计 / 控制律 视觉与激光融合算法 飞机动力学模型 六自由度运动方程 电机 / 舵机响应 执行机构接口 PWM / DShot / 串口 输出采集与回传 场景真值 虚拟传感器数据 控制输出 执行量 位姿更新 闭环:感知 → 决策 → 控制 → 运动 → 新感知 典型工具链角色分工 • 场景与评估:Gazebo / Unreal / AirSim / 自研场景引擎,负责世界建模与指标统计 • 传感器仿真:相机成像模型、激光雷达射线投射、IMU 噪声与偏置模型 • 飞控硬件:Pixhawk / 自研飞控,运行 PX4、ArduPilot 或自研固件 • 动力学模型:刚体六自由度 + 气动/电机模型,接收执行量并更新位姿

理解这张图后,就能看清HIL仿真与纯软件仿真(SITL)的区别。SITL中飞控本身也是被仿真的,算法运行在PC上,时序和硬件接口被简化;而HIL中飞控是真实硬件,必须处理真实的串口、PWM、时钟抖动与中断延迟。这意味着HIL能暴露SITL无法发现的接口电平不匹配、通信丢包、任务调度超时等问题,更接近真实飞行。

典型应用场景包括:视觉定位验证——在虚拟纹理丰富或纹理缺失的环境中测试光流与视觉里程计;激光雷达建图与避障——注入不同密度、不同噪声水平的点云,观察飞控避障决策;多传感器融合——人为让相机或激光雷达失效,检验融合算法的降级策略;回归测试——每次固件更新后自动重放标准场景集,防止引入新缺陷。

工具链概览可以按数据流分层理解。最上层是场景与评估层,常用Gazebo、Unreal Engine、AirSim或自研引擎,负责生成地形、建筑、动态目标以及记录轨迹误差、碰撞次数等指标。中间层是传感器仿真层,相机需要建模内参、畸变、曝光与噪声,激光雷达需要建模线束、扫描频率、测距噪声与反射强度。下层是飞控与动力学层,飞控运行真实固件,动力学模型则通过执行机构接口接收控制量并积分位姿。各层之间通过UDP、串口或共享内存交换数据,时间同步是工程难点之一。

学习路径建议按“先通链路、再调参数、后做评估”推进。第一步,搭建最小闭环:让飞控在HIL模式下解锁,虚拟飞机能稳定悬停,说明信号链已通。第二步,接入视觉与激光雷达仿真,观察飞控状态估计是否收敛,重点检查时间戳对齐与坐标系定义。第三步,注入故障与边界工况,例如将激光雷达点云丢帧率设为20%,或将相机曝光时间拉长导致运动模糊,记录飞控的响应与恢复时间。第四步,建立评估指标与回归场景集,把每次修改都放到同一批场景中对比。

坐标系约定必须在项目初期统一并写入文档。常见约定为:机体坐标系前右下(FRD),世界坐标系北东地(NED),相机坐标系光轴向前、x向右、y向下。若仿真器使用ENU,必须在接口层做明确转换,否则会出现“悬停时飞机缓慢漂移”这类难以定位的问题。

下面给出一个最小HIL配置检查表示例,用于确认链路是否具备进入仿真的条件。表中参数为教学示例,实际值需根据飞控型号与仿真器版本调整。

检查项 示例值 / 状态 判断依据
飞控HIL模式 已启用,解锁成功 地面站显示 armed,无预解锁错误
传感器数据注入 IMU 200 Hz,相机 30 fps,激光雷达 10 Hz 飞控日志中对应话题有持续更新
时间同步偏差 < 5 ms 对比仿真时间戳与飞控接收时间戳
悬停位置误差 示例:水平 < 0.5 m,高度 < 0.3 m 虚拟飞机在无风条件下稳定悬停
故障注入通道 可独立关闭相机或激光雷达 关闭后飞控进入预期降级模式