【Isaac Sim】3年間使ってきたNVIDIA Isaac Simを皆さんに紹介、そしてUbuntuで使うまで【Ubuntu】

# この記事の目的
この記事では、私が大学の研究室(情報工学系)にて3年間扱ってきた**Isaac Sim**(他Omniverse関連ソフトを含む)の特徴、また**Ubuntuに導入するまで**紹介します。(使い方などは今後投稿していく予定です。)

日本の3D界隈ではまだそれほど認知度の高くないIsaac Simを、皆さんに知っていただけると嬉しいです。(もちろん、使ってくれたらもっと嬉しいです。)

# 筆者の環境
### サーバー1
| |CPU |GPU |メモリ |ストレージ |OS |NVIDIA Driver |
|:------:|:------:|:------:|:------:|:------:|:------:|:------:|
|名称 |Intel Xeon Silver 4215R |NVIDIA RTX 6000 Ada |96GB |2TB |Ubuntu 20.04 LTS |550.54.15 |
|個数 |2 |1 |||

### サーバー2
| |CPU |GPU |メモリ |ストレージ |OS |NVIDIA Driver |
|:------:|:------:|:------:|:------:|:------:|:------:|:------:|
|名称 |Intel Xeon Gold 6132 |NVIDIA RTX A6000, A4500 |160GB |4.5TB |Ubuntu 20.04 LTS |560.35.03 |
|個数 |1 |各1 |||

:::note info
どちらもローカルかつGUI環境
:::

# はじめに
### Isaac Simとは？
>Isaac Sim is a software platform built from the ground up to support the increasingly roboticized and automated world.
>([What is Isaac Sim?](https://docs.omniverse.nvidia.com/isaacsim/latest/index.html)より引用)

要するにIsaac Simとは、
 **"ロボティクス"と"自動化"を推進することを目的とした、「3Dモデル統合ソフトウェア」** 
 のことです。
現在は統合プラットフォーム「NVIDIA Omniverse」内のソフトの1つとして提供されています。

:::note info
OmniverseはIsaac Simを含むソフトやSDK、API等の統合プラットフォーム
別記事で解説予定
:::

ここで、Isaac Simのことをわざわざ「3Dモデル統合ソフトウェア」と呼称したことに疑問を持たれた方もいらっしゃると思います。その理由についてはこの後解説でお分かりいただけるでしょう。

# Isaac Simの特徴、「できること」と「できないこと」
Isaac Simは天下のNVIDIA様の謹製ソフトということで、一見なんでもできそうに見えます。当然多機能なソフトですが無論なんでもできるわけではなく、「わざわざIsaac Simを選ばなくていい」用途も多分に存在します。

よってここではそんなIsaac Simの特徴について、「できること(Isaac Simが得意なこと)」と「できないこと(不得意なこと)」に分けてそれぞれ説明します。

:::note warn
私自身の所感による部分もあります。ご容赦ください。
:::

### できること
- ファイルフォーマットに依らない3Dモデルの統合
    - 一般的に使用されるフォーマットのほとんどに対応
    - すべてを統合し、USD(Universal Scene Description)形式のファイルとして保存できる

&#13;&#10;

- 高負荷な3Dシミュレーション
    - Python APIやIsaac Sim APIを利用
    - ホットリロード(スクリプトを編集、保存すると即座に3Dシーンへ適用される)対応でスムーズな開発ができる
    - GPUを活用した高速かつ高品質なレンダリングが可能

&#13;&#10;

- 高精細でリアルな3DCG映像の作成、表示
    - 皆さんご存じレイトレーシングをはじめ、様々なグラフィック技術を活かした映像美を実現

&#13;&#10;

- 物理シミュレーション
    - PhysXを用いた物理演算とグラフィック技術を組み合わせた、物理現象をリアルに再現

&#13;&#10;

- 複数人での同一シーンの同時操作 **※Ubuntuでは安定動作しない可能性があります**

    - 「NVIDIA NUCLEUS」を用いて同一シーンを複数人で同時に編集、確認することができる(らしい)
    :::note info
    NUCLEUSはUSDファイルの共有フォルダ
    プライベートクラウドストレージのようなもの
    

### できないこと
- 3Dモデルの作成
    - 3Dモデル自体の作成には向かない
    - 単純なオブジェクト(立方体や球など)は配置可能
    - 代替ソフト: Blender, Fusion360, etc.

&#13;&#10;

- 3Dアニメーションの作成
    - "Action Graph"や"Animation Graph"というノーコードツール(Extension)を使うが、ドキュメントが不足しており扱いにくい
    - 物理演算を用いないのであれば、わざわざIsaac Simを使う必要はない
    - 代替ソフト: Unity, Cinema 4D, AfterEffect, etc.

&#13;&#10;

- ゲーム制作
    - Isaac Simはゲーム制作を想定して作られていない
    - 代替ソフト: Unity, Unreal Engine 5, etc.

私の経験では、Isaac Simも以上のように「できること」と「できないこと」があります。

これらを総合すると、Isaac Simは3Dモデルを統合し、高精細な映像や高速なシミュレーションを行うための「**3Dモデル統合ソフトウェア**」と考えることができるでしょう。

3D系ソフトを導入する際はぜひこれを参考に、Isaac Simを使うか否かの選択をしてみてください。

# Isaac Simの導入方法
それでは、実際にIsaac Simを導入してみましょう。

## 導入前に確認して欲しいこと

### システム要件
| |CPU |GPU |RAM |OS(Linux) |NVIDIA Driver|
|:------:|:------:|:------:|:------:|:------:|:------:|
|最小 |Intel i7 第7世代, AMD Ryzen |Geforce RTX 3070 |32GB |Ubuntu 20.04 LTS |535.129.03 |
|推奨 |Intel Xeonシリーズ |NVIDIA RTX A5000 |128GB |Ubuntu 20.04 LTS |535.129.03 |
>最小構成は[Omniverse Materials and Rendering >> Technical Requirements](https://docs.omniverse.nvidia.com/materials-and-rendering/latest/common/technical-requirements.html)より引用
推奨構成は著者の経験則、および[Omniverse >> 推奨システム](https://www.nvidia.com/ja-jp/omniverse/platform/enterprise-systems/)より引用

### パフォーマンス参考
::: note info
Isaac Sim起動時黒画面でのFPSを参考とする
:::
- サーバー1(6000 Ada)：~150FPS
- サーバー2(A6000+A4500)：~150FPS
- Xeon Silver 4215Rx2 + A6000：~90FPS
- Xeon Gold 6132 + Quadro RTX 5000x2：~50FPS

### 注意点
- Ubuntuは20.04と22.04のみサポート(他Linuxディストリビューション、他バージョンはサポート外)
- NVIDIA以外のGPUはサポート外
- **1台のローカルサーバー上で「複数人での同時操作」環境を無償で構築することは<font color="red">不可能**</font>
    - サーバーの増設、vGPU(GPU仮想化)環境の構築、Teradici等のリソース仮想化技術が別途必要

## 導入手順

### NVIDIA Driverインストール
1. Nouveau(Ubuntuデフォルトのグラフィックドライバ)無効化用Configファイル生成

    ```
    sudo vim /etc/modprobe.d/blacklist-nouveau.conf
    ```
    &#13;&#10;

1. Configファイル編集

    ```conf:blacklist-nouveau.conf
    blacklist nouveau
    options nouveau modeset=0
    ```
    `ZZ`で保存し、以下を実行
    ```
    sudo update-initramfs -u
    ```

    &#13;&#10;
    
1. 推奨NVIDIA Driverの検索

    ```
    sudo ubuntu-drivers list
    ```

    以下のようなリストが表示される

    ```
    nvidia-driver-535
    nvidia-driver-535-open
    nvidia-driver-535-server
    nvidia-driver-535-server-open
    nvidia-driver-550
    nvidia-driver-550-open
    nvidia-driver-550-server
    nvidia-driver-550-server-open
    ```

    &#13;&#10;
    
1. インストール
    以下の基準に従ってリストからドライバーを選び、インストール
    - **基本的になるべく新しいもの**
    - **`-open`や`-server`がついていないもの**

    ```cmd:nvidia-driver-550を選択
    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    sudo apt install nvidia-driver-550
    ```

    &#13;&#10;
    
1. 再起動

    ```
    sudo reboot
    ```

    &#13;&#10;
    
1. 確認

    ```
    nvidia-smi
    ```
    以下のような出力が得られればインストール完了
    ```
    Sat Nov  2 11:17:42 2024       
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA RTX 6000 Ada Gene...    Off |   00000000:17:00.0  On |                  Off |
    | 55%   78C    P2            222W /  300W |   13380MiB /  49140MiB |     73%      Default |
    |                                         |                        |                  N/A |
    +-----------------------------------------+------------------------+----------------------+
                                                                                             
    +-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
    |        ID   ID                                                               Usage      |
    |=========================================================================================|
    |                                                                                         |
    ```

### Omniverse Launcherインストール
#### ■ 無償版(クリエイター版)の場合
1. `omniverse-launcher-linux.Appimage`のダウンロード
    [NVIDIA Omniverse for Developers](https://developer.nvidia.com/omniverse#section-getting-started)にアクセスし、画像の<font color="red">赤矢印</font>をクリックしてダウンロード
    ![スクリーンショット 2024-11-02 114516.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/6f44caba-7c41-4a48-676b-5cabbf16e147.png) 
    
    &#13;&#10;
    

1. 実行権限の付与
    ```
    cd /<omniverse-launcher-linux.Appimageがダウンロードされたディレクトリ>
    sudo chmod +x omniverse-launcher-linux.Appimage
    ```
    
    &#13;&#10;
    
1. 起動
    `omniverse-launcher-linux.Appimage`をダブルクリックor右クリックから起動
    ![スクリーンショット 2024-11-02 120047.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/935625bc-f644-0f4a-0b62-6001cd30b278.png)

#### ■ 有償版(Omniverse Enterprise)の場合
1. サービスプロバイダを選定し、Enterprise契約を締結
    
    &#13;&#10;
    
1. NVIDIA Enterprise Accountの登録
    [NVIDIA Omniverse Enterprise Licensing Quick Start Guide](https://docs.omniverse.nvidia.com/enterprise/latest/enterprise_quickstart-guide.html)の手順に従って登録
    (Create your NVIDIA Enterprise Accountの項を参考に)
    
    &#13;&#10;
    
1. "NVIDIA Application Hub"にログイン
    [NVIDIA Application Hub Login](https://nvid.nvidia.com/login)にアクセスし、NVIDIA Enterprise Accountでログイン
    ![スクリーンショット 2024-11-02 121136.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/8d9babf9-c461-c165-dcd9-515b1865b3e3.png)
    
    &#13;&#10;
    
1. `omniverse-launcher-linux.Appimage`のダウンロード
    "NVIDIA Licensing Portal"にアクセス
    ![スクリーンショット 2024-11-02 133740.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/46c1aa9d-e099-304f-7aec-0a444db4b1c1.png)
    "SOFTWARE DOWNLOADS"に遷移し、PRODUCT FAMILYから"Omniverse"を選択
    ![スクリーンショット 2024-11-02 133807.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/c13fa0db-9ffc-5f59-335d-0fd8e6b4a9b3.png)
    Linux版"NVIDIA Omniverse Workstation Launcher"の最新版をダウンロード
    ![スクリーンショット 2024-11-02 133823.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/334acd60-59d1-ffae-b448-2620a4dc5c4d.png)
    ※画像の場合、`omniverse-launcher-linux-1.9.10.Appimage`がダウンロードされる
    
    &#13;&#10;

1. 実行権限の付与
    ```
    cd /<omniverse-launcher-linux.Appimageがダウンロードされたディレクトリ>
    sudo chmod +x omniverse-launcher.Appimage
    ```
    
    &#13;&#10;
    
1. 起動
    `omniverse-launcher-linux.Appimage`をダブルクリックor右クリックから起動
    ![スクリーンショット 2024-11-02 120047.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/935625bc-f644-0f4a-0b62-6001cd30b278.png)
    
    &#13;&#10;
    
### Omniverse cacheインストール
1. Omniverse LauncherのEXCHANGEに遷移
    ![スクリーンショット 2024-11-02 141011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/8d59e1be-91e6-e271-ab59-0bf9852ca25f.png)
    
    &#13;&#10;
    
1. Omniverse Cacheをインストール
    ![スクリーンショット 2024-11-02 142032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/b30f7ec4-6b36-230c-f80e-4ed48b437bb8.png)
    
    &#13;&#10;
    
### NUCLEUSインストール、セットアップ
1. Omniverse LauncherのNUCLEUSに遷移
    ![スクリーンショット 2024-11-02 143014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/3529be8b-b782-cdbd-837b-23fa529a6ceb.png)
※これはセットアップ後の画像です。
    
    &#13;&#10;
    
1. [Nucleus Overview](https://docs.omniverse.nvidia.com/nucleus/latest/index.html)に従ってインストールとセットアップ
:::note info
NUCLEUSをセットアップすると、Omniverseが用意したAssetsやEnvironment、Materialなどが使える
:::
  
### Isaac Simインストール
1. Omniverse LauncherのEXCHANGEに遷移
    ![スクリーンショット 2024-11-02 141011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/8d59e1be-91e6-e271-ab59-0bf9852ca25f.png)
    
    &#13;&#10;
    
1. Isaac Simをインストール
    バージョンは最新版から1つ前のものを選ぶと良い
    ![スクリーンショット 2024-11-02 142113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/baa97a65-598c-792b-44b7-30ba672de77f.png)
    
    &#13;&#10;
    
### Isaac Sim起動
1. Omniverse LauncherのLIBRARYに遷移し、LAUNCHをクリック
    ![スクリーンショット 2024-11-02 145810.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/0415705a-e8a6-188f-b74c-d90d2faf6f40.png)
    
    &#13;&#10;
    
1. ポップアップから"Isaac Sim"を選択し、STARTをクリック
    ![スクリーンショット 2024-11-02 145837.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/1ea1ae8f-c1a5-faea-dc97-bf6e7c4d9f68.png)
    
    &#13;&#10;
    
1. ターミナルがポップアップし、Isaac Simが起動する
    以下のように「"Isaac Sim" is not responding」が出ても、スペックが足りていればしばらく待つと起動する
    ![スクリーンショット 2024-11-02 150817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/7f11337b-f46e-4a73-38fb-41631beb2c2e.png)
    起動後の画面
    ![スクリーンショット 2024-11-02 150355.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/46bcea73-ce39-e5bd-9f40-c4057707e581.png)

### 起こりうる問題と対処法
#### ■ NUCLEUSが"not accessible"となる問題
- 症状1：NUCLEUS内に保存したシーンが開けない
- 症状2：AssetsやMaterialが正しく表示されない
- 症状3：NUCLEUSタブで以下のように表示される
![スクリーンショット 2024-11-03 001021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916082/5e4a5c04-2647-9091-9960-174c6f793ebb.png)
- 対処法：サーバーの再起動
:::note warn
様々な方法(Omniverse Launcher再起動、Driver再インストールなど)試したが効果なし
NVIDIAの開発者にバグ報告をしたが、3年間改善されていない状況
:::

#### ■ Isaac SimでUSDファイルが一切開けなくなる問題
- 症状：ファイルの保存場所に関わらず、一切のファイルが開けなくなる
- 対処法：Isaac Simのバージョンダウン
:::note warn
Isaac Sim ver.3.x.xの頃に発生していたバグ
現在のver.4.x.xでは発生していない
:::

# おわりに
Isaac Simは要求スペックも高く、日本語のドキュメントも少ないためなかなか個人に普及していない(Unityなどの主要ソフトに比べて)ように感じられます。

実際、私も4年次に研究室に配属されていきなり「**うちはOmniverseを始めます。あとはあなたに任せます。**」と言われましたが、ドキュメント不足のためセットアップにすら**半年**もかかりました。

その半年で私は以下の通り、考えられる限りすべての悪行を繰り返してきました。
- 事例1：**Omniverse黎明期だったこともあって公式ドキュメントに書いてあることが1ミリも分からなかった**
- 事例2：**同時操作環境をセットアップしようとしてX11やgdmを破壊した結果強制CUI環境になった**
- 事例3：**ufwの設定をミスってすべてのユーザーを締め出した**

その結果、環境が汚染された**総額100万円近いサーバーを初期化**し、Ubuntuのクリーンインストールからやり直すことになりました！！！！！最高！！！！！！

皆さんもぜひIsaac Simを知って、十分なスペックがある人は使ってみてくれると嬉しいです。**数多くの企業が導入し始めているOmniverseの波に、みんなも乗ろう！！！**