-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
If you are submitting a bug report, please fill in the following details and use the tag [bug].
Describe the bug
When spawning a RigidObject using sim_utils.CylinderCfg (or other primitive configs) directly in the code, contact sensors work as expected. However, if the same object is saved to a USD file and then re-loaded into the scene via UsdFileCfg, the contact sensor fails to retrieve contact point information, throwing the error: GPU contact filter for collider is not supported. This suggests that the saved USD lacks the necessary schema or physics metadata (like "Contact Report" API or specific collision settings) that Isaac Sim/Lab automatically applies when spawning via script.
Steps to reproduce
- Define a
RigidObjectCfgusingsim_utils.CylinderCfgwithcollision_props. - Attach a
ContactSensorCfgto the object. - Run the simulation and verify that contact data (force/points) is being received.
- Save the generated object/scene to a
.usdfile via the Isaac Sim UI or Stage recorder. - Modify the script to load the object using
UsdFileCfg(usd_path="path/to/saved.usd"). - Run the simulation again.
- Observe the error:
GPU contact filter for collider is not supportedand the absence of contact data.
# Minimal config that works initially but fails after USD round-trip
bolt: RigidObjectCfg = RigidObjectCfg(
prim_path="{ENV_REGEX_NS}/Bolt",
spawn=sim_utils.UsdFileCfg(
usd_path=f"{DATA_DIR}/saved_bolt.usd", # Path to the saved file
rigid_props=sim_utils.RigidBodyPropertiesCfg(),
collision_props=sim_utils.CollisionPropertiesCfg(),
),
init_state=RigidObjectCfg.InitialStateCfg(pos=(-0.45, 0.0, 0.45)),
)System Info
Describe the characteristic of your environment:
- Commit: [0.50.5]
- Isaac Sim Version: [5.1.0]
- OS: Ubuntu 22.04
- GPU: [RTX 4090]
- CUDA: [13.0]
- GPU Driver: [581.42]
Additional context
The issue likely stems from the fact that sim_utils.CylinderCfg handles the application of the PhysxContactReportAPI and sets the contactReportThreshold automatically. When saving to USD, these physics schemas might not be serialized correctly, or the UsdFileCfg loader does not re-enable the "GPU Look-up Table" required for contact reporting on that specific prim. Users often need to manually add meshmergecollision or ensure the Contact Report is enabled in the PhysX properties of the USD.
Checklist
- I have checked that there is no similar issue in the repo (required)
- I have checked that the issue is not in running Isaac Sim itself and is related to the repo
Acceptance Criteria
- Contact sensors can successfully retrieve data from objects loaded via USD files.
- The
GPU contact filtererror is resolved by ensuring proper schema application during USD loading insim_utils. - Documentation or warnings are provided if specific USD properties (like Contact Report API) must be toggled manually in the USD layer.