はじめに
この記事ではIsaac SimやOmniverseを導入したいと考えている人に向けてIsaac Simで出来ることや要求される環境について解説していきます。
注意:Isaac Simの使い方やインストール方法はこの記事では解説していません。
そもそも Isaac Sim とは?
NVIDIAが開発しているロボットシュミレーション向けのOmniverse App(ここ重要)です。RTXを利用したフォトリアルなグラフィックスやROS2への対応など様々な特徴があります。
IsaacSim以外にもIsaacROSやIsaacSDKがありますが全て別物です。
検証環境
- インストール実行環境
CPUはHyper Threadingや省電力系の機能を無効化し、クロックは3.2GHzに固定しています。
unit | specification |
---|---|
CPU | i9 7980XE |
GPU | RTX3090 |
RAM | 128GB |
SSD | WD BLACK SN750 |
OS | Ubuntu 22.04 |
- NVIDIA Driver バージョン
- 535
- Isaac Sim バージョン
- 2022.2.1
- ROS2 バージョン
- ROS 2 Humble
Isaac Simで利用できる機能
各種センサのシュミレート
- IMU
- LIDAR
- 接地センサ
- 4足ロボットなどに使うような足裏センサ
- 超音波センサ
ROS2
ROS2メッセージをpub/subすることができます。コードを書いて実装することはなくOmniGraphというVisual Scripting Toolを利用する形になります。Pythonで書くisaac sim launchファイルのようなもので指定することもできます。
デフォルトで用意されているPublish可能なメッセージ
この他にも多数あります。
- Point Cloud
- Laser Scan
- IMU
- Image
Subscribe可能なメッセージ
この他にも多数あります。
- Joint State
- Twist
Replicator
機械学習に必要なデータセットを生成できます。実際にNVIDIAが出しているAIモデルにはReplicatorを使って生成されたデータを使って学習したモデルがあります。
- Depth Map
- SemanticSegmentation用のマスク画像
- 3D Bounding Box
- 2D Bounding Box
- RGB画像
Profiler
アクチュエータの動きなどを記録し再生することができます。イメージはRosbag。
Isaac Assets
高品質なロボットモデルが利用できます。この他にもOmniverse側のAssetsも利用できます。
- Unitree Go1 (4歩行ロボット)
- Franka (ロボットアーム)
- O3Dyn (4輪メカナムロボット)
- Transporter (4輪台車ロボット)
- Kaya (小型3輪オムニロボット)
- Carter V2 (2輪ロボット)
Isaac Example
IsaacSimの機能を試せるDemoが用意されています。(画像Leonardo Demo)
- Import Robots (URDFを読み込む)
- Sensors (各種センサーを試せる)
- Input Devices (Gamepatやキーボードからの入力を試せる)
- Manipulation (経路計画や動作計画(IsaacSDK関連のDemo))
- Multi-Robot
- ROS
- Quadruped (4足歩行ロボット(A1)の動作サンプル)
各種ファイルのインポート
読み込めるファイル形式
- USD
- URDF
要求されるPC性能
RTX3090 Power limit = 350W & RTX-Real-Time
Leonardo Demo
ロボットアームのシュミレーション。環境に対する負荷は平均的。
Viewport解像度 | フレームレート(FPS) | VRAM使用量(GiB) | RAM使用量(GiB) |
---|---|---|---|
1280x720 | 82 | 3.8 | 23.2 |
1920x1080 | 73 | 4 | 23.4 |
3840x2160 | 26 | 5.7 | 23.7 |
BrownstoneDemopark
3Dオブジェクトが大量にあるシーン。
Viewport解像度 | フレームレート(FPS) | VRAM使用量(GiB) | RAM使用量(GiB) |
---|---|---|---|
1280x720 | 53 | 8.8 | 23.3 |
1920x1080 | 30 | 9.2 | 23.4 |
3840x2160 | 9 | 12.1 | 31.9 |
Quadruped Example
A1の動作サンプル。物理演算が多いシーン。
Viewport解像度 | フレームレート(FPS) | VRAM使用量(GiB) | RAM使用量(GiB) |
---|---|---|---|
1280x720 | 13 | 3.8 | 23.2 |
1920x1080 | 13 | 4 | 23.3 |
3840x2160 | 13 | 5.6 | 23.8 |
考察
- 全体的に4K解像度にすると一気にパフォーマンスが低下します。
- Leonardo DemoはView Portの解像度を192x1080程度にすれば、ほとんどの環境で動作することがわかりました。
- Quadruped Exampleでは、4脚の制御がボトルネックになっていると考えられます。
シーンの読み込み時間
Omniverse関連は読み込み時間が長いのでフリーズしたかと不安になる。だがNVIDIAを信じてゆっくり待とう。
読み込んだもの | 読み込み時間(s) |
---|---|
Leonardo Demo | 11.7 |
UR10 Palletizing | 30.4 |
ROS/Office Scene | 114.6 |
BrownstoneDemopark_Night | 66.13 |
まとめ
IsaacSimとは
NVIDIAが推進するOmniverseを用いて構築されたロボットシミュレーションアプリです。NVIDIAによると、"Omniverseを使用すれば、多彩な機能を活用できます"とのこと。
IsaacSimの対象者は?
主にロボット研究を行っている人々が対象なのかなと思います。VRAMの使用量が増加するとフレームレートが下がる傾向があり、大規模なシーンでの使用は現実的とは言えません(この傾向がOVXなどのサーバーでは変わると思います)。しかし、ロボットと機械学習を組み合わせた研究や、制御理論を現実に適用する研究を行っている人々にとっては、大変有効なツールとなります。また、機械学習のデータを生成したい方にもおすすめです。
企業はどうすべきか?
企業には、リソースがあるならばOmniverseAppを一から構築することも視野に入れた方がいいと思いますがIsaac Simをそのまま使うor拡張するでもありだと思います。個人的にはUnityやUEよりも、シミュレータとしての相性は良いと思います(UnityやUEはゲーム向けの機能が多すぎるため)。
必要なPC性能
- VRAMが8GB以上あれば、初めて使う人でも問題ないでしょう。フレームレート制限やAsyncシミュレーションのオプションを使用すれば、VRAMが少ない環境やGPU性能が低い環境でも利用可能です。
- 自動運転や大規模な施設等をシミュレーションする場合は、NVIDIA OVX ServerやNVIDIA RTX A6000の導入を検討すべきです(旧Tesla系GPU環境のDGX Stationでは動作しません)。
- 物理演算が非常に多い、四足歩行ロボットのシミュレーションなどでは、CPUのパワーが不足する可能性があるため、高価なGPUは必要ありません。クロック周波数の高いCPUを選択するとより良い結果が得られます。
- 補足として、筆者の環境では、RTX3090とRTX3060 Max-Qの両方で動作確認を行っています。