# 仿真场景Gazebo模拟

警告

Gazebo 的前身是"Gazebo Ignition"(而 经典仿真场景Gazebo 前身为 Gazebo)。参见 官方博文 (打开新窗口) 了解更多信息。

仿真场景Gazebo (打开新窗口) 是一款开源机器人模拟器。它取代了旧版本的 经典仿真场景Gazebo 模拟器,也是 Ubuntu 22.04 及以后版本唯一支持的 Gazebo 版本。

支持的载具: 四旋翼飞行器、飞机、VTOL

备注

参见 模拟 了解有关模拟器、模拟环境和模拟配置(如支持的载具)的一般信息。

# 安装(Ubuntu Linux)

Gazebo 默认安装在 Ubuntu 22.04 上,是开发环境设置的一部分: Ubuntu 开发环境设置> 模拟和 NuttX(Pixhawk)目标

如果您想在 Ubuntu 20.04 上使用 Gazebo,可以在按照正常安装流程(安装 gz-garden 将卸载 Gazebo-Classic!):

苏都 wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
回响 "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main"; | 苏都 发球 /etc/apt/sources.list.d/gazebo-stable.list >; /dev/null
苏都 apt-get 更新
苏都 apt-get 安装 gz-garden

# 运行模拟

Gazebo SITL 仿真可以通过一个 生产 命令,如下图所示:

CD /path/to/PX4-Autopilot
生产 PX4_SITL GZ_X500

这将同时运行 PX4 SITL 实例和 Gazebo 客户端。请注意,所有 Gazebo 制作目标的前缀都是 gz_.

备注

如果 使 px4_sitl gz_x500 出现错误 忍者:错误:目标 'gz_x500' 未知 然后运行 清洁 从零开始,尝试运行 使 px4_sitl gz_x500 又来了

支持的载具和 生产 命令如下。

载具 指挥 px4_sys_autostart
四旋翼飞行器(x500) 使 px4_sitl gz_x500 4001
带深度摄像头的四旋翼飞行器(x500) 使 px4_sitl gz_x500_depth 4002
配备视觉测距仪的四旋翼飞行器(x500) make px4_sitl gz_x500_vision 4005
VTOL make px4_sitl gz_standard_vtol 4004
防水布 使 px4_sitl gz_rc_cessna 4003

上述命令可启动具有完整用户界面的单个载具。 QGroundControl 应能自动连接到模拟载具。

为了在不运行 Gazebo gui 的情况下运行模拟,请使用 无头=1 旗子

无头=1 生产 PX4_SITL GZ_X500

# 使用/配置选项

启动管道允许高度灵活的配置。特别是可以

  • 使用任意世界启动新的模拟,或附加到已运行的模拟中。
  • 在模拟中添加新的载具,或将新的 PX4 实例链接到现有实例。

这些情况可通过设置适当的环境变量来管理。

# 语法

启动语法为

ARGS ./build/px4_sitl_default/bin/px4

其中 ARGS 是一个环境变量列表,包括

  • px4_sys_autostart (强制性):设置 机身自动启动 ID 的 PX4 机身启动。

  • px4_gz_model_name:设置 现存的 模型的名称。如果提供了该名称,启动脚本就会尝试将一个新的 PX4 实例绑定到与该名称完全匹配的 Gazebo 资源上。

    • 该设置与 PX4_GZ_MODEL.
  • PX4_GZ_MODEL:设置要在模拟器中生成的新 Gazebo 模型的名称。如果提供了该变量,启动脚本会在 Gazebo 资源路径中查找与给定变量匹配的模型,生成该模型并绑定新的 PX4 实例。

    • 该设置与 px4_gz_model_name.

    备注

    如果两个 px4_gz_model_namePX4_GZ_MODEL 则 PX4 会查找 PX4_SIM_MODEL 的别名,并将其用作 PX4_GZ_MODEL.然而,这样就无法使用 px4_gz_model_pose.

  • px4_gz_model_pose:时,设置模型的生成位置和方向。 PX4_GZ_MODEL 会被采用。如果提供了启动脚本,则启动脚本会按照以下语法在一个姿态下生成模型 "x,y,z,roll,pitch,yaw";其中位置以米为单位,角度以弧度为单位。

    • 如果省略,零姿态 [0,0,0,0,0,0] 使用。
    • 如果提供的数值少于 6 个,则缺失的数值将固定为零。
    • 这只能与 PX4_GZ_MODEL (不是 px4_gz_model_name).
  • PX4_GZ_WORLD:设置新模拟的 Gazebo 世界文件。如果没有给出,则 默认 (打开新窗口) 使用。

    • 如果已有模拟正在运行,该变量将被忽略。
    • 该值应为 为所选机身指定 但可以使用该参数重写。
  • px4_simulator=gz:设置模拟器,Gz 的模拟器必须是 gz.

PX4 仿真场景Gazebo世界和模型数据库 可在此处的 Github 上找到 (打开新窗口).它们被添加到 "仿真场景Gazebo "搜索中 路径gz_env.sh.in (打开新窗口) 在模拟启动阶段。

备注

gz_env.sh.in$PX4_DIR/build/px4_sitl_default/rootfs/gz_env.sh

# 实例

以下是上述不同场景的一些示例。

  1. 启动模拟器 + 默认世界 + 以默认姿势生成载具

    px4_sys_autostart=4001 PX4_GZ_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4
    
  2. 启动模拟器 + 默认世界 + 以自定义姿势(y=2m)生成载具

    px4_sys_autostart=4001 px4_gz_model_pose="0,2"; PX4_GZ_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4
    
  3. 启动模拟器 + 默认世界 + 连接现有载具

    px4_sys_autostart=4001 px4_gz_model_name=gz_x500 ./build/px4_sitl_default/bin/px4
    

# 添加新世界和模型

只需将新世界文件复制到 PX4 仿真场景Gazebo中即可 世界名录 (打开新窗口).

添加新模型

  1. 添加一个 sdf PX4 仿真场景Gazebo中的文件 模型目录 (打开新窗口).

  2. 定义 机身配置文件.

  3. 在机身配置文件中定义 Gazebo 的默认参数(本例来自 x500 四旋翼飞行器 (打开新窗口)):

    PX4_SIMULATOR=${PX4_SIMULATOR:=gz}PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}PX4_SIM_MODEL=${PX4_SIM_MODEL:=<your model name>}
    
    • PX4_SIMULATOR=${PX4_SIMULATOR:=gz} 为特定机型设置默认模拟器 (Gz)。

    • PX4_GZ_WORLD=${PX4_GZ_WORLD:=default} 设置 默认世界 (打开新窗口) 针对该特定机身。

    • 设置 PX4_SIM_MODEL 让您只需

      px4_sys_autostart=<;您的新机身 ID>; ./build/px4_sitl_default/bin/px4
      

备注

只要世界文件和模型文件都在 Gazebo 的搜索路径中 ign_gazebo_resource_path 无需将它们添加到 PX4 的世界和模型目录中。但是 make px4_sitl gz_<model>_<world>; 对他们不起作用。

# 多车模拟

Linux 主机支持多载具模拟。

欲了解更多信息,请参阅 带仿真场景Gazebo的多车模拟

# 更多信息