Even with the latest version of Gazebo, its physics engine remains DART, and I have to say its performance is simply abysmal. While Gazebo offers the best compatibility with ROS, and we all love ROS, when we search the entire internet, we can barely find any decent humanoid robot simulation cases—all we can find are trivial, useless ones. I believe this has a lot to do with Gazebo’s almost worthless physics engine. For simulating humanoid robots or more complex scenarios, most people prefer to use Mujoco, Isaac, and similar tools. I really don’t understand why Gazebo, as a simulation engine that has existed for over 20 years, does absolutely nothing in the face of the physics engine advantages of later competitors like Mujoco and Isaac. It’s possible that my understanding of the Gazebo team’s priorities is flawed, but I’m truly disappointed.
As an exceptional physics engine, MuJoCo has already been open-sourced. In my view, Gazebo should, at the very least, support integrating MuJoCo as an optional physics engine.
For instance you mention Isaac Sim, which is awesome, but NVidia’s PhysX physics engine does a lot of the heavy lifting. Here is a current GitHub issue within the GZ-Physics Repo, which mentions using the PhysX C++ SDK as an option for Gazebo.
It’s unfair to say Gazebo has done nothing to improve DART: Pull requests · dartsim/dart · GitHub . E.g contact surface customizations, force-dependent slip and other features were upstreamed to DART from Gazebo.
But I agree these are individual features and they do not improve the working of DART as a whole.
Also I think Dart isn’t GPU(CUDA, Vulkan, Metal) accelerated like Mujoco/Isaac.
And Bullet author now works for Nvidia so…
Would it be hard to GPU accelerate some DART parts? It doesn’t have to be CUDA, the AMD/Intel GPUs also have Vulkan support.
GPU acceleration of physics is hard. The problems you need to solve are usually not very suitable for GPUs. Of course, collision checks can be accelerated, but not the physics algorithms themselves. I guess what the GPU accelerated engines usually do is parallelize in terms of running thousands of worlds at the same time. In such case, utilizing the GPU power seems a bit more tractable. However, Gazebo is not built for such use-case (or, it could probably be used this way - there are currently experiments with utilizing Gazebo for RL, but I don’t know the current progress).
I was thinking that there are already open-source physics engines with better performance that use GPUs, such as Mujoco. Could the core team of Gazebo consider integrating these physics engines? Physics engines are really important for Gazebo users. With the current Dart engine, the system is particularly prone to crashes or has a very low RTF (Real-Time Factor) when the scene becomes slightly more complex.
You’re absolutely right. The latest version of Gazebo does allow us to switch to other physics
engines. However, the actual situation I’ve observed is that 99% of users can only use the default physics engines and lack the ability to switch it to another one. If Gazebo’s default physics engine could be improved—at the very least, using GPU resources to enhance simulation quality and efficiency—it would undoubtedly be a huge benefit for these users. As far as I know, engines like MuJoCo are now open-source, and I wonder if the Gazebo core team has plans to add these high-performance physics engines to Gazebo’s default options.
I’m having the same problem. Simulating complex scenes in Gazebo is a disaster. The examples I’ve seen so far are all relatively simple simulations. Perhaps I just don’t understand it well enough.
If you are having trouble with Gazebo, I suggest you make a request for help, with a detailed description of your situation, problem and any error messages.