Development Methods#
Isaac Sim is a component of larger solutions and can also be used on its own. There are three main development methods for working in Isaac Sim:
GUI
Extensions
Standalone Python
We recommend completing Isaac Sim Basics to understand how these methods relate to each other.
Development Methods#
Here is a summary of the key features and their recommended usages:
GUI
Key features: Visual, intuitive, specialized tools for populating and simulating a virtual world.
Recommended usage: World building, assemble robots, attach sensors, visual programming using OmniGraphs, and initializing ROS bridges.
Extension
Key features: Runs asynchronously to allow interactions with the stage, hot reloading to reflect changes immediately, adaptive physics steps for real-time simulation.
Recommended usage: Testing Python snippets, building interactive GUIs, custom application modules, and real-time sensitive applications.
Standalone Python
Key features: Control over timing of physics and rendering steps, can be run in headless mode.
Recommended usage: Large scale training for reinforcement learning, systematic world generation, and modification.
Combining Development Methods#
Most of the actions that can be performed in the GUI, can be performed using Python. You can switch between performing actions in the GUI and in Python. Anything you make inside the GUI can be saved as part the USD file.
For example, you can create the world, include the actions needed for your robots using the GUI. Then pull the entire USD file into a standalone Python script and systematically modify properties there as needed.
Extensions and the GUI#
Extensions are the core building blocks of Omniverse Kit based applications. They are individually built application modules and can be used across different Omniverse applications. Most of the tools in Isaac Sim are built as extensions. You can enable and disable any set of extensions according to your project needs.
The GUI development method uses a collection of extensions that are loaded by default at the start of Isaac Sim. These general tools support building virtual worlds and robots, examining physics, rendering, profiling performance, visual programming, managing USD stages and assets, and robotics applications.
Next steps: Learn how to build your own extension with our Templates, and explore our interactive examples in the Examples Browser, all of which are extension-based.
Python Standalone and in an Extension#
The Extension and Standalone Python workflows use the same APIs for all the functions. However, they diverge for printing or commanding the robot joint states continuously.
Python in an Extension – The Script Editor allows you to interact with the Stage asynchronously using Python. This means that the Python APIs are interacting with the USD stage.
The Python in extension runs without blocking rendering and physics stepping. If you want to interact with the physics and rendering steps or perform an action that is likely to be blocking, you would have to explicitly insert relevant callbacks and async functions for those functions to work. In the extension applications, rendering is stepping the moment viewport opens and physics is stepping when you press the Play button.
Standalone Python – To use the standalone Python version of Isaac Sim, you launch it using a Python script. Inside the script, you can control whether you open the GUI interface or run in headless mode.
In standalone Python, you can step rendering and physics manually, which gives you the ability to guarantee that stepping only happens after the completion of a set of commands. These functions make the standalone development method ideal for use cases such as training behaviors where randomization actions must complete before the next step, controlling message publishing rates in ROS, and running headless to increase performance.
Next steps: Learn how to run your first standalone application with Hello World, and how to use development tools such as Jupyter Notebook or Visual Studio Code (VS Code) for Python development.
Hot Reloading for Extensions#
Python-based Extensions also have the ability to “hot reload”. This means that you can change the underlying code while Isaac Sim is running, and then see the reflected changes in your application after saving the file, without shutting down or restarting Isaac Sim. This is a powerful feature that allows you to iterate quickly on your application.
Hot reloading is disabled by default when Isaac Sim runs in a container. See Extension Hot Reloading in the Container to enable it.
Review Examples#
Review the:
Extension Examples available in the Examples Browser.
Standalone Examples available in the
<isaac-sim-root-dir>/standalone_examplesfolder.