Robot penetrates the soft body when pushing it

Isaac Sim Version

4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: NVIDIA GeForce RTX 3090 Ti
  • Driver Version: 535.183.01

Topic Description

Detailed Description

I have a spatula tool attached to the end-effector of my Kuka IIWA robot. When I control it to push the deformable object on the table, it will penetrate the object not move it towards the force direction.

Screenshots or Videos

Additional Information

What I’ve Tried

Change the deformable’s parameters (tried stiffer/softer).

I have also faced similar issue when simulating a deformable cylinder with young’s modulus of 1e3 to 1e4.
But, it works with certain configurations, but I don’t know why.
If you’re have the mesh simplification True, then reduce the hexahedral mesh to 3 or 4 and It stopped the penetration for my case.
If you have the mesh simplification False, it doesn’t penetrate but you would face jittering issue. try changing the density of the object to reduce jittering. The hexahedral mesh element don’t affect the behavior for the latter case.
I would suggest leaving the mesh simplification on as its more stable.
I experimented increasing the collision and simulation mesh resolution up to 20,000 elements, it did not stop penetration. I tried changing the position solver iteration, damping, etc., and it doesn’t seem to affect the penetration behavior.

I don’t understand this behavior, but someone can help me understand.

HI @abdulhafiz, thank you so much for providing the help!
Reduce the hexahedral mesh to 3 or 4 did work, but my mesh looks like it’s shrunk (lost information). I don’t know if it’s the same situation on your side. Having collision_simplification=False takes forever to load the scene.
Do you mind sharing the whole parameters with me, the deformable material, and the deformable prim simulation (I created using SingleDeformablePrim)?

Yes, reducing the hexahedral mesh reduces the size of the simulation mesh and indirectly the collision mesh.
however, even if you observed the simulation mesh to be an low res approximated model, the collision mesh is a surface mesh which follows the shape of the object to properly track collisions. At least that’s what I assume and didn’t observe any abnormal collisions.
I don’t have loading issues if I set collision_simplification=False, but I’m only using a cylinder for my example, it could be the reason I haven’t faced this issue.

I have attached the screenshots of the deformable body and material properties, and the physics scene properties.

Also, go over these two links for more information on the modeling and simulation behavior for deformable object;

  • Isaac sim doc- This doc is good starting point
  • Omni physics doc - this goes over some behavior detail.
    It says its deprecated, this is what current version uses (I believe)

and also check this post: (Deformable Body Visualization Issues)

If you find any other info regarding deformable object contact forces, please share. I hope the next version fixes the existing bugs and add contact report features for the deformable objects.


1 Like

Hi @abdulhafiz, thanks for sharing the information with me! From what I know so far, the contact force is not working with the deformable object, and they’re saying will have this feature in the future release.

I created my own mesh and that could be the reason why you didn’t encounter some of my problems.
Also I’m wondering if you have any idea about creating the attachment on specific attach point?

Sorry, I have not worked with the attachment point. But, the links I shared previously discusses it briefly.

I checked the documents, and it seems like my mesh’s collision and simulation won’t move when the tool touches it. Have you ever met this before?

Yes, I have faced similar issues with the visualization of the meshes not being updated.
check this out:
Discrepancy Between Deformable and Visual Meshes in Python Standalone Application

I haven’t tested if this solution works. I guess we just need to wait until the next release is out with the fixes.

1 Like

Okay, then that seems to be a known issue.
I tried to generate a cuboid mesh using their default method DynamicCuboid in Isaac Sim, which should be similar to what you have in Issac Lab. But the issues mentioned above still there.

set_rest_offset and set_contact_offset do help

I have tried DynamicCuboid a while ago, when I was using Isaac Sim 4.2. I think it’s not in the Isaaclab API, so I don’t use it right now.
But it seems like its for only rigid body, pls check the Isaac Sim documentation? [isaacsim.core.api] Isaac Sim Core — Isaac Sim
check DeformablePrim API instead for Isaac Sim: [isaacsim.core.prims] Isaac Sim Core API (Prims) — Isaac Sim

can you explain what issue are you referring? is it the visual aspect not updating? or the simulated values such as stresses, position, etc?
As far as I remember, the nodal position and stress changes and gets updated for me.

And yes, rest and contact offset should decrease any gap between contact surfaces. But, make sure to keep the contact offset twice the rest offset according to the documentation.

I can not find a similar class to MeshCfg in Isaac Sim. I warp DynamicCuboid up to DeformablePrim with DeformableMaterial. The visualization stuff is not updated. Nodal positions work fine.

Thanks for mentioning keep the contact offset twice the rest offset, which I do not see in the Sim documentation.

Discrepancy Between Deformable and Visual Meshes in Python Standalone Application has a response from the team but I don’t understand what that means.

Hi @lyx010318 and @abdulhafiz, thank you both for the insightful discussions on the forums on deformable object penetrations. And sorry for this very late follow-up.

Are there any pending questions on this topic I can help with? I was trying to reproduce these penetration issues on Isaac Sim 5.1 and omni kit 107.3, but even with low Young’s modulus I am not getting interpenetrations. I have attached a video and the USD I used for this setup in case this setup is helpful for you. Let me know where you might still be facing issues.

Collected_push_deformable.zip (904.9 KB)

I think what I did was have a thin/small object trying to push the deformables from a point, not a plane like the video you sent.

Would it be possible to change the object to a more volumentric object? Collision penetrations are a known issue with PhysX and it is difficult to prevent them. Enabling CCD can help with the issue and potentially increasing the position iteration counts but if it is easy to increase the size of the paddle, that would be the best solution.

That won’t be a solution since then it will be unrealistic. Do you have any other ways to optimize this?

Can you share the asset (USD, stl, etc) for your robot end-effector, and I may be able to take a look.

model.zip (14.3 MB)

Thanks!