Grasping issues

Hi! Thank you for taking the time to read my question.

The problem

I’ve created a custom environment where I use a franka panda arm. I’ve also added the sektion cabinet included with isaacgym. I have an issue when trying to grasp and open the door of the cabinet. The end-effector grasps the handle but then doesn’t have enough power to grip and pull it.

Tried so far

I’ve increased the effort limit for the two fingers and this seems to fix the problem on the surface. However, inside the cabinet, I’ve placed a mug. When trying to grasp and lift it, the mug shoots off or spins in the grasp. Reducing the effort for this task fixes this issue, but then I can’t open the cabinet again.

I’ve also tried to control the fingers using the effort mode. For some reason, the fingers won’t budge unless I apply a force of over 3000 newtons. This seems highly unrealistic and I couldn’t fine-tune it to work reliably.

Thank you for your help!


I’ve added the urdf files I’m using.
franka_panda.urdf (9.7 KB)
sektion_cabinet_simple.urdf (10.1 KB)

Hi @mihai.anca13,

Can you share your simulation parameters? I can recommend increasing the number of substeps by 1, at least, and after it a number of position iterations if there still some issues with grasping. And maybe combine it with the increase of the effort limit, but by a smaller margin compared to what you’ve tried.

Hi @vmakoviychuk. Thank you for your reply! I’ve tried to increase the parameters you suggested. Unfortunately, it did not help. I am planning on doing Sim2Real at some point, therefore I would prefer, if possible, not to increase the effort in the joints of fingers. Or, do you think that will have no impact on the transfer?

Here’s the code containing the parameters:

    sim_params = gymapi.SimParams()
    sim_params.dt = 1. / 100.
    sim_params.substeps = 4
    sim_params.up_axis = gymapi.UP_AXIS_Z
    sim_params.gravity = gymapi.Vec3(0.0, 0.0, -9.81)
    # sim_params.num_client_threads = 0

    sim_params.physx.use_gpu = True
    sim_params.physx.solver_type = 1
    sim_params.physx.num_position_iterations = 4
    sim_params.physx.num_velocity_iterations = 1
    sim_params.physx.contact_offset = 0.005
    sim_params.physx.rest_offset = 0.0025
    sim_params.physx.bounce_threshold_velocity = 0.2
    sim_params.physx.max_depenetration_velocity = 100.0
    sim_params.physx.default_buffer_size_multiplier = 5.0
    sim_params.physx.always_use_articulations = False

    # sim_params.physx.num_subscenes = 0
    sim_params.physx.num_threads = 6
    sim_params.physx.max_gpu_contact_pairs = 8 * 1024 * 1024
    sim_params.use_gpu_pipeline = True

While experimenting I’ve discovered that by setting the dof_target to the original position and running the simulator until that position is reached, I get this:

Any idea why this is happening?