Development
We developed this extension using Visual Studio Code, the recommended tool on NVIDIA’s Omniverse official documentation. To setup Visual Studio Code with hot-reloading features, follow the additional documentation pages:
To enable a better developer experience when contributing or modifying this extension, and have access to features such as
autocomplete, we recommend linking the Pegasus Simulator repository to the current installation of ISAACSIM
. For that, please
run the following script provided with the framework:
./link_app.sh --path $ISAACSIM_PATH
This script will create a symbolic link to ISAACSIM
inside the repository. After this step, you can also launch the
ISAACSIM
with the extension enabled (without using the GUI presented in Section Installing the Pegasus Simulator), by running:
./app/isaac-sim.sh --ext-folder extensions --enable pegasus.simulator
Code structure
This simulation framework is strucuture according to the following tree:
PegasusSimulator:
├── .vscode
├── docs
├── examples
├── tools
├── extensions
│ ├── pegasus.simulator
│ │ ├── config
│ │ ├── data
│ │ ├── docs
│ │ ├── setup.py
│ │ ├── pegasus.simulator
│ │ │ │ ├── __init__.py
│ │ │ │ ├── params.py
│ │ │ │ ├── extension.py
│ │ │ │ ├── assets
│ │ │ │ ├── logic
│ │ │ │ ├── ui
The extensions directory contains the source code for the PegasusSimulator API and interactive GUI while the examples directory contains the a set of python scripts to launch standalone applications and pre-programed simulations.
As explained in NVIDIA’s documentation, extensions are the standard way of developing on top of Isaac Sim and other Omniverse
tools. The core of our extension is developed in the logic
and the ui
modules. The logic
API is exposed to the users
and is used both when operating the Pegasus Simulator in GUI widget/extension mode and via standalone python applications.
The ui
API is not exposed/documented as it is basically defines the widget to call functionalities provided by
the logic
module.