仿真场景Gazebo模型库 (PX4-gazebo-models)
PX4-仿真场景Gazebo模型 存储库用于存储所有 仿真场景Gazebo PX4 支持的模型和世界。
- 模型存储在
/模型
目录中,而世界则存储在/worlds
目录。 - 模拟仿真场景Gazebo Python 脚本用于 以独立模式启动 Gazebo.
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。
在一个终端运行
吁px4_gz_standalone=1 px4_sys_autostart=4001 PX4_SIM_MODEL=gz_x500 PX4_GZ_WORLD=有风 ./build/px4_sitl_default/bin/px4
在第二个终端窗口中运行
吁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 文件的有效性。