Import MJCF

Learning Objectives

This tutorial shows how to import a mjcf model and convert it to a usd in Omniverse Isaac Sim. After this tutorial, you can use mjcf files in your pipeline while using Omniverse Isaac Sim.

5-10 Minute Tutorial

Getting Started

Prerequisites

Using the MJCF Importer Extension Window

Let’s begin by importing an Ant MJCF from the Built in MJCF files that come with the extension.

  1. Load the URDF Importer extension, which should be automatically loaded when Omniverse Isaac Sim opens and can be accessed from the Isaac Utils -> MJCF Importer menu. If not, go to Window-> Extensions and enable omni.isaac.mjcf.

    User interface for MJCF Importer
  2. Let’s specify the settings we want to import Ant with:

    • Uncheck the box next to Fix Base Link and Make Default Prim

    • Check the box next to Create Physics Scene

    • Set Stage Units Per Meters to 100.0, which means the asset will be imported in cms

  3. Click on the SELECT AND IMPORT button since we are ready to import the robot.

  4. In the file selection dialog box, navigate to the desired folder, and select the desired MJCF file. For this example, we will use the Ant nv_ant.xml file that is included in the Built in MJCF Files that comes with this extension.

    Select MJCF to Import
  5. Click the Import button to add the robot to the stage.

    Imported Ant
  6. To add a ground plane, go to the Create -> Physics menu and click on Ground Plane. Drag the ground plane below the Ant.

    Imported Ant with Ground Plane

Importing MJCF using Python

Let’s do the exact same things as we did before but with python scripting instead.

  1. Let’s begin by opening the Script Editor. Go to the top Menu Bar and click Window -> Script Editor

  2. The window for the Script Editor should now be visible in the workspace.

  3. Copy the following code into the Script Editor window.

     1import omni.kit.commands
     2from pxr import UsdLux, Sdf, Gf, UsdPhysics, PhysicsSchemaTools
     3
     4# setting up import configuration:
     5status, import_config = omni.kit.commands.execute("MJCFCreateImportConfig")
     6import_config.set_fix_base(False)
     7import_config.set_make_default_prim(False)
     8
     9# Get path to extension data:
    10ext_manager = omni.kit.app.get_app().get_extension_manager()
    11ext_id = ext_manager.get_enabled_extension_id("omni.isaac.mjcf")
    12extension_path = ext_manager.get_extension_path(ext_id)
    13
    14# import MJCF
    15omni.kit.commands.execute(
    16    "MJCFCreateAsset",
    17    mjcf_path=extension_path + "/data/mjcf/nv_ant.xml",
    18    import_config=import_config,
    19    prim_path="/ant"
    20)
    21
    22# get stage handle
    23stage = omni.usd.get_context().get_stage()
    24
    25# enable physics
    26scene = UsdPhysics.Scene.Define(stage, Sdf.Path("/physicsScene"))
    27
    28# set gravity
    29scene.CreateGravityDirectionAttr().Set(Gf.Vec3f(0.0, 0.0, -1.0))
    30scene.CreateGravityMagnitudeAttr().Set(981.0)
    31
    32# add lighting
    33distantLight = UsdLux.DistantLight.Define(stage, Sdf.Path("/DistantLight"))
    34distantLight.CreateIntensityAttr(500)
    35
    36# add ground plane
    37omni.kit.commands.execute(
    38    "AddGroundPlaneCommand",
    39    stage=stage,
    40    planePath="/groundPlane",
    41    axis="Z",
    42    size=1500.0,
    43    position=Gf.Vec3f(0, 0, -50),
    44    color=Gf.Vec3f(0.5),
    45)
    
  4. Click the Run (Ctrl + Enter) button to import the Ant robot.

Summary

This tutorial covered the following topics:

  1. Importing MJCF file using GUI

  2. Importing MJCF file using Python

  3. Create a Ground Plane

Further Learning

Checkout MJCF Importer to learn more about the different configuration settings to import a mjcf in Omniverse Isaac Sim.