Snap-fit simulation: Object appears too soft

Hello,

for my research, I am currently trying to simulate a snapfit clasp. I designed on according to some design guidelines - i will add the stl file to this post. Then I split the part to two parts: the arms that are supposed to be flexible, but stiff, and a “base” where I am planning a robot to grasp it , which is supposed to behave like a rigid body.

In Isaac Sim I then gave the arms part a deformable material, and the base part rigid body property and attached them to each other. simply putting in a Young’s module and poisson’s ratio left the flexible part way too soft. For the unit of the Young’s Module i assumed N/m^2 - is that correct? However, when I play around with the value, the simulation does not change it’s behaviour significantly for high values, so I don’t think that this is a simple units issue.

By playing around with the Simulation Mesh Resolution and Solver Position Iterations I managed it to behave quiet stiff. However, I would like to be able to train a robotic assembly task with this in Isaac Gym and ultimately try a Sim2Real transfer. For this i would need a reliable and realistic simulation.
Is it possible, to test the behaviour by adding a defined force? It would be fine if I “cheated” so it behaved a certain way by adjusting some parameters to get a mostly realistic looking result as long as i can validate that it behaves kinda like it should when assembling it.

Can anybody help me out?
Also, did anybody try to build the deformable porperties in another software, e.g. Blender and export it to Isaac Sim? Because I am pretty new to all this, I would appreciate any help :)

snap-fit.zip (61.9 KB)

Hi @EHY ,
Our deformable model can currently not accurately simulate very stiff materials. We are working on improvements. As you suggested for a snapfit clasp it’s best to fake the behavior using rigid bodies and ‘hinge’ joints with high stiffness. My colleague @twidmer did exactly this. @twidmer could you give advise if you have more guidance beyond what I already mentioned?

Cheers,
Simon

Hi @SimonPhysX,

thanks for your reply and for confirming that idea! I am going to try this instead then. Thanks also for tagging your colleague @twidmer , I am looking forward to any tips on that!

Hi, I attached the experiment I did a while ago. The soft body solver is probably an overkill for snapfit clasps where a big portion of the object is more or less rigid. The attached sample uses two joints with high stiffness torsion springs. One could have multiple springs to simulate varying stiffness along the snapping rod. Using rigid bodies and joints should also lead to a faster simulation with better collisions compared to using soft bodies.
Buckle.zip (2.4 MB)

Hi @twidmer ,
thank you very much for sharing this! This is exactly what i was looking for.

Some questions that I still have:

  • I noticed, that the dimensions of your buckle are pretty high (e.g. est. 0.3m for the width of the buckle if I’m not wrong, and therefore you probably also have high masses). Wenn I tried pretty much the same thing, I tried using dimensions that are similar to the real buckle. I think this is the reason why I have to set the stiffnesses to values much smaller than the ones you chose. (<<1 in order to get a behaviour that is “soft enough”. Higher values didnt allow any bending at all. ) Could you confirm this theory? EDIT: I just saw the “cm” in the bottom left corner. Does this mean, that for one, your buckle only is about 2-3 cm wide and secondly, that the stiffness is given in N*cm/degrees? (I’m sorry, I am always getting confused on which unit is used where…) If so, I would be even more confused that my stiffness are so much smaller than yours…

  • Also on that topic: Does using the scale function (in “Transform” in the Property editor) after experimenting to get the right stiffnesses also give good results, or should I rather work in the right dimensions (size-wise and mass-wise) directly? I can imagine the scaling might mess up these values?

  • I calculated the stiffness I needed manually (c=M/alpha; M is a function of young’s module, strain, and the geometry). If I set the stiffness to the calculated value, and also set the masses/densities correctly, would this result in correct physical behaviour of the simulation?

  • Is there a way to evaluate (quantitatively) the physical behaviour? i am thinking getting force values, deflection, …

Thanks again for your help, I really appreciate it!

Hi,

Indeed, I did not care much about the dimensions when setting up that proof of concept scene. In general simulation becomes trickier the smaller things get but part of that can be fixed by allowing a smaller timestep. But that costs some performance.

You need to lower the stiffness of the torsional springs if you scaled down the scene. To be honest I also always get confused by the units. Usually you can create a cube mesh as reference, it will have an edge length of 1m no matter if m or cm is used as unit. I’m also never sure what quantities get updated when switching them in an existing scene. I tend to select the unit once at the beginning of setting up a scene and then keep it.

For physics simulation, it’s best to avoid scaling altogether if possible. There is a button on the physics debug panel to print the mass and inertia of an object to the console. That helps to check if the objects have the expected masses.

The results should be physically quite accurate. But I would not blindly trust them, especially when building a real-world product based on the simulation. Good results have been achieved by training control strategies that allow biped or quadruped robots to walk. Those control strategies also work well on the real hardware.

To my knowledge, force reporting is only available on articulation joints. But it is possible to build some kind of scale by using a prismatic joint. The stiffness of its limits can act as a spring and the spring law force=stiffness*deflection applies. But we have some issues with momentum conservation that might lead to incorrect contact forces when using the GPU solver. We are currently working on fixing those issues.

Thank you, that helps a lot.
Do you mean the Inspect Physics Util to check the mass?

Also thanks for the tip with the cube, I will definitely use that!