使用 JMAVSim 进行多飞行器仿真
本主题介绍如何使用 JMAVSim 和软件在环(SITL)仿真来模拟多架无人机(多旋翼飞行器)。在仿真中,所有飞行器实例都从同一位置启动。
TIP
这是模拟多架运行 PX4 的飞行器最简单的方法。 它适用于测试 QGroundControl(或 MAVSDK 等)对多飞行器的支持情况。 如果要进行大量飞行器的集群仿真,或者测试只有 Gazebo 支持的计算机视觉等功能,则应使用使用 Gazebo 进行多飞行器仿真。
如何启动多个实例
要启动多个实例(使用不同的端口):
构建 PX4
shmake px4_sitl_default
运行 sitl_multiple_run.sh 脚本,并指定要启动的实例数量(例如 2 个):
sh./Tools/sitl_multiple_run.sh 2
在同一终端中启动第一个实例(该实例将在前台运行):
sh./Tools/simulation/jmavsim/jmavsim_run.sh -l
为后续的每个实例打开一个新终端,并为该实例指定_仿真_ TCP 端口:
sh./Tools/simulation/jmavsim/jmavsim_run.sh -p 4560 -l
端口应设置为
4560 + i
,其中i
是每个实例的迭代序号(从0
到N - 1
)
QGroundControl 应该会自动连接到所有新的飞行器实例(所有地面站(GCS)流量都会从所有实例发送到 PX4 的远程 UDP 端口:14550
)。当前正在控制的飞行器会显示在应用程序的标题栏中;你可以点击该飞行器文本,以显示所有(模拟的)已连接飞行器实例(飞行器 1
、飞行器 2
等)的选择列表,并选择要控制的新飞行器。
像 MAVSDK 或 MAVROS 这样的开发人员 API 可以通过监听从 14540
(第一个实例)到 14549
顺序分配的 PX4 远程 UDP 端口来连接到各个实例。额外的实例_全部_连接到端口 14549
。
提示 sitl_multiple_run.sh 脚本会为每个飞行器启动一个单独的进程。 如果要在杀死其中一个实例后重新启动仿真,你必须再次调用 sitl_multiple_run.sh 脚本,并在各自的终端中重新启动每个单独的实例。
额外资源
- 有关端口配置的更多信息,请参阅仿真。