Skip to content

使用 JMAVSim 进行多飞行器仿真

本主题介绍如何使用 JMAVSim 和软件在环(SITL)仿真来模拟多架无人机(多旋翼飞行器)。在仿真中,所有飞行器实例都从同一位置启动。

TIP

这是模拟多架运行 PX4 的飞行器最简单的方法。 它适用于测试 QGroundControl(或 MAVSDK 等)对多飞行器的支持情况。 如果要进行大量飞行器的集群仿真,或者测试只有 Gazebo 支持的计算机视觉等功能,则应使用使用 Gazebo 进行多飞行器仿真

如何启动多个实例

要启动多个实例(使用不同的端口):

  1. 构建 PX4

    sh
    make px4_sitl_default
  2. 运行 sitl_multiple_run.sh 脚本,并指定要启动的实例数量(例如 2 个):

    sh
    ./Tools/sitl_multiple_run.sh 2
  3. 在同一终端中启动第一个实例(该实例将在前台运行):

    sh
    ./Tools/simulation/jmavsim/jmavsim_run.sh -l
  4. 为后续的每个实例打开一个新终端,并为该实例指定_仿真_ TCP 端口:

    sh
    ./Tools/simulation/jmavsim/jmavsim_run.sh -p 4560 -l

    端口应设置为 4560 + i,其中 i 是每个实例的迭代序号(从 0N - 1

QGroundControl 应该会自动连接到所有新的飞行器实例(所有地面站(GCS)流量都会从所有实例发送到 PX4 的远程 UDP 端口:14550)。当前正在控制的飞行器会显示在应用程序的标题栏中;你可以点击该飞行器文本,以显示所有(模拟的)已连接飞行器实例(飞行器 1飞行器 2 等)的选择列表,并选择要控制的新飞行器。

MAVSDKMAVROS 这样的开发人员 API 可以通过监听从 14540(第一个实例)到 14549 顺序分配的 PX4 远程 UDP 端口来连接到各个实例。额外的实例_全部_连接到端口 14549

提示 sitl_multiple_run.sh 脚本会为每个飞行器启动一个单独的进程。 如果要在杀死其中一个实例后重新启动仿真,你必须再次调用 sitl_multiple_run.sh 脚本,并在各自的终端中重新启动每个单独的实例。

额外资源

  • 有关端口配置的更多信息,请参阅仿真