In the robotics course at our university, we were taught using Webots. Although the docs felt kinda dated, but it was a neat simulator.
Now that I’m getting started in ROS, Gazebo’s name comes up everywhere, it even has its own chat channels, forum category and place in the official docs.
Webots also supports ROS2 and is also FOSS.
So, what’s there in Gazebo that’s not in Webots? And what’s unliked in Webots that is not the case in Gazebo?
Both Gazebo and Webots are equally supported by ROS, and you are free to choose whichever meets your needs best. The reason that Gazebo is so commonly spoken about is that it has been open source since 2002, whereas Webots was only made open source in 2018. Gazebo was therefore used frequently in ROS right from the start.
I haven’t used webots in ages, but even looking in the official docs, it seems you need to add another PPA to your system to install Webots. That’s unlike Gazebo which comes directly packaged in the ROS PPA.
Im also brand new to ROS and Robot simulations. Honestly its kind of overwhelming how many sims are out there now. Gazebo, Webots, MuJoco, IssacSim, Drake, PyBullet .
When it comes to choosing a sim:
If someone already has a comfort level with a sim, id say stick with that and start building your project.
That said, It seems to me from a completely newbie perspective that Gazebo has the most tutorials that relate directly with ROS but in some cases may be not be as advanced.
The others seem to have more advanced capability in terms of physics models and GPU integrations for AI training.
The other thing to consider is if you are trying to follow some existing work/ research/ open source project , it may be wise to adopt / learn which ever simulator is used. Seems to me ROS has integrations for most of the above mentioned sims.
All this sim-to-real stuff is so bleeding edge I dont really think there is one robot viz/simulation platform that has come to the surface as the industry standard.
Gazebo often being mentioned alongside ROS may be also because both are projects under the governance by the OSRA.
But technically, this does not mean Gazebo is the only solutions or somehow preferred when working with ROS. There are many other options, like
And to extend that list: Pyrobosim, CoppeliaSim, Stage, mvsim.
A typical issue that arises also in many other areas of ROS is that it is really hard to get a good overview of available solutions. But for a beginner, gazebo is a good starting point, mainly because it was a good starting points for others before.
The longer I work in this field, the more I think in ROS and in open source in general, things are often simply popular because they are popular. This sounds shallow, and it is. But many people assume packages and approaches are popular for some inherent technical reason, but often they may just be popular in the same way pop stars are popular.
I’ve been using Gazebo since the very early days. At the time, there were not as many choices out there as today. Gazebo made robot simulation easily accessible, and it grew together with ROS itself. I guess that’s the reason why it remains influential in the ROS community even today.
That said, I would not recommend Gazebo as the first choice to someone new to ROS and robot simulation TODAY. Due to its long history, there is a lot of information about it on the Internet, but a lot of it is outdated. The migration to Ignition (but later back to the Gazebo name again) only made the situation worse. In my opinion, Webots is a lot more beginner-friendly. Its UI is more polished, and the documentation is more complete and systematic (not saying it’s perfect, though). Other simulators like Mujoco, IsaacSim, or game-engine-based simulators also have their advantages for specific use cases. I don’t limit myself to any single simulator. In the end, a simulator is just a tool, and it doesn’t matter which one you prefer as long as it solves your problem and you feel comfortable with it.
Is that really a problem? isn’t it a normal thing for Ubuntu users?
Yea but I was worried about how well integrated the other options are.
Makes sense, did not come to mind.
I got worried the more I dug into Gazebo because of its XML-like definition language, defining a simulation scenario like that will be monotonous and hard to teach.
Webots was much easier to learn because you have the UI—giving rest to your memory, and live view of the changes—much easier to prototype with.
And there’s the PROTO language stuff when there is need for textual and programmatic definition of the scenes.
Yes and no. If you install ROS, you can have Gazebo right away. To get Webots, there’s an additional step. And many users fear adding PPAs to their systems (because wrongly composed PPAs can break your whole OS).
There is currently a very nice movement towards providing a unified ROS interface to many simulators: https://github.com/ros-simulation/simulation_interfaces/pull/1 . The PR is in its final stages of review, but if somebody has more good points to consider, please contribute =)
N.B. This is mostly my personal opinion, don’t take it as gospel!
The key thing to consider about Gazebo, especially modern Gazebo, is that it’s not just one monolithic simulator; it’s a collection of libraries that together form a complete simulation system. While many people associate Gazebo with ROS, the reality is that Gazebo is largely ROS-agnostic. There are a number of groups out there using Gazebo without using ROS at all. What’s cool about Gazebo is that, with a little work, you can choose your own physics engine or write your own physics plugins for any scenario or application. That’s how we’ve been able to take Gazebo and tailor it to a project like the DARPA SubT challenge.
What I’d really like to see is better integration between RViz and Gazebo. My personal opinion is that Gazebo and RViz should be a unified application that runs both real and simulated robots. The dream I’ve had for a while is that a robot could walk around a room, construct a 3D map, and then use that map for simulation later. We’re slowly getting there. I would also really like to see more examples of Gazebo used for robot integration testing (basically running a Gazebo simulation with ROS as an integration test).
Fairly often, Gazebo gets dinged for not supporting reinforcement learning out of the box. Isaac Sim seems to be taking the lead in that domain. The fact is, there’s nothing preventing you from doing RL with Gazebo; people do it fairly frequently. Our problem is that we don’t have a turn-key RL example that people can just fork and use right away. I would love to see that change.
Anyway, this is a long way of saying Gazebo could always use more regular contributors. People think our team is huge, but the reality is that only a handful of people make regular contributions to the core Gazebo source code. If you want to get involved and build cool stuff like this, feel free to swing by our regular Gazebo Community Meetings!
Anyway, this is a long way of saying Gazebo could always use more regular contributors. People think our team is huge, but the reality of the situation is that only a handful of people make regular contributions to the core Gazebo source code. If you want to get involved and build cool stuff like this feel free to swing by our regular Gazebo Community Meetings!