Skip to content

硬件在环仿真(HITL)

WARNING

HITL 由社区提供支持和维护(详见社区支持的仿真器)。 它可能与当前版本的 PX4 兼容,也可能不兼容。

有关核心开发团队支持的开发环境和工具的信息,请参阅工具链安装

在硬件在环仿真模式(HITL 或 HIL)下,PX4 固件代码运行在真实的飞行控制器硬件平台上。这种方法的优点是可以在实际硬件上测试大多数的实际飞行代码。

PX4 支持多旋翼飞行器(使用 jMAVSimGazebo Classic)和垂直起降飞行器(VTOL,使用 Gazebo Classic)的 HITL 仿真。

HITL 兼容机架

兼容的机架与仿真器的对应关系如下:

机架SYS_AUTOSTARTGazebo ClassicjMAVSim
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 配置。
  • jMAVSimGazebo Classic 通过 USB 连接到飞行控制器。
  • 仿真器通过 UDP 连接到 QGroundControl,并将其 MAVLink 消息转发给 PX4。
  • Gazebo ClassicjMAVSim 还可以连接到外部 API,并将 MAVLink 消息转发给 PX4。
  • (可选)可以使用串口连接,通过 QGroundControl 连接游戏手柄硬件。

HITL 设置 - jMAVSim 和 Gazebo Classic

HITL 相比于 SITL

相比之下,HITL 在正常飞控硬件平台上运行正常的处于 “HITL 模式” 的 PX4 固件。仿真数据进入整个仿真系统的时间点与 SITL 有所不同。核心模块(如指挥官和传感器)在启动时有 HITL 模式,可绕过一些正常功能。

完成所有的配置设定后,关闭 QGroundControl 并断开飞控板与计算机的连接。

配置 HITL

PX4 配置

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

  2. 激活 HITL 模式

    1. 打开 设置 > 安全 部分。

    2. HITL 启用 列表中选择 启用 来启用 HITL 模式:

      QGroundControl HITL 配置

  3. 选择机架

    1. 打开 设置 > 机架

    2. 选择你要测试的 兼容机架。然后点击 机架设置 页面右上角的 应用并重启

      选择机架

  4. 如有必要,校准你的 RC 遥控器或操纵杆。

  5. 设置 UDP

    1. 在设置菜单的 常规 选项卡下,取消勾选除 UDP 之外的所有 自动连接 复选框。

      QGC HITL 自动连接设置

  6. (可选)配置操纵杆和故障保护。 设置以下 参数,以便使用操纵杆代替 RC 遥控器:

    • COM_RC_IN_MODE 设置为 “操纵杆/无 RC 检查”。这允许操纵杆输入并禁用 RC 输入检查。
    • NAV_RCL_ACT 设置为 “禁用”。这可确保在没有无线遥控的情况下运行 HITL 时 RC 失控保护不会介入。

    TIP

    《QGroundControl 用户指南》中也有关于 操纵杆虚拟操纵杆 设置的说明。

:::

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

不同仿真器的 HITL 仿真环境设置

Gazebo Classic

INFO

确保 QGroundControl 未运行!

  1. 使用 Gazebo Classic 构建 PX4(以便构建 Gazebo Classic 插件)。

    sh
    cd <Firmware_clone>
    DONT_RUN=1 make px4_sitl_default gazebo-classic
  2. 打开飞行器模型的 SDF 文件(例如 Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris_hitl/iris_hitl.sdf)。

  3. 如有必要,替换 serialDevice 参数(/dev/ttyACM0)。

    INFO

    串口设备取决于将飞行器连接到计算机所使用的端口(通常是 /dev/ttyACM0)。在 Ubuntu 上,一个简单的检查方法是插入自动驾驶仪,打开终端,然后输入 dmesg | grep "tty"。最后显示的设备就是正确的设备。

:::

  1. 设置环境变量:

    sh
    source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

    并以 HITL 模式运行 Gazebo Classic:

    sh
    gazebo Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/hitl_iris.world
  2. 启动 QGroundControl。它应该会自动连接到 PX4 和 Gazebo Classic。

jMAVSim(仅适用于四旋翼无人机)

INFO

确保 QGroundControl 未运行!

  1. 将飞行控制器连接到计算机,并等待其启动。

  2. 在 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 设备管理器中检查连接情况。

:::

  1. 启动 QGroundControl。它应该会自动连接 PX4 和仿真器(原文此处说连接 Gazebo 有误,应为仿真器,这里是 jMAVSim)。

在 HITL 仿真中执行自主飞行任务

你应该能够使用 QGroundControl 执行任务 并以其他方式控制飞行器。