GPU Contact filter for collider is not supported

I have created a ladder with the following URDF: ladder_box.txt (9.0 KB) and converted it to USD using the URDF Importer. I am trying to detect collisions of the robot with the ladder steps on Orbit which relies on using the RigidContactView of IsaacSim for contact sensing. However, with the ladder URDF that I have attached above, using a filter pattern doesn’t seem to work and throws the error:
[Error] [omni.physx.tensors.plugin] Filter pattern '/World/envs/env_.*/Ladder/rails/step.*' did not match the correct number of entries.

When switching to using a single prim path as '/World/envs/env_0/Ladder/rails/step0' instead, the GPU Contact filtering doesn’t work and throws the following warning:

[Warning] [omni.physx.tensors.plugin] GPU contact filter for collider '/World/envs/env_0/Ladder/rails/step0' is not supported

However, the consequence is that if I add more environments and more ladder steps, the contact filtering starts accumulating the RAM, which is undesirable.

What I want to know is whether there is a specific URDF format for the URDF Importer that ensures GPU contact filtering works? Is there something wrong with the URDF that I have attached above that prevents GPU contact filtering?


Does Isaac Sim not support GPU contact filtering between rigid bodies/articulations?

It’d be great if someone can shed some light here.

Thanks in advance.

Hello @shafeef901, I am facing the same warning (GPU contact filter for collider is not supported) when I am trying to find the contact points and forces of a robot and the ground using the get_contact_data() method of RigidContactView. I get all 0s while the get_net_contact_forces() method gives non-zero force values. Could you please let me know if you have found a solution for the warning or throw some light on what it means?

Hi @aravindh.padmanabhan!
In my case, I had the re-order my URDF file before converting to USD. I was using a custom URDF of an object with multiple bodies (a ladder which has two side rails and multiple steps), and it had to follow the right structure in the URDF (parent link → joint → child link). Even though the URDF Importer in Isaac converts the URDF into a USD without this right structure, it didn’t inherit the properties of a rigid body in Isaac without it such as those in RigidContactView.

Here’s the reordered URDF you can use to compare with the one in the OP.
ladder_box_reordered.txt (9.2 KB)

Let me know if this solves your issue :)

1 Like

Hey, thanks for your super quick response, but I am not sure if the problem is with the URDF file. I have explained the problem a bit better and more precisely below:

I am quite new to orbit and Isaac Sim and am trying to find the contact forces and contact points of a robot with the ground. I tried this out using the example in orbit source/standalone/tutorials/04_sensors/ I was able to get the contact forces using But to get contact points, I have to specify filters in ContactSensorCfg.filter_prim_paths_expr and use ContactSensor.contact_physx_view.get_contact_data(), if I understood correctly. Hence, I modified the ContactSensorCfg to look like this:

contact_forces = ContactSensorCfg(
        prim_path="{ENV_REGEX_NS}/Robot/.*_FOOT", update_period=0.0, history_length=6, debug_vis=True,
        filter_prim_paths_expr = ["/World/defaultGroundPlane"]

But I get warnings that say GPU contact filter for collider '/World/defaultGroundPlane' is not supported and all values from force_matrix_w and contact points are 0, although net_forces_w are non-zero.

Since I am only adding the default ground plane as a filter, and checking contact forces with ANYMAL_C, it cannot be a URDF problem right? I also found an issue opened by you regarding contact sensor filters on github, but I am not sure if it helped fix my problem, so please let me know what could be done about this. Thanks in advance! :)

Hi @shafeef901, was wondering if you had time to have a look at my problem. Please let me know if you need more information. Would greatly appreciate your help!