跳至内容

仿真场景Gazebo模型库 (PX4-gazebo-models)

PX4-仿真场景Gazebo模型 存储库用于存储所有 仿真场景Gazebo PX4 支持的模型和世界。

PX4-仿真场景Gazebo模型 资源库作为子模块包含在 PX4 中,在使用"normal".时,默认情况下所有模型都可用; 生产 目标,如 使 px4_sitl gz_x500.

用于仿真场景Gazebo 独立模拟 您首先需要获得 模拟仿真场景Gazebo Python 脚本,然后它将获取模型和世界,并将其发送到 ~/.simulation-gazebo 如果该目录不存在。

simulation-gazebo (独立模拟启动脚本)

模拟仿真场景Gazebo Python 脚本用于在 独立模式.默认情况下,脚本可与同一主机上的 PX4 SITL 实例通信。如果脚本参数设置正确,它还可以与同一网络内任何机器上的任何 PX4 实例通信。

模拟仿真场景Gazebo 脚本不需要任何额外的库,开箱即用。

基本用法

默认值 模拟脚本 可以运行:

蟒蛇 模拟仿真场景Gazebo

这将从 PX4 仿真场景Gazebo模型库 的子文件夹中。 ~/.simulation-gazebo 在首次调用时(或者更准确地说,在未检测到目录的情况下),系统会自动检测该目录。A gz-server 实例将使用默认的灰色平面世界启动。

构建系统不会再次自动更新本地副本,如果 .simulation-gazebo 文件夹进行检测,但您可以通过传递 覆盖 标志到脚本中。生成的命令将如下所示

蟒蛇 模拟仿真场景Gazebo --覆盖

您可以将支持 PX4 的载具连接到 gz-server 使用几种方法:

  • 在新终端中,使用以下命令运行 PX4 PX4_GZ_STANDALONE=1 make px4_sitl gz_<vehicle>; 然后您就会看到一辆车出现在 Gazebo。

  • Gazebo 还有自己的内置资源生成器。点击 Gazebo GUI 右上角的三个点即可调用。在其中输入 "资源产卵器",并在 "燃料资源"下添加所有者 "px4"。然后,您就可以将任何 PX4 模型拖放到模拟中。

    信息

    这些模型来自一个名为 仿真场景Gazebo燃料该网站实质上是一个在线数据库,收录了可在 Gazebo 中启动的所有类型的模型和世界。

    将所选载具投放到 Gazebo 后,用以下命令启动 PX4 SITL:

    px4_sys_autostart=<;机身编号e>; px4_gz_model_name=<;选择工具e>; ./build/px4_sitl_default/bin/px4`

    这将把 PX4 SITL 连接到正在运行的 Gazebo 实例。

PX4 的所有功能和灵活性都可在 Gazebo 实例中直接使用。

命令行参数

可以向 模拟仿真场景Gazebo 剧本

  • --世界 一个字符串变量,用于命名运行模拟世界的 sdf 文件。默认参数为 "default",链接到默认世界。

  • --gz_分区 字符串变量,用于设置运行的 gazebo 分区(更多信息 这里)

  • -gz_ip 一个字符串变量,用于设置传出网络接口的 IP(更多信息 这里)

  • --互动 一个布尔变量,用于要求在交互模式下运行代码的能力,允许为 --模型下载源.如果未设置此项、 --模型下载源 只会从默认的 Github 代码库中下载。

  • --模型下载源 一个字符串变量,用于设置导入模型的目录路径。目前只能是本地文件目录或 http 地址。源文件应以压缩的模型文件结尾(例如: https://path/to/simulation/models/models.zip).

  • -模型存储 字符串变量,用于设置模型存储目录的路径。在 模型下载源 将被放置。

  • --覆盖 布尔变量,表示 .simulation-gazebo 应使用仿真场景Gazebo模型库中的世界和载具数据进行更新。

  • --干跑 运行测试用例时可设置的布尔变量。它不会提供任何交互功能,也不会启动 gz-server 实例。

这些参数都不是 模拟仿真场景Gazebo 来工作。如果您想提供自定义模型下载、其他世界,或者想在不同主机上运行 Gazebo 和 PX4,就需要它们。

示例:使用多个终端运行一台主机

本例说明如何在一台主机上通过两个终端运行独立模式 PX4。

  1. 在一个终端运行

    px4_gz_standalone=1 px4_sys_autostart=4001 PX4_SIM_MODEL=gz_x500 PX4_GZ_WORLD=有风 ./build/px4_sitl_default/bin/px4
  2. 在第二个终端窗口中运行

    python3 /path/to/simulation-gazebo --世界 有风

由于所有 Gazebo 节点都运行在同一台主机上,因此本示例无需向 simulation-gazebo 脚本传递额外参数。请参阅下面的示例,了解使用不同主机的更多情况。

示例:运行多个主机

下面的示例将说明如何建立分布式系统,在网络上的一台主机上运行 PX4(称为 PX4-host"),在另一台主机上运行 Gazebo(称为 Gazebo-host")。这将导致两个 Gazebo 节点运行在同一网络的两台不同主机上,并使用 gz-transport 图书馆

我们首先要弄清楚我们可以使用哪个 IP 地址在两台主机上发送信息。

在 PX4 主机上运行以下命令

苏都 适切 更新
苏都 适切 安装 iproute2

然后键入

ip a

如果您通过 WiFi 连接到网络,那么所需的地址通常会有一个大致如下的名称 wlp12345.记录此接口的 IPv4 地址,方法是记下"...... "旁边的数字。 局域网.它应该是四个数字,用点分隔,后面是斜线和另一个数字。例如,一个有效的 IPv4 地址应为 192.168.24.89/24.

您只需要前四个数字。因此,在本例中,PX4 主机的 IP 地址应为 192.168.24.89.请注意,如果通过以太网连接,网络接口可能以 民族EN然而,这并不是标准化的。

在 Gazebo 主机上重复同样的步骤,并记下第二个 IPv4 地址。在本例中,我们将使用 192.168.24.107.

现在我们可以开始设置两台主机了。我们首先设置 PX4 主机:

GZ_PARTITION=接力 GZ_RELAY=192.168.24.107 GZ_IP=192.168.24.89 px4_gz_standalone=1 px4_sys_autostart=4001 PX4_SIM_MODEL=gz_x500 PX4_GZ_WORLD=海湾 ./build/px4_sitl_default/bin/px4

环境变量说明

  • GZ_PARTITION 声明了两个 gazebo 节点将在其中运行的分区名称。这个 在所有连接的音符之间保持一致。
  • GZ_RELAY 指向另一台主机(本例中为 Gazebo-主机)上的目标 IP 地址。该环境变量是两个节点相互连接的必要条件。请注意,这种连接是双向的,因此 GZ_RELAY 只需在一台主机上设置。
  • GZ_IP 告诉当前主机使用哪个网络接口发送信息。这在宣传主题或服务时是必需的。

然后,我们就可以设置 Gazebo 主机了。请注意,实际的设置顺序(先设置 PX4-host 还是先设置 Gazebo-host)并不重要。两者都会持续寻找其他 Gazebo 节点,直到找到为止。在 Gazebo 主机的终端中,运行

python3 /path/to/simulation-gazebo --gz_分区 接力 -gz_ip 192.168.24.107 --世界 海湾

在这里,我们传递相同的环境变量作为参数。注意 --世界 值必须相同才能连接。如果不小心将 海湾 并说 默认 则两个节点将无法连接。

如果一切正常,那么现在两台主机应该已经连接,您应该可以在 PX4 主机的命令行中驾驶载具。

此外,您还可以设置 QGC 并通过这种方式飞行您的飞行器。此外,还可以通过设置 -i 标志,如 多载具模拟 页。有关环境变量的更多信息,您还可以参阅 gz-transport 文档.

通过 VPN(从而多个网络)进行连接也是可能的,但目前还没有记录。

工作流程

当一个分支被合并到主分支上时(可能是模型的添加、删除或类似参数的更改),所有接受过任何类型更改的模型都会自动更新并上传到 PX4 上的账户。 仿真场景Gazebo燃料.此外,还有一个工作流程可用于检查任何提供的 sdf 文件的有效性。