Hello,
I’trying to set up a deformable object pick and place application in omniisaacgymenvs for a cloth manipulation task. However the cloth keep slipping out of the gripper in this way…
Currently, i’m moving the joints using Articulation view API to set the joint position to grasp the gripper. I also tried to set joint efforts during the grasping but it doen’t help.
Am i missing something regards the grasp phase? I’ve tried severals set of parameters for the cloth without any success
Thank you
Hi @user126140 - Someone from our team will review and respond back to you.
For cloth - it is recommended that you make a surface mesh only - no thickness. Also - the mesh needs to be tesselated to the particle dimension. Check the Particle Cloth example in Window->Simulation->(physics)Demo Scenes.
# create a mesh that is turned into a cloth
plane_mesh_path = Sdf.Path(omni.usd.get_stage_next_free_path(stage, "Plane", True))
plane_resolution = 100
plane_width = 400.0
# reset u/v scale for cube u/v being 1:1 the mesh resolution:
SETTING_U_SCALE = "/persistent/app/mesh_generator/shapes/plane/u_scale"
SETTING_V_SCALE = "/persistent/app/mesh_generator/shapes/plane/v_scale"
SETTING_HALF_SCALE = "/persistent/app/mesh_generator/shapes/plane/object_half_scale"
u_backup = carb.settings.get_settings().get(SETTING_U_SCALE)
v_backup = carb.settings.get_settings().get(SETTING_V_SCALE)
hs_backup = carb.settings.get_settings().get(SETTING_HALF_SCALE)
carb.settings.get_settings().set(SETTING_U_SCALE, 1)
carb.settings.get_settings().set(SETTING_V_SCALE, 1)
carb.settings.get_settings().set(SETTING_HALF_SCALE, 0.5 * plane_width)
omni.kit.commands.execute(
"CreateMeshPrimWithDefaultXform",
prim_type="Plane",
u_patches=plane_resolution,
v_patches=plane_resolution,
)
# restore u/v scale backup
carb.settings.get_settings().set(SETTING_U_SCALE, u_backup)
carb.settings.get_settings().set(SETTING_V_SCALE, v_backup)
carb.settings.get_settings().set(SETTING_HALF_SCALE, hs_backup)
This is how the generated mesh should look like, when you look at it with the wireframe mode enabled.
This works for planar rectangular shapes. For Tshirts or other types of meshes it’s recommended to import it such that it’s a surface mesh (it can be a 3D mesh as long as it’s a 2D surface), and that the vertices are at a maximum distance according to the resolution.
1 Like
Thank you for the response, i tried both plane and mesh but no result.
Using the default mesh provided in the example is not reliable and the result are not consistent for my application.
So far i;ve the following questions:
- How to improve grapsing? What parameters affect the grasping of the tissue?
- Do you have an example of a surface mesh? and how it works?
- Why in Omniverse the simulation output is set for Fabric/Fabric CPU while when launching isaac sim app i see USD instead. In isaac sim i obtaining slightly better result, but not sufficient to achieved my desired behavior
Thank you again
Yes - the code above generates a planar surface mesh. For other things you will need to use a tesselator that generates a mesh with a max distance between vertices so you get the desired granularity, and have a mesh that is made only of surface geometry.
The problem with having a solid geometry is that it will generate something similar to a bag - then one side of the cloth will collide against the other, cause interpenetration, and it will be a mess - that’s what I can notice in your video when one side of the cube interweaves with the other as it’s folding the cloth - then the penetration forces are strong enough to cause the grasp to slip.
that can be somewhat solved by tuning the particle size among other things too - if you send me your file I can take a look into how to make it perform better
What should be the best dimension for a cloth-like?
I’m using a drape of 30cm x 30cm with 100 particles per side.
The dimensions and particle count for a cloth-like object in a simulation can vary greatly depending on the level of detail you need and the computational resources you have available.
A 30cm x 30cm drape with 100 particles per side would give you a particle spacing of about 0.3cm, which should be sufficient for a fairly detailed simulation. However, keep in mind that increasing the number of particles will increase the computational load of the simulation, so you’ll need a more powerful system to handle it.
If you find that the simulation is running too slowly or not providing enough detail, you could try adjusting the dimensions and particle count. For example, you could try increasing the particle count to 200 per side for more detail, or decreasing it to 50 per side for better performance. You could also try adjusting the dimensions of the drape if you need it to be larger or smaller.
Ultimately, the best dimensions and particle count will depend on your specific needs and resources. It may take some trial and error to find the right balance between detail and performance.
Hi,
I’m looking to simulate a cloth and a robotic arm similar to the one above is there any good resource that i could follow to implement it?