# 仿真场景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_name
和PX4_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
# 实例
以下是上述不同场景的一些示例。
启动模拟器 + 默认世界 + 以默认姿势生成载具
px4_sys_autostart=4001 PX4_GZ_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4
启动模拟器 + 默认世界 + 以自定义姿势(y=2m)生成载具
px4_sys_autostart=4001 px4_gz_model_pose="0,2"; PX4_GZ_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4
启动模拟器 + 默认世界 + 连接现有载具
px4_sys_autostart=4001 px4_gz_model_name=gz_x500 ./build/px4_sitl_default/bin/px4
# 添加新世界和模型
只需将新世界文件复制到 PX4 仿真场景Gazebo中即可 世界名录 (打开新窗口).
添加新模型
添加一个 sdf PX4 仿真场景Gazebo中的文件 模型目录 (打开新窗口).
定义 机身配置文件.
在机身配置文件中定义 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的多车模拟