# 硬件环路模拟(HITL)

硬件在环(HITL 或 HIL)是一种模拟模式,在这种模式下,正常的 PX4 固件将在真实的飞行控制器硬件上运行。这种方法的好处是可以在真实硬件上测试大部分实际飞行代码。

PX4 支持多旋翼飞行器(使用 jMAVSim 或 Gazebo Classic)和 VTOL(使用 Gazebo Classic)的 HITL。

# 与 HITL 兼容的机身

目前可兼容的机型与模拟器如下:

机身 系统自动启动 经典仿真场景Gazebo jMAVSim
HIL 四旋翼飞行器 X 1001 Y Y
HIL 标准 VTOL 四翼飞机 1002 Y
通用四旋翼飞行器 x 直升机 4001 Y Y

# HITL 模拟环境

通过硬件在环 (HITL) 仿真,可在真实硬件上运行普通 PX4 固件。JMAVSim 或 Gazebo Classic(在开发计算机上运行)通过 USB/UART 与飞行控制器硬件相连。模拟器充当网关,在 PX4 和 Gazebo Classic 之间共享 MAVLink 数据。 QGroundControl.

备注

如果飞行控制器支持联网并使用稳定、低延迟的连接(例如有线以太网连接,WiFi 通常不够可靠),模拟器也可以通过 UDP 连接。例如,在通过以太网与计算机连接的 Raspberry Pi 上运行 PX4 时就测试过这种配置(启动配置包括运行 jMAVSim 的命令,可参见 这里 (打开新窗口)).

下图显示了模拟环境:

  • 选择 HITL 配置(通过 QGroundControl),并没有启动任何真正的传感器。
  • jMAVSim经典仿真场景Gazebo 通过 USB 与飞行控制器连接。
  • 模拟器连接到 QGroundControl 通过 UDP 将其 MAVLink 信息桥接到 PX4。
  • 经典仿真场景GazebojMAVSim 还可以连接到机外 API,并将 MAVLink 信息桥接到 PX4。
  • (可选)串行连接可用于连接操纵杆/游戏手柄硬件,通过 QGroundControl.

HITL 设置 - jMAVSim 和 Gazebo Classic

# HITL vs SITL

SITL 在模拟环境下的开发计算机上运行,并使用专门为该环境生成的固件。除了模拟驱动程序提供来自模拟器的虚假环境数据外,系统行为正常。

相比之下,HITL 以 HITL 模式在普通硬件上运行普通 PX4 固件。模拟数据进入系统的时间点与 SITL 不同。指挥官和传感器等核心模块在启动时具有 HITL 模式,可绕过某些正常功能。

总之,HITL 使用标准固件在实际硬件上运行 PX4,而 SITL 实际上执行更多的标准系统代码。

# 设置 HITL

# PX4 配置

  1. 将自动驾驶仪直接连接到 QGroundControl 通过 USB。

  2. 启用 HITL 模式

    1. 开放 设置 > 安全 节。

    2. 选择 已启用启用 HITL 名单:

      QGroundControl HITL 配置

  3. 选择机身

    1. 开放 设置 > 机身

    2. 选择一个 兼容机身 您要测试的内容。然后点击 应用和重启 右上方的 机身设置 page.

      选择机身

  4. 如有需要,校准遥控或操纵杆。

  5. 设置 UDP

    1. 根据 一般情况 选项卡,取消选中所有 自动连接 箱除外 UDP.

      QGC HITL 自动连接设置

  6. (可选) 配置操纵杆和故障安全。设置如下 参数 以便使用操纵杆代替遥控发射器:

    • COM_RC_IN_MODE 改为 "操纵杆/无 RC 检查"。这将允许操纵杆输入并禁用 RC 输入检查。
    • NAV_RCL_ACT 禁用"。这样可以确保在不使用无线电控制器运行 HITL 时,不会干扰遥控故障安全操作。

    TIP

    QGroundControl 用户指南 也有关于 操纵杆 (打开新窗口)虚拟操纵杆 (打开新窗口) 设置。

配置完成后 关闭 QGroundControl 并断开飞行控制器硬件与计算机的连接。

# 模拟器专用设置

请按照以下章节中特定模拟器的相应设置步骤进行操作。

# 经典仿真场景Gazebo

备注

确保 QGroundControl 不运行!

  1. 用以下设备建造 PX4 经典仿真场景Gazebo (以构建 Gazebo Classic 插件)。

    CD <;固件克隆>;
    DONT_RUN=1 生产 px4_sitl_default gazebo-classic
    
  2. 打开载具模型的 sdf 文件(例如 Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris_hitl/iris_hitl.sdf).

  3. 更换 串行设备 参数/dev/ttyACM0如果有必要,请将"......

    备注

    串行设备取决于用于连接载具和计算机的端口(通常为 /dev/ttyACM0).在 Ubuntu 上检查的简单方法是插入自动驾驶仪,打开终端并键入 dmesg | grep "tty";.正确的设备将是最后显示的设备。

  4. 设置环境变量

    消息来源 Tools/simulation/gazebo/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
    

    并在 HITL 模式下运行 Gazebo Classic:

    gazebo Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/hitl_iris.world
    
  5. 开始 QGroundControl.它应该能自动连接 PX4 和 Gazebo Classic。

# jMAVSim(仅限四旋翼飞行器)

备注

确保 QGroundControl 不运行!

  1. 将飞行控制器连接到电脑,等待开机。

  2. 在 HITL 模式下运行 jMAVSim:

    ./Tools/simulation/jmavsim/jmavsim_run.sh -q -s -d /dev/ttyACM0 -b 921600 -r 250
    

    备注

    替换串行端口名称 /dev/ttyACM0 视情况而定。在 macOS 上,该端口为 /dev/tty.usbmodem1.在 Windows 系统(包括 Cygwin)中,应该是 COM1 或其他端口,请在 Windows 设备管理器中检查连接情况。

  3. 开始 QGroundControl.它应该能自动连接 PX4 和 jMAVSim。

# 在 HITL 中执行自主飞行任务

您应该能够使用 QGroundControl执行任务 (打开新窗口) 并以其他方式控制载具。