Error creating new OmniIsaacGymEnvs class to train a new Robotic Hand model


I am attempting to create new classes to include a new model for a custom robotic hand model. I’m basing the class files off the ShadowHand examples given in OmniIsaacGymEnvs and already included the class objects into the task map. However when attempting to run the task option using PYTHON_ISAAC_PATH scripts/ task=Custom headless=True, I get the following error:

[Fatal] [omni.usd] Used null prim

Is this an error with how the omni.usd file is imported? Otherwise is this an issue with the usd file itself?

Hi @n10518975 - The error message “Used null prim” typically indicates that there’s an issue with how a USD (Universal Scene Description) file is being loaded or used in your code. A “prim” in this context refers to a “primitive”, which is a basic element in a USD scene, such as a model, a light, or a camera.

Here are a few things you could check:

  1. File Path: Make sure the path to the USD file is correct. If the file can’t be found at the specified path, a null prim would be returned.

  2. File Content: Check the content of the USD file. If the file is empty, corrupted, or not properly formatted, it might not be loaded correctly, resulting in a null prim.

  3. Loading Code: Review the code that’s loading the USD file. Make sure you’re using the correct functions and methods to load the file and access its contents. If you’re trying to access a prim that doesn’t exist in the file, a null prim would be returned.

  4. Task Map: Since you mentioned that you added the class objects into the task map, make sure that the mapping is correct. If the task name doesn’t match the one in the task map, it could potentially lead to issues.


I’ve added some print statements to debug the initialisation step for my class object file, and I have found that my set_motor_control_mode() program is where this error is occurring. For the joint configurations, is the definitions only meant to be for all locations for the joints? My joints are separated as the following in my USD file

| base_link
| root_joint
| forearm_1
|  | joint_1
| palm_axis_1
|  | joint_2


For this case, would I just provide a list of the link locations individually to define this joints?


I fixed the issue with the robot links and it turned out that with my definition of my robot hand instance, I didn’t check the env structure properly.

Thank you for the help!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.