IsaacLab icon indicating copy to clipboard operation
IsaacLab copied to clipboard

[Question] An error [omni.physicsschema.plugin] occured when importing custom usd file with ORBIT

Open ninebestwon opened this issue 2 years ago • 2 comments

Question

Screenshot from 2023-10-19 17-29-04

An error occurred while importing the custom usd file for reinforcement learning with Orbit. Since the error code was Isaac-sim Error code, I thought it was a problem related to Isaac-sim, but I confirmed that it was being imported commonly in Isaac-sim, and the joint was also working well.

If you look at the error code below, it says, "(/World/envs/env_0/Valve/body/body) missing xformstack reset when child of rigid body (/World/envs/env_0/Valve) in hierarchy." I suspected the problem occurred between prim path "(/World/envs/env_0/Valve)" and the custom USD file in the spawning process.

Do you know if there is a solution?

Python File

class ValveEnv(IssacEnv):
    def __init__(self, cfg: ValveEnvCfg = None, **kwargs):
        ...
        self.valve = RigidObject(cfg=self.cfg.valve)
        ...

    def _design_scene(self) -> List[str]:
        ...
        self.valve.spawn(self.template_env_ns + "/Valve")
        ...

Error Code

[3.037s] Simulation App Starting
[5.987s] app ready
[6.061s] RTX ready
[6.139s] Simulation App Startup Complete
[Config]: Overriding number of environments to: 1
omniverse://localhost/NVIDIA/Assets/Isaac/2022.2.1/Isaac/Samples/Orbit
[INFO]: Parsing default environment configuration from: /home/vision/Orbit/source/extensions/omni.isaac.orbit_envs/omni/isaac/orbit_envs/manipulation/valve_custom/valve_cfg.py
[INFO]: Simulation pipeline:  GPU
[INFO]: Simulation device  :  GPU
Using default joint controller...
[INFO]: Isaac Orbit environment:
         Number of instances : 1
         Environment device  : cuda:0
         Physics step-size   : 0.01
         Rendering step-size : 0.01
[6.275s] [ext: omni.physx.flatcache-104.2.4-5.1] startup
2023-10-19 08:29:34 [6,309ms] [Warning] [carb.flatcache.plugin] UsdRelationship /Render/RenderProduct_omni_kit_widget_viewport_ViewportTexture_0.orderedVars has multiple targets, which is not supported
 
2023-10-19 08:29:36 [7,587ms] [Error] [omni.physicsschema.plugin] Rigid Body of (/World/envs/env_0/Valve/body/body) missing xformstack reset when child of rigid body (/World/envs/env_0/Valve) in hierarchy. Simulation of multiple RigidBodyAPI's in a hierarchy will cause unpredicted results. Please fix the hierarchy or use XformStack reset.
2023-10-19 08:29:36 [7,587ms] [Error] [omni.physicsschema.plugin] Rigid Body of (/World/envs/env_0/Valve/handle/handle) missing xformstack reset when child of rigid body (/World/envs/env_0/Valve) in hierarchy. Simulation of multiple RigidBodyAPI's in a hierarchy will cause unpredicted results. Please fix the hierarchy or use XformStack reset.
2023-10-19 08:29:36 [7,673ms] [Error] [omni.physx.plugin] PhysicsUSD: CreateJoint - no bodies defined at body0 and body1, joint prim: /World/envs/env_0/Valve/body/latch_joint**
~*~*~*
~*~*~* Direct GPU Helper:
~*~*~*   1 rigid dynamic
~*~*~*   1 articulation, maxLinks=12
~*~*~*
./orbit.sh: line 209: 99414 Segmentation fault      (core dumped) ${python_exe} $@

Screenshot from 2023-10-19 17-30-26

ninebestwon avatar Oct 19 '23 08:10 ninebestwon

Wondering if you tested in Isaac Sim with GPU simulation as well. There is a difference in CPU and GPU simulation with Omniverse Physics so it might be the issue only comes when you do GPU simulation.

On the error message itself, I think this is happening because you have cascaded rigid prims (as the message says). It is hard for me to assess without seeing the USD asset itself. But, Omniverse Physics expects that there is no nesting in the stack (i.e. articulation root prim under articulation root prim, rigid body prim under another rigid body prim).

Mayankm96 avatar Oct 23 '23 18:10 Mayankm96

Screenshot from 2023-10-24 11-25-19 Thank you for answering me. However, the problem only occurs when created with the official documentation provided by ORBIT: https://isaac-orbit.github.io/orbit/source/tutorials_envs/01_create_env.html The code I wrote using the ORBIT framework worked without any problems, as shown in the picture. Therefore, I suspected the problem occurred between prim path "(/World/envs/env_0/Valve)" and the custom USD file in the spawning process.

def main():

    # -- Valve
    # table_usd_path = f"/home/vision/Downloads/valve/round/round_valve_1.usd"
    table_usd_path = f"/home/vision/Downloads/valves/round_valve/round_valve.usd"
    prim_utils.create_prim("/World/envs/env_0/Valve", usd_path=table_usd_path, position=(0.8, 0.0, 0.0), scale = (1.1, 1.1, 1.1))

ninebestwon avatar Oct 24 '23 02:10 ninebestwon