Fail to load robot USD with GPU pipeline on Isaac 4.2

Hi all,

This is variation of this issue but related to Isaac 4.2
I attached here a zip containing the script and the USD containing to reproduce the error.

GPU_collisions_issue_MRE.zip (7.4 MB)

When loading with enable_gpu_pipeline = False everything seems to work fine.
When using enable_gpu_pipeline = True the robot is embedded into the ground, and the simulation crashes after a couple of seconds:

And here is the script that I use to load the usd (Also in the attached zip)

from omni.isaac.kit import SimulationApp
import os
import torch

USE_GPU_PIPELINE = True
ASSET_PATH = "minimum_robot.usd"

def main():

    exp_path = os.environ["EXP_PATH"]
    simulation_app = SimulationApp({"headless": False, "enable_livestream": False}, 
                                   experience=f'{exp_path}/omni.isaac.sim.python.kit')
    from omni.isaac.core import World
    from omni.isaac.core.articulations import ArticulationView
    from omni.isaac.core.utils.stage import add_reference_to_stage
    import numpy as np
    from omni.isaac.core.objects import GroundPlane
    import omni.isaac.core.utils.prims as prim_utils

    sim_params =  {'gravity': [0.0, 0.0, -9.81], 
                'dt': 1.0/60.0, 
                'rendering_dt': 1.0/60.0,
                'substeps': 1, 
                'use_gpu_pipeline': USE_GPU_PIPELINE, 
                'add_ground_plane': False, 
                'add_distant_light': False, 
                'use_fabric': True, 
                'enable_scene_query_support': True, 
                'enable_cameras': False, 
                'disable_contact_processing': False, 
                'default_physics_material': {'static_friction': 1.0, 'dynamic_friction': 1.0, 'restitution': 0.0}, 
                'enable_viewport': True, 
                'sim_device': 'cuda:0', 
                'gpu_found_lost_aggregate_pairs_capacity': 11368, 
    }
 
    if sim_params["use_gpu_pipeline"]:
        sim_params["device"] = "cuda:0"
    else:
        sim_params["device"] = "cpu"

    my_world = World(stage_units_in_meters=1.0, sim_params=sim_params, 
                backend='torch', 
                device =sim_params["device"])

    prim_path = "/World/mobile_base"

    add_reference_to_stage(usd_path=ASSET_PATH, prim_path=prim_path)

    robot_view = ArticulationView(prim_paths_expr="/World/mobile_base/base_link", 
                                  translations=torch.tensor([0.0, 0.0, 0.1]).reshape(1,3).to(sim_params["device"]))
    my_world.scene.add(robot_view)

    plane = GroundPlane(prim_path="/World/GroundPlane", z_position=0)

    light_1 = prim_utils.create_prim(
        "/World/Light_1",
        "DistantLight",
        orientation=[0.65,0.27, 0.27, 0.65],
    )
    my_world.reset()

    while simulation_app.is_running():
        my_world.step(render=True)

    simulation_app.close()

if __name__ == "__main__":
    main()

When adding the USD in Isaac Sim directly (without the script), it asks for gpu_found_lost_aggregate_pairs_capacity to be increased. Doing so however does not solve, the robot falls into the ground and the simulation throws the same errors as the script:

My setup:

  • Ubuntu 20.04
  • RTX 4090
  • Driver 550.54.14
  • CUDA 12.4

We also tried removing the collision meshes (there are 5 spheres for each rollers) and use convex hull on the visual meshes of the rollers. This kinda works and the collision are good, but the behavior when the wheels move is way off, the robot vibrates and “jump” just too much.

Let me know if there is anything or any information that might be useful to solve this issue.

Thanks
Simone

Thank you for sharing the details of the issue you’re experiencing with the GPU pipeline in Isaac Sim 4.2. We’ve informed our internal team about this problem and are currently investigating it. We appreciate your patience and will get back to you with any updates or solutions as soon as possible.

1 Like