6. Setup FAQ

6.1. Isaac Sim Modes

6.1.1. 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.

6.1.2. Isaac Sim Main App

This is the main windowed Isaac Sim application.

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

6.1.3. Isaac Sim Headless App (via WebSockets)

This is a command line version of Isaac Sim. It can be run remotely on a workstation with an RTX GPU and be accessed on a browser using Livestream WebSocket client.

6.1.4. Isaac Sim Headless App (via Kit Remote)

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

6.1.5. Isaac Sim Python

This is a mini app to run the Python samples.

6.1.6. Differences Between Workstation And Docker

There are two methods to install Isaac Sim:

  1. Basic Isaac Sim Installation can be isntalled from the Omniverse Launcher and is recommended for a Workstation users.

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

Here are the main differences between

  • The Isaac folder is pre-installed on the Nucleus in Docker as a mount while on the Workstation, the Isaac folder can be downloaded during the First Run of Isaac Sim.

  • The root folder of the Workstation package is at ~/.local/share/ov/pkg/isaac_sim-<version> while the root folder in the Docker is /isaac-sim.

6.2. Nucleus and Cache

6.2.1. Adding Sample Assets via Mount

Here’s how to create an Isaac mount on the Omniverse Nucleus server. This method requires the Nucleus Server to have access to the Internet. No storage is used on the Nucleus server. The mounted folder is also read-only.

Note

  • This mounted Isaac folder will be automatically updated with a new versions of Isaac Sim. The user does not need to update this folder.

  • Enabling Cache is recommended when using mounts.

Steps:

  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.

  2. Create a New mount on the root folder with the settings below:

    Name: Isaac
    Type: Amazon S3
    Host: ov-isaac.s3.us-west-1.amazonaws.com
    Service: s3
    Redirection: http://dpcil1p2xgdf8.cloudfront.net
    
    ../_images/isaac_main_nucleus_add_mount.png
  3. The folder should look like this:

    ../_images/isaac_main_nucleus_mount_folder.png

6.2.2. Setting default Nucleus Server

  • To set the default Nucleus server when running natively, edit the file at:

    apps/omni.isaac.sim.base.kit
    
    [settings.isaac]
    nucleus.default = "omniverse://localhost"
    

    Change localhost to the IP address of the Nucleus server.

    You could also run Isaac Sim with the flag –/isaac/nucleus/default=”omniverse://<ip_address>”.

  • To set the default Nucleus server when running in Docker, use the flag -e “OMNI_SERVER=<ip_address>” where <ip_address> is the IP address of the Nucleus server.

    $ sudo docker run --gpus all -e "ACCEPT_EULA=Y" -e "OMNI_SERVER=<ip_address>" --rm --network=host nvcr.io/nvidia/isaac-sim:2021.2.0
    

6.2.3. Setting default Username and Password connecting to Nucleus Server

  • To set the default credentials when running natively, run:

    $ 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=<username>”. (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:2021.2.0
    

6.2.4. Uninstall old Nucleus Server

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

  1. Uninstall old Nucleus:

    $ 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

  3. Install Nucleus from Omniverse Launcher.

6.3. Docker

6.3.1. Manual Install Nucleus in Container

If you have issues running the start_nucleus.sh to start Nucleus in a container. There is another menthod to manually install and run Nucleus.

Steps:

  1. Stop Nucleus if some of the Nucleus services is running:

    $ ./stop_nucleus.sh
    
  2. Install Cache only:

    $ installers/cache/setup/cache-setup -i
    
  3. Install Nucleus only:

    $ installers/nucleus/setup/nucleus-setup -i
    
  4. Run System Monitor in the background:

    $ installers/nucleus/System\ Monitor/omni-system-monitor &
    

6.3.2. Save Isaac Sim configs on local disk

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

-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov: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/config:/root/.nvidia-omniverse/config:rw       #For Isaac Sim configs
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw             #For Isaac Sim and Nucleus 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/cache/ov:/root/.cache/ov: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/config:/root/.nvidia-omniverse/config: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:2021.2.0

Note

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

6.3.3. 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:2021.2.0

Note

This flag is needed to connect to a Nucleus server.

6.3.4. Reading the Logs in a Container

To ensure the Omniverse Isaac Sim in a container is running, read the logs. Here’s how:

  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 by running:

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

6.3.5. Restarting the Container

The steps below is to restart a headless container.

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

    $ 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.0
    
  1. Restart the container.

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

    $ sudo docker logs [CONTAINER ID]
    

6.3.6. Restart Omniverse Isaac Sim inside Docker

If you want to restart Omniverse Isaac Sim while keeping the 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:2021.2.0
    $ runheadless.websocket
    
  2. Proceed to Livestream WebSocket 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. To restart Omniverse Isaac Sim:

    $ runheadless.websocket
    

6.3.7. 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>
    

6.3.8. 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.

6.3.9. 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:2021.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.

6.4. Cloud and Remote

6.4.1. 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

6.4.2. 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>

6.4.3. Creating AWS Access Key

Create an AWS Access Key by following the instructions here:

6.4.4. 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

6.4.5. 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

6.5. Livestreaming

6.5.1. Change WebSocket port

To change the default HTTP server port for WebSockets:

  1. Open the file /apps/omni.isaac.sim.base.kit

  2. Edit the line below to the desired port number:

    exts."omni.services.transport.server.http".port = 8211
    

To override HTTP server port for WebSockets:

  1. Run Isaac Sim via command line or Launcher with this extra arguments:

    --/exts/omni.services.transport.server.http/port=8211
    

Note

  • Replace the port number 8211 to the desired port number.

  • Port 8899 is used by WebSocket but cannot be changed with this method.