Isaac Simを用いたToroboの動作方法

## Isaac Simとは？

NVIDIA社が提供するロボティクス向けの高度な物理シミュレーションプラットフォームです。

Isaac Simは高度なレンダリング能力とAIとの連携のしやすさを特徴としており、ロボティクス分野ではロボットシミュレーションや強化学習に使用されています。

## Toroboとは？
[東京ロボティクス社](https://robotics.tokyo/ja/)が開発する力制御可能な全身人型ロボットです。

新型Toroboは2025年3月頃発売予定(詳細: [PR TIMES記事](https://prtimes.jp/main/html/rd/p/000000018.000077249.html))で、今回はその新型モデルを使用します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/104a4e40-c294-016b-23c7-3f11e7a5633b.png" width="20%">

## Isaac Simのインストール

### 使用要件

システム要件は以下のようになります。

![system_requirements_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/01617954-877b-0ea3-b75c-73a1195cff70.png)


GPUドライバーの使用要件は以下のようになります。<a href="11"/>

![system_requirements_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/4f016f5e-43df-2c2b-a836-06cdc4afedb3.png)

使用要件を満たしているか詳細にチェックしたい場合は、Omniverse Launcherをインストール後にOmniverse Launcher内でIsaac Sim Compatibility Checkerをインストールし、起動しましょう。

使用要件を満たしているときは左のように表示され、使用要件を満たしていない場合は満たしていない箇所が赤色で表示されます。

![isaac_checker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/f7989567-85c3-aaf5-6a20-8e93fab0fb74.png)

### 実行環境

社内では以下の環境で動作確認済みです。

| 項目 | 仕様 |
|------|------|
| OS | Ubuntu 20.04.6 LTS |
| CPU | Intel Core™ i9-10900X CPU @ 3.70GHz × 20 |
| RAM | 32 GB |
| Storage | 2.5 TB |
| GPU | GeForce RTX 3080 |
| VRAM | 10 GB |

### NVIDIAアカウントの作成
[NVIDIA Omniverse](https://www.nvidia.com/ja-jp/omniverse/)へ移動し、右上の人型のボタンをクリックしてアカウントを作成します。

![create_nvidia_account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/be90ab2e-218e-de6e-097d-e253b09e8119.png)

クリックすると以下の画面に遷移するので、適宜入力を進めてアカウントを作成します。

![register_nvidia_account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/62d3b12c-fed0-c815-6813-7c5f2f38cfa7.png)


アカウント作成が成功すると以下のような画面になります。

![succss_create_nvidia_account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/9b731925-656b-dde6-5b82-53eded1d0e62.png)


### Omniverse Launcherのインストールと起動

[Workstation Install Guide](https://docs.omniverse.nvidia.com/install-guide/latest/workstation-install.html)からOmniverseのAppImageをインストールします。

Download Omniverse Launcherを押します。

![install_omniverse_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/972079e1-3f34-1978-d476-84e5649e17ca.png)

Start Developingをクリックします。

![install_omniverse_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/440d5919-ffc0-fab4-b321-494934ee90a6.png)

![install_omniverse_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/282adaf3-c325-619b-dd75-2ad7ab53309c.png)


作成したNVIDIAアカウントに詳細な情報を求められるので入力し、Submitをクリックします。

![register_nvidia_account_detail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/9a8a66d2-8c8f-a901-1bed-fd1b44e131df.png)

以下のサイトに遷移するので、Get Startedをクリックします。

![install_omniverse_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/2b014518-53aa-1ec5-282a-fdba6c04c94d.png)

Access Launcher for Windows or Linuxをクリックすると、LinuxではAppImageファイルのダウンロードが、Windowsではexeファイルのダウンロードが始まります。

![install_omniverse_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/b4a53ddb-96b5-2bee-264a-f8e8f34d6d8f.png)

(Linuxの場合)ダウンロードしたAppImageを以下のコマンドで実行権限を与えます。<a href="50"/>

```terminal:terminal
chmod +x omniverse-launcher-linux.AppImage
```

(Linuxの場合)AppImageを以下のコマンドで起動します。

```terminal:terminal
./omniverse-launcher-linux.AppImage
```

ログインを求められるので、作成したNVIDIAアカウントでログインします。

![login_omniverse.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/62bcf4af-6695-7577-b079-752369c156f6.png)

基本的にはCONTINUE(続ける)をクリックするだけで大丈夫です。

![login_omniverse_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/63bc3a52-0a3e-6bfa-ca39-4c51db67046d.png)

![login_omniverse_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/7e4750f5-ee68-cee0-fc6f-d246b8f40b52.png)

設定が完了すると、以下のような画面が出てきます。

![launch_omniverse.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/f174f8f5-d0c6-a066-c168-fc8ae774de1c.png)

なお、今回のロボットの起動には必要ないですが、OmniverseのAssetを使用したい場合は[Nucleus](https://docs.omniverse.nvidia.com/nucleus/latest/workstation/installation.html)と
[Cache](https://docs.omniverse.nvidia.com/utilities/latest/cache/installation/workstation.html)をOmniverse Launcherからインストールすることを推奨します。

### Isaac Simのインストールと起動

更新(英語版ならEXCHANGE)をクリックしIsaac Simと検索するとアプリケーションの欄にIsaac Simが出てくるので、Isaac Simをクリックします。

![search_isaacsim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/cb343365-0680-3842-4b11-bc6ddb112609.png)


すべてのリリースビルドを選択してver4.0以上のものを選択してインストールします。インストールには10分ほどかかります。

なお、複数のバージョンをインストールすることが可能です。

![install_isaac.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/63b768cb-895c-4cd3-919d-fb0177680f36.png)

起動時はライブラリを選択して、スタートをクリックします。

![launch_isaac_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/88fb302f-78a2-7a65-6ac3-0c6621f0e052.png)

初回起動時はかなり時間がかかりますが、2回目以降は短時間で起動できます。

なお、複数バージョンインストールしている場合は、スタート横の３本線をクリックしてバージョンを選択することによって起動するバージョンを変更することができます。

ちなみに、Headless NativeやHeadless WebRTCはリモートで接続するときのオプションになります。

![launch_isaac_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/bb6959fe-4246-a082-e343-86df782a3c63.png)

以下のような画面になれば起動は完了しています。

![isaac_init.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/56294751-7754-092f-b84c-76c0e27f4808.png)


## Toroboの動作確認

[torobo_usd_models](https://github.com/TokyoRobotics/torobo_usd_models)を適当な場所にgit cloneします。

```terminal:terminal
git clone https://github.com/TokyoRobotics/torobo_usd_models.git
```

Omniverse Launcherからライブラリ、そしてIsaac Simを選択し、スタートをクリックして起動します。

![select_isaac_sim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/50a92310-69a7-7887-abb4-3a2b53a4b7ec.png)

File→Openからtorobo_usd_modelを選択し、USDファイルを選択します。

![select_open_isaac.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/83f68078-0d7c-3593-bbb6-a5a39c713457.png)

左の三角マークをクリックしてシミュレーションを開始させます。

![isaac_torobo_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/b56e17d1-e2c0-d390-f514-335f83c192e5.png)

例としてtorso/joint_3を動かします。

torso/link_2をクリックしてtorso/joint_3をクリックします。

![isaac_torobo_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/6835e078-5e91-d25d-212b-30c3af7f71b8.png)

Physics→Drive→AngularのTarget Positionを左右にドラッグすることで、torso/joint_3を動かすことができます。

![isaac_torobo_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3335112/979e29c9-1545-9855-40f0-f23f6968bd84.png)

## 参考
https://docs.omniverse.nvidia.com/isaacsim/latest/installation/requirements.html

https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_workstation.html