Gazebo Sim: evaluating a robotics simulator for C++ and ROS workflows
Open source robotics simulator. The latest version of Gazebo.
At a glance
- What is it?
- Gazebo Sim is the open source successor to Gazebo Classic for robotics simulation, combining physics, rendering, sensors, plugins, a graphical interface, and remote transport. It fits teams that need to build and inspect simulated robot worlds, but its documented installation and platform constraints require attention before adoption.
- Who is it for?
- Adopt Gazebo Sim when your team needs an extensible robotics simulator and can support its documented platform setup. Do not choose it if a single Windows command must start both server and GUI.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Gazebo Sim solves for robotics teams
Gazebo Sim addresses the need to construct, run, inspect, and extend robot simulations rather than providing only a physics engine or a 3D viewer. The README describes access to physics, rendering, and sensor models, with entry points through a graphical user interface, plugins, and asynchronous message passing and services. That combination is aimed at robotics developers who need simulated environments for robot behavior, sensor input, control logic, and repeatable experimentation.
The project is the current Gazebo line described by the repository as the latest version of Gazebo, and it is derived from Gazebo Classic. Its scope is broad. A user can access multiple physics engines through Gazebo Physics, use rendering engines such as OGRE v2, generate data from cameras, laser range finders, Kinect-style sensors, contact sensors, force-torque sensors, IMUs, and GPS, and extend the simulation with custom plugins. Models can come from Gazebo Fuel or be authored in SDF. The README also identifies supported examples including PR2, Pioneer2 DX, iRobot Create, and TurtleBot.
This makes Gazebo Sim relevant to developers testing algorithms before hardware is available and to teams assembling simulation environments for multiple robot configurations. The repository does not present it as a narrow package for one sensor or one physics engine. Its value comes from putting those capabilities behind a common simulation project, although that breadth also makes installation, release selection, and plugin compatibility important decisions.
Physics, rendering, sensors, and plugin boundaries
The repository layout shows Gazebo Sim as a C++ library with public headers under `include/gz/sim`, implementation code under `src`, and separate areas for the graphical interface and systems. The README identifies `src/gui` for the graphical interface and `src/systems` for system source code. It also lists standalone programs, example plugins, world files, integration tests, performance tests, regression tests, and Python wrappers. This separation gives downstream users a documented C++ API surface while also supporting standalone and Python-based integration paths.
The physical and visual layers are connected through related Gazebo libraries. Gazebo Physics supplies access to multiple high-performance physics engines, while Gazebo Rendering supports engines such as OGRE v2 for lighting, shadows, and textures. Gazebo Sensors produces sensor data and can add noise to simulated outputs. The README says these outputs are powered by the sensors library, so a project that treats sensor output as deterministic will need to account for the configured noise model rather than assuming every reading is identical.
Customization is handled through plugins. The README specifically names robot, sensor, and environment control as plugin targets. This is useful when a team needs a controller, a new sensor behavior, or environment-specific behavior, but it also makes plugin loading and API compatibility part of the adoption decision. Asynchronous message passing and services provide another control path, while TCP/IP transport allows a simulation to run on a remote server and communicate through sockets.
Installing Gazebo Sim and starting the first server
The README does not provide a complete package-by-package installation recipe. It directs users to the Gazebo getting started guide for installing Gazebo and to the Gazebo Sim installation tutorial for using `libgz-sim` as a library. Those pages are the authoritative installation sources because the repository itself only gives the starting command and documents environment issues caused by mixed Debian and source installations.
After installation, launch the simulator with the command below. This is the documented command for starting Gazebo Sim from the command line.
gz simThe README does not describe the exact first-run interface or a required sample world for this command, so a user should expect the available command-line behavior to depend on the installed Gazebo components and environment. To inspect the command-line options, use:
gz sim -hIf the installation combines Debian packages with a source build, the README identifies `gz-tools` command-line tools as a possible failure point. Its documented workaround is to point `GZ_CONFIG_PATH` at the locations containing Gazebo package YAML files:
export GZ_CONFIG_PATH=/usr/local/share/gz:$HOME/ws/install/share/gzThe example `$HOME/ws` is described as an example `colcon` workspace, not a required directory name. Set the variable to the actual locations used by the installation.
Running Gazebo Sim on Windows and remote hosts
Windows has a concrete command-line constraint. The README states that `gz sim`, which runs both the server and the graphical interface in one command, does not yet work on Windows. The documented workaround is to start the server and GUI in separate terminals. In the first terminal, start only the server:
gz sim -s <other args>In the second terminal, start only the GUI:
gz sim -g <other args>The README also says that Conda and `install\setup.bat` need to be sourced in both terminals. Any changes to `GZ_PARTITION` and other environment variables must be present in both as well. This is a process-level constraint, not merely a display setting. Automation that expects one Windows launch command should account for the two-process arrangement.
For remote operation, Gazebo Sim exposes TCP/IP transport through Gazebo Transport. The stated model is to run simulation on a remote server and interact with it through socket-based message passing. The README does not document a complete remote deployment procedure, port configuration, firewall setup, or authentication method. Those details therefore cannot be inferred from the repository excerpt. The transport feature is present, but the surrounding network configuration remains outside what this source confirms.
Repository structure, testing, and maintenance cost
Based on the repository layout, downstream C++ users are expected to use headers in `include/gz/sim`, while `include/gz/sim/detail` contains headers not intended for downstream use and mainly holds template implementations. The `examples/standalone` directory contains standalone programs that use `gz-sim` as a library. `examples/worlds` contains example SDF world files, and `examples/plugin` contains example plugins. This separation is useful for understanding where an application should begin, and it also warns integrators not to depend on detail headers casually.
The test tree includes integration, performance, plugin, and regression tests. The README links test coverage and build badges for Ubuntu Noble, Homebrew, and Windows, but it does not publish test results in the excerpt. It also points contributors to the Writing Tests section of the contributor guide. Users should not interpret the presence of test directories as evidence that every plugin, world, sensor, or transport configuration has been validated for their particular setup.
The project is licensed under Apache-2.0. That license identifies the repository's stated licensing terms, but this review does not provide legal advice about obligations in a particular distribution or integration. The repository is not archived, and the last push was on 2026-10-16. The release list includes `gz-sim10_10.0.0`, `gz-sim9_9.0.0`, and `gz-sim8_8.0.0`, so upgrades may involve release-specific documentation, APIs, and platform behavior. The repository includes `Migration.md` and `Changelog.md`, which are the relevant files to inspect when moving between Gazebo Sim generations.
Limits of Gazebo Sim for GUI-free and plugin-heavy projects
The clearest limitation in the README is the Windows launch behavior. A workflow that depends on `gz sim` starting both the server and GUI cannot use that exact command on Windows according to the repository's known-issues section. Separate terminals and repeated environment setup increase operational complexity, especially in scripts or developer workstations.
A second boundary is the difference between documented capability and documented procedure. Gazebo Sim supports plugins, asynchronous messages, services, and TCP/IP transport, but the README does not provide enough detail to confirm plugin packaging, remote network settings, or a complete deployment configuration. Projects that need a highly specific production control plane may need to consult the linked installation guide, API documentation, and release migration material before selecting the project.
Gazebo Sim is also not the best conceptual choice for a task that only requires a physics engine or a single offline sensor calculation. Its connected physics, rendering, sensor, GUI, plugin, and transport layers are valuable for integrated robot simulation, but they also broaden the dependency surface. A real alternative is to use Gazebo Physics directly for a narrower dynamics task, or Gazebo Sensors directly when the goal is sensor generation without a complete simulated world. Those projects solve smaller scopes with less surrounding simulation infrastructure, while Gazebo Sim is the relevant choice when those capabilities need to work together.
Editorial conclusion
Adopt Gazebo Sim when your team needs an extensible robotics simulator and can support its documented platform setup. Do not choose it if a single Windows command must start both server and GUI. Verify the installation guide, target Gazebo release, required environment variables, and the model and sensor data path before committing to a project.
Frequently asked questions
How do I install Gazebo Sim?
The README points users to the Gazebo getting started guide for installing Gazebo and to the Gazebo Sim installation tutorial for using `libgz-sim` as a library. It does not include the full installation recipe.
How do I start Gazebo Sim from the command line?
After installation, run `gz sim`. Use `gz sim -h` to view command-line options, as documented in the README.
Can Gazebo Sim run its server and GUI with one command on Windows?
The README says that the single `gz sim` command does not yet work on Windows. Run the server with `gz sim -s <other args>` and the GUI separately with `gz sim -g <other args>`, sourcing Conda and `install\setup.bat` in both terminals.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/gazebosim-gz-sim)Was this useful?