Hi,
I’m currently working on a simulation in Isaac Sim 4.1.0 in Windows Server 2022 where a Franka Emika robot needs to perform a pick-and-place task with a piece of fabric (plane). However, the robot is unable to grasp the fabric properly.
I would appreciate any help on how to fix this issue. I can provide a video of my current simulation for reference.
I don’t use any code, just action graph (pick & place controller) from IsaacSim 4.1 similar than this tutorial OmniGraph: Pick-and-Place Controller Node — Isaac Sim 4.2.0 (OLD)
simulation.zip (18.7 KB)
1 Like
Hi Isabella, Thank you for your question and welcome to the developers community! I will look into this shortly. Have you tried to grasp the cloth from its edge? It seems to be from the video that it is having trouble pinching the cloth.
1 Like
Yes, I have tried grasping the cloth from its edge, but unfortunately, it has not been successful. I have attached a folder named simulation.zip to the post, where you can see what I have done so far.
1 Like
Hi @isabella.herrarte,
Sorry for the delay. Technically you should be able to grasp the cloth. I am trying to reproduce the task but it will take me a bit of time. In the meantime, have you tried:
- Setting gravity to 0 so it is a bit easier to grasp the cloth?
my_world = World(stage_units_in_meters=1.0, backend="torch", device="cuda")
my_world.get_physics_context().set_gravity(0)
- Increasing friction in the ParticleMaterial?
# Create cloth mesh (10x10 grid)
tri_points, tri_indices = deformableUtils.create_triangle_mesh_square(dimx=10, dimy=10, scale=1.0)
# tri_points, tri_indices = deformableMeshUtils.createTriangleMeshCube(dim=10)
init_loc = Gf.Vec3f(0.0, 0.0, 0.5)
physicsUtils.set_or_add_translate_op(cloth_mesh, init_loc)
# physicsUtils.set_or_add_orient_op(cloth_mesh, Gf.Rotation(Gf.Vec3d([1, 0, 0]), 15 * i).GetQuat())
# Set mesh attributes
cloth_mesh.GetPointsAttr().Set(tri_points)
cloth_mesh.GetFaceVertexIndicesAttr().Set(tri_indices)
cloth_mesh.GetFaceVertexCountsAttr().Set([3] * (len(tri_indices) // 3))
# Create particle material and system
particle_material = ParticleMaterial(
prim_path=cloth_path + "/particleMaterial",
drag=0.3,
lift=0.3,
friction=0.8
)
radius = 0.5 * (0.6 / 5.0)
restOffset = radius
contactOffset = restOffset * 1.5
particle_system = SingleParticleSystem(
prim_path=cloth_path + "/particleSystem",
simulation_owner=my_world.get_physics_context().prim_path,
rest_offset=restOffset,
contact_offset=contactOffset,
solid_rest_offset=restOffset,
fluid_rest_offset=restOffset,
particle_contact_offset=contactOffset
)
# Create deformable prim
cloth = SingleClothPrim(
name="cloth",
prim_path=mesh_path,
particle_system=particle_system,
particle_material=particle_material
)
- Decreasing the time-step size of the simulator?
# Set simulation timesteps - 120Hz physics
simulation_app.context.set_simulation_dt(physics_dt=1.0/120.0)