Simulating granular media like sand in Isaac Sim


I’m thinking of simulating granular media like sand in Isaac Sim by using particle systems. I’m especially interested in simulating a legged robot walking on granular media.

I succeeded in simulating fluid-like behaviors of particle systems, but whenever I uncheck the checkbox ‘fluid’ of ‘ParticleSet’ to simulate granular media, the particles collide with each other and bounce insanely. So I couldn’t set the granular media-terrain environment that I wanted. I attached a video of what I experienced.

I would like to ask for your help and knowledge about how to simulate granular media terrain in Issac. What should I do to simulate granular media like sand or ballpool? It would be also appreciated if you let me know recommended tutorials or documents about it (other than this official page: Particle Simulation — Omniverse Extensions latest documentation. I have already read it.)

Thanks for your help!


Hi @zyoon6 ,

The particle simulation docs is where I would have pointed you as well, and the offsets explanation in particular. The collision/detection offsets are different for solid and fluid particles, so you need to make sure they are tuned right to avoid explosions as you mention.



Do you simulate your robot with the particleset on the GUI or within a Python code?

In GUI. You can check it from my video. I wonder whether it matters

Thank you for your answer.

As you said, I changed offset parameters and got some better(not exploding) results. Here is my new video: [] → Please see 0:34 where I changed solid rest offset to 0.5*particle contact offset.

Based on my understanding, solid rest offset represents the size of particles, whereas particle contact offset defines the range of neighborhood particles that are considered by the contact solvers. That is, particles closer than two times of particle contact offset from each particle are considered as ‘neighbors’ of the particle, and their interactions are solved by the contact solver.

Therefore, the above results indicate that the more number of the neighbor particles are solved by the contact solver, (I would say) the better(or the more realistic) GM behaviors can be shown. So it seems that we are getting more accurate simulation results since we make the simulation more comprehensive (and perhaps put higher computation resources as a trade-off), rather than changing the ‘physical’ properties of the particles similar to the reality.

Do I understand the mechanism correctly? Any insight into this would be appreciated.
I also wonder what value(ratio between those offset parameters) would be the best.

Hi @zyoon6,

Yes, your understanding is correct! We don’t have a general rule of thumb besides the autocompute formulae here: Particle Simulation — Omniverse Extensions latest documentation

We do expect some manual tuning is required to get the appropriate simulation fidelity for your application. Please also consider the neighborhood size as a tuning parameter.

For the bubbling you get when moving the kinematic at the end of the video, did you try reducing the time step to reduce the bubbling?