硬件在环仿真(HITL)
在硬件在环仿真模式(HITL 或 HIL)下,PX4 固件代码运行在真实的飞行控制器硬件平台上。这种方法的优点是可以在实际硬件上测试大多数的实际飞行代码。
PX4 支持多旋翼飞行器(使用 jMAVSim 或 Gazebo Classic)和垂直起降飞行器(VTOL,使用 Gazebo Classic)的 HITL 仿真。
HITL 兼容机架
兼容的机架与仿真器的对应关系如下:
机架 | SYS_AUTOSTART | Gazebo Classic | jMAVSim |
---|---|---|---|
HIL 四旋翼 X 型 | 1002 | 是 | 是 |
HIL 标准 VTOL 四翼倾转机 | 4001 | 是 | |
通用四旋翼 X 型 飞行器 | 4011 | 是 | 是 |
HITL 仿真环境
在硬件在环仿真(HITL)模式下,标准的 PX4 固件在真实的硬件上运行。JMAVSim 或 Gazebo Classic(运行在开发计算机上)通过 USB/UART 连接到飞行控制器硬件。仿真器充当网关,在 PX4 和 QGroundControl 之间共享 MAVLink 数据。
INFO
如果飞行控制器支持网络连接,并且使用稳定、低延迟的连接(例如有线以太网连接,WiFi 通常不够可靠),仿真器也可以通过 UDP 连接。例如,已经测试过将运行 PX4 的树莓派通过以太网连接到计算机的配置(包含运行 jMAVSim 命令的启动配置可以在 此处 找到)。
下图展示了仿真环境:
- 通过 QGroundControl 选择不启动任何真实传感器的 HITL 配置。
- jMAVSim 或 Gazebo Classic 通过 USB 连接到飞行控制器。
- 仿真器通过 UDP 连接到 QGroundControl,并将其 MAVLink 消息转发给 PX4。
- Gazebo Classic 和 jMAVSim 还可以连接到外部 API,并将 MAVLink 消息转发给 PX4。
- (可选)可以使用串口连接,通过 QGroundControl 连接游戏手柄硬件。
HITL 相比于 SITL
相比之下,HITL 在正常飞控硬件平台上运行正常的处于 “HITL 模式” 的 PX4 固件。仿真数据进入整个仿真系统的时间点与 SITL 有所不同。核心模块(如指挥官和传感器)在启动时有 HITL 模式,可绕过一些正常功能。
完成所有的配置设定后,关闭 QGroundControl 并断开飞控板与计算机的连接。
配置 HITL
PX4 配置
通过 USB 将自动驾驶仪直接连接到 QGroundControl。
激活 HITL 模式
打开 设置 > 安全 部分。
从 HITL 启用 列表中选择 启用 来启用 HITL 模式:
选择机架
打开 设置 > 机架。
选择你要测试的 兼容机架。然后点击 机架设置 页面右上角的 应用并重启。
如有必要,校准你的 RC 遥控器或操纵杆。
设置 UDP
在设置菜单的 常规 选项卡下,取消勾选除 UDP 之外的所有 自动连接 复选框。
(可选)配置操纵杆和故障保护。 设置以下 参数,以便使用操纵杆代替 RC 遥控器:
- 将 COM_RC_IN_MODE 设置为 “操纵杆/无 RC 检查”。这允许操纵杆输入并禁用 RC 输入检查。
- 将 NAV_RCL_ACT 设置为 “禁用”。这可确保在没有无线遥控的情况下运行 HITL 时 RC 失控保护不会介入。
:::
配置完成后,关闭 QGroundControl 并断开飞行控制器硬件与计算机的连接。
不同仿真器的 HITL 仿真环境设置
Gazebo Classic
INFO
确保 QGroundControl 未运行!
使用 Gazebo Classic 构建 PX4(以便构建 Gazebo Classic 插件)。
shcd <Firmware_clone> DONT_RUN=1 make px4_sitl_default gazebo-classic
打开飞行器模型的 SDF 文件(例如 Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris_hitl/iris_hitl.sdf)。
如有必要,替换
serialDevice
参数(/dev/ttyACM0
)。INFO
串口设备取决于将飞行器连接到计算机所使用的端口(通常是
/dev/ttyACM0
)。在 Ubuntu 上,一个简单的检查方法是插入自动驾驶仪,打开终端,然后输入dmesg | grep "tty"
。最后显示的设备就是正确的设备。
:::
设置环境变量:
shsource Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
并以 HITL 模式运行 Gazebo Classic:
shgazebo Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/hitl_iris.world
启动 QGroundControl。它应该会自动连接到 PX4 和 Gazebo Classic。
jMAVSim(仅适用于四旋翼无人机)
INFO
确保 QGroundControl 未运行!
将飞行控制器连接到计算机,并等待其启动。
在 HITL 模式下运行 jMAVSim(如有必要,修改串口号名称
/dev/ttyACM0
- 比如,在 Mac OS 上该参数应为/dev/tty.usbmodem1
):sh./Tools/simulation/jmavsim/jmavsim_run.sh -q -s -d /dev/ttyACM0 -b 921600 -r 250
INFO
请根据实际情况替换串口号
/dev/ttyACM0
。在 macOS 上,该端口可能是/dev/tty.usbmodem1
。在 Windows(包括 Cygwin)上,它可能是 COM1 或其他端口,请在 Windows 设备管理器中检查连接情况。
:::
- 启动 QGroundControl。它应该会自动连接 PX4 和仿真器(原文此处说连接 Gazebo 有误,应为仿真器,这里是 jMAVSim)。
在 HITL 仿真中执行自主飞行任务
你应该能够使用 QGroundControl 执行任务 并以其他方式控制飞行器。