I’m working on a custom extension trying to combine the modified trajectory_generator_example ( Lula Trajectory Generator — Isaac Sim Documentation ), and with a a particle emitter (based on FluidBallEmitterDemo.py).
Separately, both work nicely. Even an extention I made out of the FluidBallEmitterDemo works good.
Issue:
When I run taskspace trajectory movement (i need this type of movement only), I get the error:
[omni.physx.plugin] Particles feature is only supported on GPU. Please enable GPU dynamics flag in Property/Scene of physics scene!
This happens with both: Use_Instancer = True or False
Robot follows a Cartesian path (continuous IK update). - works
Particle system/emitter is started from the same button and updated every physics step. - error (some primitives spawned but do not behave as physical particles).
What I have tried so far:
Explicitly setting GPU dynamics via PhysxSceneAPI. In Physics/Scene the Checkmark “Enable GPU dynamics” looks activated
finding the actual UsdPhysics.Scene in the stage, enabling GPU dynamics on that scene, using the same scene path as simulation_owner when creating particle system
Hi, Can you try to enable GPU dynamics globally via SimulationManager to see if that works?
from isaacsim.core.simulation_manager import SimulationManager
#Enable GPU dynamics BEFORE creating particle system or starting timeline
SimulationManager.enable_gpu_dynamics(flag=True)
Seems the issue is that the Lula trajectory generator might be creating or resetting the physics scene in a way that disables GPU dynamics after you’ve enabled it. Can you check if GPU dynamics is actually enabled with following code?
from pxr import PhysxSchema, UsdPhysics
def check_gpu_dynamics():
stage = omni.usd.get_context().get_stage()
physics_scene_path = "/physicsScene" # or your scene path
physics_scene = stage.GetPrimAtPath(physics_scene_path)
physx_api = PhysxSchema.PhysxSceneAPI(physics_scene)
gpu_enabled = physx_api.GetEnableGPUDynamicsAttr().Get()
print(f"GPU Dynamics enabled: {gpu_enabled}")
return gpu_enabled
So, enabling GPU dynamics globally via SimulationManager.enable_gpu_dynamics(flag=True) before the timeline starts and before creating the particle system remains in my code
What i did: I added the check_gpu_dynamics() diagnostic at multiple points in scenario.py. Results:
After LulaKinematicsSolver created: False
After reset(): False (after pressing the reset button )
At start of setup_taskspace_trajectory(): False
After explicitly setting PhysxSceneAPI.enableGPUDynamics = True: True
So enabling GPU dynamics via SimulationManager.enable_gpu_dynamics(flag=True) is working as expected. I have no idea what’s the issue now. If you have a minimal repro case, we can take a further look.