【Isaac Sim × Isaac Lab入門】#1 PythonスクリプトでIsaac Simに空のシーンを表示してみる
以下の記事にて、NVIDIA Isaac Sim をIsaac Labから起動することができた。
今回からは、Isaac Simの3D環境内をPythonスクリプトで操作する方法を調査する。
今回はPart1として、公式チュートリアルを参考に、
- Pythonスクリプトを実行し、Isaac Simで空のシーンを開く
というシンプルな操作を試してみる。
この記事の内容を実施すると、以下のようにIsaac Simが起動し、空のシーンが開く。
手順
前回までの手順で、C:\Users\{ユーザ名}\work\
にIsaacLab
ディレクトリが配置されている状況からスタートする。
手順1. ディレクトリの作成
IsaacLabと同じ階層にpython_scripts
という、Pythonスクリプト配置用のディレクトリを作成する。
(今回は分かりやすいように上記の場所にしたが、場所はどこでも良い。)
ディレクトリ作成後は、以下のようになる。
C:\Users\{ユーザ名}\work\
├─ IsaacLab
└─ python_scripts
└─ create_empty_scene.py
手順2. Pythonスクリプトの作成
次に、作成したpython_scripts
ディレクトリの中に、create_empty_scene.py
というPythonスクリプトを作成する。
そしてcreate_empty_scene.py
の中身に、以下の空のシーンを作成するコードをコピーして貼り付ける。このコードは、公式のコードを参考に、ステップを整理したものである。
import argparse
from isaaclab.app import AppLauncher
# ステップ0. 引数を受け取る
parser = argparse.ArgumentParser(description="Tutorial on creating an empty stage.")
AppLauncher.add_app_launcher_args(parser)
args_cli = parser.parse_args()
# ステップ1. シミュレータの起動
app_launcher = AppLauncher(args_cli)
simulation_app = app_launcher.app
# ステップ2. Isaac Simからモジュールをインポート
from isaaclab.sim import SimulationCfg, SimulationContext
# ステップ3. シミュレーションコンテキストの設定
sim_cfg = SimulationCfg(dt=0.01)
sim = SimulationContext(sim_cfg)
# ステップ4. ビューポートを映すカメラの位置・注視点を設定
sim.set_camera_view([2.5, 2.5, 2.5], [0.0, 0.0, 0.0])
# ステップ5. シミュレーションの実行
sim.reset()
while simulation_app.is_running():
sim.step()
# ステップ6. シミュレーションを終了
simulation_app.close()
スクリプトの流れはコメントに記載の通りだが、詳細は次回以降調査する。
手順3. 実行前の事前準備
Isaac SimとIsaac Labを実行する事前作業として、パスを通す必要がある。
コマンドプロンプト上で、以下を実行する。
cd C:\Users\{ユーザ名}\work\IsaacLab
set ISAACSIM_PATH="C:/isaacsim"
set ISAACSIM_PYTHON_EXE="%ISAACSIM_PATH:"=%\python.bat"
isaaclab.bat --install
手順4. 実行
コマンドプロンプト上で、以下を実行する。
isaaclab.bat -p ..\python_scripts\create_empty_scene.py
実行が成功すると、Isaac Simが起動し、以下のような空のシーンが開く。
シミュレーションを終了するときは、
- コマンドプロンプトで「Ctrl+C」を押す
- シミュレータ画面を「×ボタン」で消す
のどちらかを実行する。
Next Action
今回はPythonスクリプトによって、Isaac Simで空のシーンを開くことができた。
ただし、Pythonスクリプトの中身についてはまだ理解できていない。
今後の記事では、今回使用したPythonスクリプトを理解することと、空のシーンの中にキューブを置く方法、カメラを操作する方法などを検討する。
関連記事↓
Discussion