RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.34k stars 1.26k forks source link

Recommendation for setting hydroelastic modulus #21048

Open DamrongGuoy opened 8 months ago

DamrongGuoy commented 8 months ago

Please add to the Hydroelastic User Guide or tutorials on how to set the value of hydroelastic modulus for common materials.

For reference, this table shows Young's moduli of common materials. Is it possible to relate hydroelastic modulus to Young's modulus in a simple layman's way? https://physicsnet.co.uk/a-level-physics-as-a2/materials/young-modulus/ image

The table above shows that rubber's Young's modulus is 0.02 GPa = 2e7 Pa. Anecdotally, we found that hydroelastic_modulus = 2e7 Pa is too stiff for household rubber objects (size in centimeters).

Edit

Please disregard any of the heuristics in the original post below (now strikedthrough). They are not based on any formalism nor practical observations, but more from user suggestions. The discussion below with an example for the sphere is closer to a formal analysis showing the relationship between hydro modulus, geometry and forces. While not a full answer, hopefully it provides some useful insights.

~We have considered in the past the following choices~

~- hydroelastic_modulus = min (Young's modulus, 1e7)~ ~ - It gives everything (rubber, plastic, bone, copper, mild steel) 1e7 Pa.~ ~ - It cannot work with anything stiffer than rubber.~

~As a side note, I was informed that our code might become unstable if we take a hydroelastic modulus greater than 1e7 or 1e8 Pa. If that is true, please document it.~

DamrongGuoy commented 8 months ago

@amcastro-tri gave a very useful analysis of the relation between hydroelastic modulus and Young's modulus. I quote Alejandro here:

"Hydro and Young's modulus are obviously related, but there relationship is geometry dependent. For instance, we can solve for the elastic force between a sphere and a half-space analytically. This is what you get: Fhydro = π/3⋅Eₕ⋅d²(3 - 2d/R) FHertz = 4/3⋅E⋅R½⋅d³⁄₂ where R is the sphere's readius, d is the penetration and I denoted with Eₕ the hydro modulus. As you can see yes, both forces are linear with their respective moduli, but they do not follow the same law. If I change gometries, both laws will change. So you could say that for the same force and penetration, for the sphere/half-space contact, the moduli relate by (for small d/R for simplicty): Eₕ = 4/3/π⋅E⋅(R/d)½ As you can see, in general a function of geometry and state. Accoriding to this, a E is a bad approximation at small penetrations and it gets better at larger penetrations. Maybe we could include an analysis like this in the hydro guide. I could give it a shot if you guys find this analysis useful"

jbinagia commented 8 months ago

I like the relationship derived from relating hydroelastic contact to Hertzian theory (at the very least for building up intuition). The factor $R/d$ sort of brings to mind the function set_penetration_allowance() used to estimate point contact stiffnesses for a desired amount of penetration. Maybe an analogous function could be created for hydroelastic contact, that takes as input a desired amount of penetration and the Young's modulus for the material and returns an estimate of the corresponding hydroelastic modulus to use? Obviously this is not going to work for complex shapes but might be useful at least to give the user a starting point?