How to edit a USD file

I tried to simulate a drone in my reinforcement learning project and found one great sample in OmniIsaacGymEnvs. However, the drone used in the OmniIsaacGymEnvs has two joints for each rotor that my drone doesn’t. So I tried two methods below.

  1. editing the current drone model (a USD file). For example, disabling or removing all the joints, and then resaving the USD file.
  2. Importing my existing MJCF file and getting my own USD.

Method 1:
I dragged the USD into the Sim App, disabled all the joints, saved my modifications, and got the new USD file. However, the file size increased a lot (from 7.6 kb to 9.3 kb), and does not work. I guess there is something unnecessary saved but don’t know how to deal with it.

Method 2:
I used the MJCF file below edited from the standalone Isaac gym, imported it to the Sim App with the “MJCF Importer” and got the autogenerated USD file. However, it didn’t work either. The generated USD file also has some different content from the original file, such as the physicsScene and worldBody.

<mujoco model="QuadcopterVpp">
<compiler angle="degree" coordinate="local" inertiafromgeom="true"/>
<worldbody>
<body name="chassis" pos="0 0 0">
<geom type="cylinder" size="0.1 0.015" pos="0 0 0" density="50"/>
<joint name="root_joint" type="free"/>
<body name="rotor_arm0" pos="0.0724784 0.0724784 0" quat="0.92388 0 0 0.382683">
<geom type="sphere" size="0.01" density="200"/>
<body name="rotor0" pos="0.0425 0 0" quat="1 0 0 0">
<geom type="cylinder" size="0.04 0.005" density="1000"/>
</body>
</body>
<body name="rotor_arm1" pos="-0.0724785 0.0724784 0" quat="0.382683 0 0 0.92388">
<geom type="sphere" size="0.01" density="200"/>
<body name="rotor1" pos="0.0425 0 0" quat="1 0 0 0">
<geom type="cylinder" size="0.04 0.005" density="1000"/>
</body>
</body>
<body name="rotor_arm2" pos="-0.0724785 -0.0724784 0" quat="-0.382683 0 0 0.92388">
<geom type="sphere" size="0.01" density="200"/>
<body name="rotor2" pos="0.0425 0 0" quat="1 0 0 0">
<geom type="cylinder" size="0.04 0.005" density="1000"/>
</body>
</body>
<body name="rotor_arm3" pos="0.0724784 -0.0724785 0" quat="-0.92388 0 0 0.382683">
<geom type="sphere" size="0.01" density="200"/>
<body name="rotor3" pos="0.0425 0 0" quat="1 0 0 0">
<geom type="cylinder" size="0.04 0.005" density="1000"/>
</body>
</body>
</body>
</worldbody>
</mujoco>

So here are my questions

  1. How can I edit and save the USD file without saving useless information? Actually, every time I reload USD, something is saved and the file size increases
  2. What changes do I need to make to my MJCF file so that the generated USD file can work? Do I need to complete all the information in mjcf, especially the default and auto-complete values in Mujoco. Are there any keys when defining a floating base robot like a drone?

I used Mujoco before and was drawn to Isaac Sim for its speed. I am sorry if there is a problem with my statement, or if my question has already been answered in the document. In the end, I would like to express my deep appreciation for your solutions

Hi @yinzikang - Can you please confirm what Isaac Sim version you are trying this on?

also, have you looked at this doc? 9.7. Instanceable Assets — Omniverse IsaacSim latest documentation

Thanks for your reply. I am using the latest version, namely the isaac_sim-2023.1.1 with the latest OmniIsaacGymEnvs. I solved my problem by editing the current drone model in the end. To be specific, I deleted the physicScene in the stage, changed the joints, and resaved the file. Now everything works, but I still fail to get the USD from the URDF