2. Workflows

2.1. Learning Objectives

This tutorial outlines three different workflows for developing in Omniverse Isaac Sim — Extensions, Standalone Applications, and Jupyter Notebook. After this tutorial, you will understand the different benefits that each of these workflows bring.

10-15 Minute Tutorial

2.2. Getting Started

Prerequisites

2.2.1. What is an Extension?

Extensions are the core building block of Omniverse Kit based applications, making up all the individual tools used within Omniverse Isaac Sim and considered one of the most powerful features of Omniverse Applications. Think about extensions as modular libraries making up an Omniverse app, but also could be used in a completely different Omniverse application. Basically any feature from a different Omniverse application could be used in Omniverse Isaac Sim through installing it in the Extensions Manager.

2.3. Extensions (Primary Workflow)

In this workflow the robotics application is developed as another modular extension that could be used by other extensions easily. Also, it can be started anytime while Omniverse Isaac Sim is running, since we can link it to a UI element.

One main feature in this workflow is that the application will be running asynchronously, which means that it won’t control the time stepping, i.e executing a physics step or a rendering step for instance. However, there is the capability to add callbacks that are triggered with certain events.

  • For an example: adding a physics callback that is called with every physics step executed.

Another main feature is the hot reloading, which means that Omniverse Isaac Sim can keep running while you change the application’s code and then see the reflected changes in your application right away after saving the file and without shutting down or restarting Omniverse Isaac Sim. In the following gif we added a cube as part of Hello World and hot reloaded the sample.

../_images/isaac_sim_hot_reloading.gif

Developing extensions from scratch is more involved and considered an advanced feature, that’s why a basic robotics application extension is provided, which can be inherited from in python to jump start with the basic functionality needed for any application (load world, reset world and clear world) - covered in Hello World. However, to develop a modular library on top of Omniverse Isaac Sim, a new extension have to be created from scratch.

Additionally another feature to debug your application easily is the script editor window, which enables running code asynchronously while running Omniverse Isaac Sim.

../_images/isaac_sim_script_editor.gif

2.3.1. Running Your First Extension Application

  • Start Omniverse Isaac Sim using your preferred way through the Launcher or the terminal

  • Go to the top Menu Bar and Click Isaac Examples > Multi-Robot > RoboParty.

  • The window for the RoboParty example extension should now be visible in the workspace.

  • Click on the LOAD button to load the World. Once loaded in the viewport, click on the Start Party button under Task Controls.

  • Voila! you interacted with the first Extension Application right now. Once you are done playing around, click on the CLEAR button.

../_images/isaac_sim_roboparty.gif

2.4. Standalone Application

In this workflow the robotics application is developed as a standalone application and is launched as another python script.

One main feature in this workflow is that the application will be running synchronously, which means that it controls the time stepping, i.e executing a physics step or a rendering step for instance. there is also the capability to add callbacks that are triggered with certain events similar to the extensions workflow.

Omniverse Isaac Sim can be launched as headless in this workflow (i.e: without having the GUI visible and updating).

2.4.1. Running Your First Standalone Application

  • open the terminal

  • navigate to the package path and run the follow_target.py script

    cd ~/.local/share/ov/pkg/isaac_sim-<version>
    ./python.sh standalone_examples/api/omni.isaac.franka/follow_target.py
    
  • Move the target prim by selecting it in the viewport so that Franka follows it.

../_images/isaac_sim_follow_target.gif

2.4.2. Usig Jupyter to Develop a Standalone Application

In this workflow the robotics application is developed as a standalone application using a jupyter notebook, while live syncing to the same USD so that changes could be reflected in another Isaac Sim process launched through the terminal or the launcher.

This workflow is covered in details next tutorial in Hello World.

../_images/isaac_sim_jupyter_workflow.gif

2.5. ROS Application

For more information about how to use Omniverse Isaac Sim with ROS see the ROS tutorial series starting with Import and Drive TurtleBot3

2.6. Summary

This tutorial covered the following topics:

  1. The different workflows to develop an application in Omniverse Isaac Sim.

  2. Running an example using each workflow.

2.6.1. Next Steps

Continue on to the next tutorial in our Essential Tutorials series, Hello World, to learn how to add and simulate objects.

2.6.2. Further Learning

For a more in-depth look into the concepts covered in this tutorial, please see the following reference materials: