Gazebo Simulation
Last updated
Last updated
:::warning Gazebo was previously known as "Gazebo Ignition" (while Gazebo Classic was previously known as Gazebo). See the for more information. :::
is an open source robotics simulator. It supersedes the older simulator, and is the only supported version of Gazebo for Ubuntu 22.04 and onwards.
Supported Vehicles: Quadrotor, Plane, VTOL
@
:::note See for general information about simulators, the simulation environment, and simulation configuration (e.g. supported vehicles). :::
Gazebo is installed by default on Ubuntu 22.04 as part of the development environment setup:
If you want to use Gazebo on Ubuntu 20.04 you can install it manually after following the normal setup process (installing gz-garden
will uninstall Gazebo-Classic!):
Gazebo SITL simulation can be conveniently run through a make
command as shown below:
This will run both the PX4 SITL instance and the Gazebo client. Note that all gazebo make targets have the prefix gz_
.
The supported vehicles and make
commands are listed below.
Vehicle
Command
PX4_SYS_AUTOSTART
make px4_sitl gz_x500
4001
make px4_sitl gz_x500_depth
4002
make px4_sitl gz_x500_vision
4005
make px4_sitl gz_standard_vtol
4003
make px4_sitl gz_rc_cessna
4004
The commands above launch a single vehicle with the full UI. QGroundControl should be able to automatically connect to the simulated vehicle.
In order to run the simulation without running the Gazebo gui, use the HEADLESS=1
flag:
The startup pipeline allows for highly flexible configuration. In particular, it is possible to:
Start a new simulation with an arbitrary world or attach to an already running simulation.
Add a new vehicle to the simulation or link a new PX4 instance to an existing one.
These scenarios are managed by setting the appropriate environment variables.
The startup syntax takes the form:
where ARGS
is a list of environment variables including:
PX4_GZ_MODEL_NAME
: Sets the name of an existing model in the gazebo simulation. If provided, the startup script tries to bind a new PX4 instance to the Gazebo resource matching exactly that name.
The setting is mutually exclusive with PX4_GZ_MODEL
.
PX4_GZ_MODEL
: Sets the name of a new Gazebo model to be spawned in the simulator. If provided, the startup script looks for a model in the Gazebo resource path that matches the given variable, spawns it and binds a new PX4 instance to it.
The setting is mutually exclusive with PX4_GZ_MODEL_NAME
.
:::note If both PX4_GZ_MODEL_NAME
and PX4_GZ_MODEL
are not given, then PX4 looks for PX4_SIM_MODEL
and uses it as an alias for PX4_GZ_MODEL
. However, this prevents the use of PX4_GZ_MODEL_POSE
. :::
PX4_GZ_MODEL_POSE
: Sets the spawning position and orientation of the model when PX4_GZ_MODEL
is adopted. If provided, the startup script spawns the model at a pose following the syntax "x,y,z,roll,pitch,yaw"
, where the positions are given in metres and the angles are in radians.
If omitted, the zero pose [0,0,0,0,0,0]
is used.
If less then 6 values are provided, the missing ones are fixed to zero.
This can only be used with PX4_GZ_MODEL
(not PX4_GZ_MODEL_NAME
).
This variable is ignored if an existing simulation is already running.
PX4_SIMULATOR=GZ
: Sets the simulator, which for Gz must be gz
.
:::note gz_env.sh.in
is compiled and made available in $PX4_DIR/build/px4_sitl_default/rootfs/gz_env.sh
:::
Here are some examples of the different scenarios covered above.
Start simulator + default world + spawn vehicle at default pose
Start simulator + default world + spawn vehicle at custom pose (y=2m)
Start simulator + default world + link to existing vehicle
To add a new model:
PX4_SIMULATOR=${PX4_SIMULATOR:=gz}
sets the default simulator (Gz) for that specific airframe.
Setting the default value of PX4_SIM_MODEL
lets you start the simulation with just
:::note As long as the world file and the model file are in the Gazebo search path IGN_GAZEBO_RESOURCE_PATH
it is not necessary to add them to the PX4 world and model directories. However, make px4_sitl gz_<model>_<world>
won't work with them. :::
Multi-Vehicle simulation is supported on Linux hosts.
PX4_SYS_AUTOSTART
(Mandatory): Sets the of the PX4 airframe to start.
PX4_GZ_WORLD
: Sets the Gazebo world file for a new simulation. If it is not given, then is used.
This value should be but may be overridden using this argument.
This value should be , in which case it does not need to be set as an argument.
The PX4 Gazebo worlds and and models databases . They are added to the Gazebo search PATH
by during the simulation startup phase.
New worlds files can simply be copied into the PX4 Gazebo .
Add an sdf file in the PX4 Gazebo .
Define an .
Define the default parameters for Gazebo in the airframe configuration file (this example is from ):
PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}
sets the for that specific airframe.
For more information see: