RigidContact return unstructured array

The gym API states that calls to:

 get_env_rigid_contacts(self: Gym, arg0: Env) → numpy.ndarray[RigidContact]
 get_rigid_contacts(self: Gym, arg0: Sim) → numpy.ndarray[RigidContact]

will return an array of isaacgym.gymapi.RigidContact instances. However the return values in release 3 are unstructured instances filled with a tuple value.

See:
image

code use to reproduce the results is the following

# Print rigid contacts per robot:
    for env in envs:
        actor_count = gym.get_actor_count(env)
        for i in range(actor_count):
            actor_handle = gym.get_actor_handle(env, i)
            contacts = list(gym.get_env_rigid_contacts(env))

Hi,

Try removing the list() conversion on the return value of get_env_rigid_contacts(). The list() cast will convert the RigidContact instance into a list of tuples.

Hi,

I would like to aquire all contacts of all envs. But the solution of Daniel, iterating through all envs, seams to be quite expensive. I tried to use get_rigid_contacts(), but it throws following error:

[Error] [carb.gym.plugin] Function GymGetRigidContacts cannot be used with the GPU pipeline after simulation starts. Please use the tensor API if possible. See docs/programming/tensors.html for more info.
[Error] [carb.gym.plugin] Function GymGetRigidContactCount cannot be used with the GPU pipeline after simulation starts. Please use the tensor API if possible. See docs/programming/tensors.html for more info.

Do you got a (fast) solution to aquire the contact information?

Best, Marian

Any updates on this would be greatly appreciated !

1 Like