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