Simulating granular media like sand in Isaac Sim

Hi,

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.
[https://youtu.be/adsNbiJz2XA]

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!

2 Likes

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.

Philipp

Hello,

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: [https://www.youtube.com/watch?v=4qZUz4Moc_Y] → 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?

Philipp

hey Can you confirm if particle-particle adhesion works? because i played with particle adhesion scale and particle adehsion offset and found that particle particle adhesion is not working. Is it a bug or am i missing something.

@fmdazhar - Can you add some more details like screenshot, error code, repro steps? that will help dev to look further

image
image

i simply tried to test the particle behaviour and calibrate the pbd parameters. but the particles arent settling down and keep sliding. so i tried to adjust the particle adhesion scale but it had no effect whatsoever. so i doubt there is a problem with adhesion between particles working. particle-non particle adhesion works fine tho.

i couldnt add .usd file for some reason.but if you need something more, pls let me know :)

Yes please try to figure out how to share a USD that we could look at.

calibrate3 (1).zip (7.2 MB)

Hi @fmdazhar - It looks like you get adhesion, otherwise the particles would collapse more. You will not be able to stop all particle motion since we only have dynamic friction so there will always be some drift and sliding. You can try bumping the friction scale to maybe get a bit more solid-solid particle friction and less motion.

I expect the particles to form a lump if i increase particle adhesion but nothing happens. Also i see no difference when i set particle adhesion scale to 0. Which made me suspect that adhesion is absent. I think the cone formed now is because of friction only as i see them get seperated as i change friction. Can you confirm again if particle particle adhesion is working?

Hi @fmdazhar,

The parameter which helps with clumping is “Adhesion Offset Scale”. You need to set it for example to 1.2. This will define the region in which the attractive forces will act.
Further, you set “Adhesion” to 0.0, but you need to set it to a positive value, and the “Adhesion Particle Scale” defines by which factor the particle adhesion will be scaled. Unfortunately we seem to have a bug which breaks friction against colliders if adhesion is large. So choosing a very small “Adhesion” and a large “Particle Adhesion Scale” seems it can help.
However, it’s very hard to make your setup work, preventing the whole stack from collapsing, mainly because the ratio between gravity and particle size is challenging for the solver. 1 cm sized particles at regular gravity is pretty hard currently.
What can help is to tweak “Max Neighborhood” and “Neighborhood Scale”, but it only goes so far.
If you can compromise on the particle resolution it get’s much easier to make it stable.
Last but not least, your original goal to have a robot walk on the granular material is again very challenging. I think the particle solver is just not accurate enough to for this kind of scenario at the moment, and I hope we get to improve it in the future.

Cheers,
Simon

1 Like

calibrate3 (2).usd (175.9 KB)
I attached an example where I tried to tweak for 1.5 cm sized particles.