Setup FAQ#

Isaac Sim Modes#

Isaac Sim App Selector#

This is a mini-windowed app that will help run any of the modes below.

Isaac Sim App Selector will run as default when launching Isaac Sim from the Omniverse Launcher.

Note

  • The Isaac Sim App Selector can be run from the terminal using the isaac-sim.selector.sh script on Linux or isaac-sim.selector.bat on Windows.

  • The Isaac Sim App Selector can also be run from the Isaac Sim App under the Help menu.

Isaac Sim Main App#

This is the main windowed Isaac Sim application.

It is the first option and default mode to run from the Isaac Sim App Selector.

Isaac Sim Headless App (via Omniverse Streaming Client)#

This is a command line version of Isaac Sim. It can be run remotely on a workstation with an RTX GPU and accessed from the Omniverse Streaming Client app available for Linux and Windows.

Isaac Sim Headless App (via WebRTC Browser Client)#

This is a command-line version of Isaac Sim. It can be run remotely on a workstation with an RTX GPU and accessed on a browser using the WebRTC Browser Client client.

Isaac Sim Python#

This is a mini app to run the Python samples.

Differences Between Workstation And Docker#

There are two methods to install Isaac Sim:

  1. Workstation Installation can be installed from the Omniverse Launcher and is recommended for Workstation users.

  2. Container Installation is recommended for remote headless servers or the Cloud using a Docker container.

Note

Here are the main differences between Workstation and Docker installations:

  • The Isaac Sim Docker container does not include Nucleus and will access assets directly from the Cloud by default.

  • From version 4.1.0, the workstation version of Isaac Sim will access assets directly from the Cloud by default but can be changed in to use local Nucleus using the –/persistent/isaac/asset_root/default=omniverse://localhost/NVIDIA/Assets/Isaac/4.2 flag.

  • The root folder of the workstation package is at ~/.local/share/ov/pkg/isaac-sim-4.2.0, while the root folder in the Docker container is /isaac-sim.

  • See Common Path Locations for differences in common paths.

Multi-GPU#

Multi-GPU support and specific GPU settings can be activated via usual configurations methods, either via command line …

./isaac-sim.sh --/renderer/multiGpu/enabled=true

…or via kit configuration in python…

import carb.settings

settings = carb.settings.get_settings()

# set different types into different keys
# guideline: each extension puts settings in /ext/[ext name]/ and lists them extension.toml for discoverability
settings.set("/renderer/multiGPU/enabled", True)

Some useful settings include, but are not limited to….

  • /renderer/multiGpu/Enabled=true enables multiple GPUs for rendering

  • /renderer/multiGpu/autoEnable=true enables multi GPU rendering if available

  • /renderer/multiGpu/maxGpuCount=2 sets the maximum number of GPUs to be allocated for rendering

  • /renderer/activeGpu=0 sets the active GPU according to nvidia-smi

for further details, checkout RTX-renderer

Assets and Nucleus#

Sample Assets#

To access the Isaac Sim assets, a Omniverse Nucleus server is required. The Nucleus server should also have access to the Internet.

Note

  • Our Isaac Sim assets is now available in the main /NVIDIA folder in every Nucleus server. Adding mounts is not needed.

  • Enabling Cache is recommended when accessing Isaac Sim assets.

  1. Login to the Nucleus server via the Web UI as the admin user. For localhost, go to http://localhost:8080/login. See Omniverse Navigator for more details.

  2. The Isaac Sim assets are located at the /localhost/NVIDIA/Assets/Isaac/4.2/Isaac/ folder.

Setting the Default Nucleus Server#

  • To set the default Nucleus server when running natively, open the user.config.json file for editing and locate the following line:

    "persistent": {
        "isaac": {
            "asset_root": {
                "default": "omniverse://localhost/NVIDIA/Assets/Isaac/4.2",
            }
        },
    },
    

    Change localhost to the IP address of the Nucleus server.

    Note

    • Location of user.config.json file:

      • Linux: ~/.local/share/ov/data/Kit/Isaac-Sim/4.2/user.config.json

      • Windows: C:\Users\{username}\AppData\Local\ov\data\Kit\Isaac-Sim\4.2\user.config.json

    • The folder in the persistent/isaac/asset_root/default setting should contain both the Isaac and the NVIDIA folder.

  • You could also run Isaac Sim with this flag:

    --/persistent/isaac/asset_root/default="omniverse://<ip_address>/NVIDIA/Assets/Isaac/4.2"
    
  • To set the default Nucleus server when running in Docker, use the flag -e "OMNI_SERVER=omniverse://<ip_address>/NVIDIA/Assets/Isaac/4.2", where <ip_address> is the IP address of the Nucleus server.

    $ sudo docker run --gpus all -e "ACCEPT_EULA=Y" -e "OMNI_SERVER=omniverse://<ip_address>/NVIDIA/Assets/Isaac/4.2" --rm --network=host nvcr.io/nvidia/isaac-sim:4.2.0
    

Setting the Default Username and Password for Connecting to the Nucleus Server#

  • Use the following commands to set the default credentials when running natively:

    $ export OMNI_USER=<username>
    $ export OMNI_PASS=<password>
    
  • To set the default credentials when running in Docker, use the flag -e "OMNI_USER=<username>" -e "OMNI_PASS=<password>" (the default is “admin” for each).

    $ sudo docker run --gpus all -e "ACCEPT_EULA=Y" -e "OMNI_USER=<username>" -e "OMNI_PASS=<password>" --rm --network=host nvcr.io/nvidia/isaac-sim:4.2.0
    

Uninstalling an Old Nucleus Server#

To uninstall a Nucleus instance from Isaac Sim 2021.1.1 or earlier, follow these steps:

  1. Use these commands to uninstall the old Nucleus instance:

    $ systemctl stop omniverse-server
    $ systemctl stop omniverse-asset-converter
    $ systemctl stop omniverse-cache
    $ systemctl stop omniverse-indexing
    $ systemctl stop omniverse-snapshot
    $ systemctl stop omniverse-thumbnail
    $ systemctl stop omniverse-web
    $ sudo rm -rf /var/lib/omniverse
    $ sudo rm -rf /opt/nvidia/omniverse
    $ sudo rm -rf /etc/systemd/systemomniverse-*
    $ sudo rm /lib/systemd/systemomniverse-*
    $ sudo systemctl reset-failed
    
  2. Reboot your machine.

  3. Install Nucleus from Omniverse Launcher.

Assets Pack#

Isaac Sim Assets Packs are available on the Exchange tab in the Omniverse Launcher. To simplify the process, enter “isaac sim assets pack” in the search bar.

../_images/isaac_sim_faq_assets_pack.png

The four asset packs are downloaded to your default downloads folder. Each asset pack is in its own sub-folder.

../_images/isaac_sim_faq_assets_pack_linux_folder_1.png

Once downloaded, combine the contents of each pack into a single root folder. For example, merge or copy the contents from assets pack 2, 3 and 4 into the assets pack 1 folder (isaac_sim-assets-1-4.2.0).

../_images/isaac_sim_faq_assets_pack_linux_folder_2.png

This root folder (Downloads/isaac_sim-assets-1-4.2.0/Assets/Isaac/4.2) must contain the NVIDIA and Isaac folders.

../_images/isaac_sim_faq_assets_pack_windows_folder_1.png

Once downloaded, combine the contents of each pack into a single root folder. For example, merge or copy the contents from assets pack 2, 3 and 4 into the assets pack 1 folder (isaac_sim-assets-1-4.2.0).

../_images/isaac_sim_faq_assets_pack_windows_folder_2.png

This root folder (Downloadsisaac_sim-assets-1-4.2.0AssetsIsaac4.2) must contain both the NVIDIA and Isaac folders.

Note

All four assets packs are required and they need to be combined into a single root folder (e.g. isaac_sim-assets-1-4.2.0).

Run Isaac Sim with the flag below to use the local assets.

./isaac-sim.sh --/persistent/isaac/asset_root/default="/home/<username>/Downloads/isaac_sim-assets-1-4.2.0/Assets/Isaac/4.2"
.\isaac-sim.bat --/persistent/isaac/asset_root/default="C:\Users\<username>\Downloads\isaac_sim-assets-1-4.2.0\Assets\Isaac\4.2"

For assets collaboration, upload the combined assets pack folder to a Nucleus server. For example, drag and drop the Assets folder into a local Nucleus folder like the Library/NVIDIA folder.

Note

  • Create a new NVIDIA sub-folder in the Library folder then copy the local Assets folder into it.

  • This will maintain a similar folder structure as omniverse://localhost/NVIDIA mounted folder.

../_images/isaac_sim_faq_assets_pack_localhost.png

When the upload is done, run Isaac Sim with the flag below to use the uploaded assets from the Nucleus.

./isaac-sim.sh --/persistent/isaac/asset_root/default="omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.2"
.\isaac-sim.bat --/persistent/isaac/asset_root/default="omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.2"

In the Isaac Sim app, to verify the layout and path of the assets, go to the Isaac Utils > Nucleus Check menu.

../_images/isaac_sim_faq_assets_pack_check_localhost.png

The logs should show:

[139.213s] Checking for Isaac Sim assets...
[139.218s] Isaac Sim assets found: omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.2

Docker#

Manually Installing Nucleus in a Container#

Note

  • The Nucleus and Cache installer is no longer available in the |isaac-sim_short| container.

  • The recommended installation of Nucleus is via the Omniverse Launcher. For enterprise users, see Omniverse Enterprise

Save Isaac Sim Configs on Local Disk#

To keep Isaac Sim configuration and data persistent when running in a container, use the flags below when running the Docker container.

-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw              #For cache
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw                    #For cache
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw                  #For cache
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw   #For cache
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw   #For cache
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw           #For log files
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw             #For Isaac Sim data
-v ~/docker/isaac-sim/documents:/root/Documents:rw                   #For adding new or saving files
$ sudo docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-v ~/docker/isaac-sim/kit/cache/Kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
nvcr.io/nvidia/isaac-sim:4.2.0

Note

These flags will use the use Home folder to save the Isaac Sim cache, logs, config and data.

Problem Connecting to Docker Container#

To resolve some problems connecting to a Docker container, try using the –network=host flag when running the Docker container.

$ sudo docker run --gpus all -e "ACCEPT_EULA=Y" --rm --network=host nvcr.io/nvidia/isaac-sim:4.2.0

Note

This flag is needed to connect to a Nucleus server.

Reading the Logs in a Container#

To ensure Omniverse Isaac Sim is running in a container, you can read the logs:

  1. If the Omniverse Isaac Sim container is on a remote machine, SSH into the Docker host using a terminal. Run this command from where your pem key folder is; replace the <public_ip_address> with your instance or remote host IP address:

    $ ssh -i "yourkey.pem" ubuntu@<public_ip_address>
    
  2. Access the running container as follows:

    $ docker exec -it <container_id_or_name> bash
    $ cd /root/.nvidia-omniverse/logs/Kit/Isaac-Sim/<version_number>
    

Restarting the Container#

The steps below are used to restart a headless container.

  1. SSH into the host machine or AWS instance running the Omniverse Isaac Sim Container.

    $ ssh -i "<ssh_key_name>.pem" ubuntu@<public_ip_address>
    
  2. List all running containers and find the container ID running Omniverse Isaac Sim.

    $ sudo docker ps
    CONTAINER ID        IMAGE
    823686a7036d      nvcr.io/nvidia/isaac-sim...2021.2.1
    
  1. Restart the container.

    $ sudo docker restart [CONTAINER ID]
    
  2. View the Docker logs.

    $ sudo docker logs [CONTAINER ID]
    

Restart Omniverse Isaac Sim inside Docker#

If you want to restart Omniverse Isaac Sim while keeping Docker running, you must start the Docker with Bash as the entrypoint so that you can manually start or stop Omniverse Isaac Sim.

  1. Start the Docker with Bash, and start Omniverse Isaac Sim manually.

    $ sudo docker run -it --entrypoint bash --gpus all -e "ACCEPT_EULA=Y" --rm --network=host nvcr.io/nvidia/isaac-sim:4.2.0
    $ ./runheadless.native.sh
    
  2. Proceed to Isaac Sim Headless App (via Omniverse Streaming Client) to live stream Omniverse Isaac Sim remotely.

  3. When you need to exit, in a separate terminal start an interactive bash session inside the same container that’s running the headless server and kill the Omniverse Isaac Sim related processes.

    $ docker exec -it <container_id> bash
    $ pkill omniverse-kit
    
  4. Restart Omniverse Isaac Sim.

    $ ./runheadless.native.sh
    

Save Docker Image#

If you made significant changes inside the Docker, for example, installed ROS or other libraries, you may want to save the Docker image so that you can restart the Docker without having to reinstall everything.

  1. Find the container’s id and commit it.

    $ docker ps
    $ docker commit <CONTAINER ID> <new docker name>
    
  2. To reload a specific docker:

    $ docker run -it --entrypoint bash --gpus all -e "ACCEPT_EULA=Y" --rm --network=host -d <new Docker name>
    

Create a Cached Docker Image#

Creating a local cached image of Isaac Sim will help improve the load times of running Isaac Sim in a container as well as having custom pre-installed dependencies.

  1. To create this cached image, first pull and run the latest Isaac Sim container from NGC.

    $ docker pull nvcr.io/nvidia/isaac-sim:4.2.0
    $ docker run --name isaac-sim --entrypoint bash -it --rm --gpus all --network=host \
        -e "ACCEPT_EULA=Y" -e "PRIVACY_CONSENT=Y" \
        nvcr.io/nvidia/isaac-sim:4.2.0
    
  2. Install any dependencies (e.g. ROS or other libraries) and warm up the shader cache.

    $ ./python.sh -m pip install stable-baselines3 tensorboard
    $ ./python.sh standalone_examples/api/omni.isaac.kit/hello_world.py -v
    $ ./runheadless.native.sh -v --/app/quitAfter=1000
    
  3. Create the cached Docker image.

    $ docker commit isaac-sim isaac-sim-cached
    
  4. Save the Docker image to a compressed archive to transfer it to another machine, if needed.

    $ docker save isaac-sim-cached | gzip > isaac-sim-cached.tar.gz
    
  5. Load the compressed archive as a Docker image.

    $ docker load -i isaac-sim-cached.tar.gz isaac-sim-cached
    
  6. Run this cached image.

    $ docker run --name isaac-sim-cached --entrypoint bash -it --gpus all --rm --network=host \
        -e "ACCEPT_EULA=Y" -e "PRIVACY_CONSENT=Y" \
        isaac-sim-cached
    

Setting up Docker#

Once you have Docker on Linux installed, follow the instructions at Post-installation steps for Linux to set it up so you would not need to use sudo to run a Docker container.

Mount a Folder to the Container#

To add data from the host machine to a container, mounting a folder is needed.

$ sudo docker run --gpus all --rm -e "ACCEPT_EULA=Y" -v ~/docker/isaac-sim/documents:/root/Documents:rw nvcr.io/nvidia/isaac-sim:4.2.0

Note

Can now copy files to docker/isaac-sim/documents in your Home folder and it will show up in the Isaac Sim container at /root/Documents.

Cloud and Remote#

Getting IP Addresses of AWS EC2 Instance#

To get the public and private IP addresses of an AWS EC2 instance, go to the Instances section of the EC2 Dashboard and select the instance. See the image below for an example of the Private and Public IPs:

../_images/isaac_main_aws_ip_address.png

SSH into the AWS EC2 Instance#

If you need to directly access an AWS EC2 instance that was created from the deployment above, run these steps to SSH into the instance:

$ ssh -i "<ssh_key_name>.pem" ubuntu@<public_ip_address>

Creating AWS Access Key#

Create an AWS Access Key by following the instructions here:

Creating SSH Key#

On Linux

  1. Run:

    $ mkdir ~/.ssh
    $ chmod 700 ~/.ssh
    $ ssh-keygen -t rsa
    
  2. Enter your passphrase twice.

  3. Your public key is at .ssh/id_rsa.pub in your home folder and private key at .ssh/id_rsa.

On Windows

  1. Download PuTTYgen.

  2. Launch PuTTYgen, and click on “Generate a public/private key pair”.

  3. Click on “Save public key” and name the file “${ssh_key_name}.pub”. This is your Public Key file.

  4. From the “Conversions” menu, select “Export OpenSSH key” and name the file “${ssh_key_name}.pem”. This is your Private Key file.

  5. Edit the properties of the “${ssh_key_name}.pem” file.

    • Go to security settings, click “Advanced”

    • Remove inheritance

    • Set current user as owner of the file and full permissions to only that user.

    • This is to prevent permission errors when trying to SSH into the instance

Setting up NGC API Key on AWS#

If you don’t already have an API key:

  1. Generate your NGC API Key.

  2. Go to AWS Secrets Manager section of the AWS console:

  3. Click Store a new secret.

  4. Select Other type of secrets.

  5. Set the following two sets of Secret key/value pairs

    Key

    Value

    Username

    $oauthtoken

    Password

    <Your_NGC_API Key>

  6. Give the secret a name

Miscellaneous#

Common Path Locations#

  1. Location for Isaac Sim logs

    # Linux
    ~/.nvidia-omniverse/logs/Kit/Isaac-Sim
    
    # Windows
    %userprofile%\.nvidia-omniverse\logs\Kit\Isaac-Sim
    
    # Container
    /root/.nvidia-omniverse/logs/Kit/Isaac-Sim
    
  2. Location for Omniverse Kit shader cache

    # Linux
    ~/.cache/ov/Kit
    
    # Windows
    %userprofile%\AppData\Local\ov\cache\Kit
    
    # Container
    /root/.cache/ov/Kit
    
  3. Location for Isaac Sim configs

    # Linux
    ~/.local/share/ov/data/Kit/Isaac-Sim
    
    # Windows
    %userprofile%\AppData\Local\ov\data\Kit\Isaac-Sim
    
    # Container
    /root/.local/share/ov/data/Kit/Isaac-Sim
    
  4. Location for Isaac Sim packages

    # Linux
    ~/.local/share/ov/pkg/isaac-sim-4.2.0
    
    # Windows
    %userprofile%\AppData\Local\ov\pkg\isaac-sim-4.2.0
    
    # Container
    /isaac-sim
    

How to Uninstall Isaac Sim#

To uninstall Isaac Sim from the Omniverse Launcher:

  1. Select the Isaac Sim app in the Library tab.

  2. Select Settings:

    ../_images/isaac_sim_faq_uninstall_1.png
  3. Select Uninstall:

    ../_images/isaac_sim_faq_uninstall_2.png

Note