Skip to content

シミュレーションランチャーの使い方

Gazebo ClassicがROS 2のlaunchファイルからシミュレーターを起動できたのと 同じように、このリポジトリではシミュレーションランチャーノードでIsaac Simを 起動できます。

ランチャーはIsaac Simを起動し(初回は数分かかります)、ステージ (環境を記述したUSDファイル)を読み込み、Isaac Sim内に小さな REST APIサーバーを立ち上げます。ロボットや物体は後からこのAPI経由で 追加します(ロボットの生成方法参照)。

コマンドラインからの使用

ros2 run isaac_ros2_scripts launcher

このコマンドは地面だけのデフォルト環境を読み込みます。

ログに"Simulation ready"と表示されたら、REST APIが http://localhost:8080で利用可能になっています。Isaac Simウィンドウの Playボタン(またはPOST /simulation/play)で物理シミュレーションを 開始してください。

パラメータ

パラメータ デフォルト 意味
usd_path 地面のみのステージ 環境として読み込むUSDファイル
fps 60.0 シミュレーターの描画・物理の更新レート [Hz]
time_steps_per_second 600.0 1秒あたりの物理ソルバーステップ数。大きいほど接触や関節の挙動が安定しますが負荷が上がります
real_fps fpsと同じ 実時間でのシミュレーション更新頻度 [Hz]。fpsより小さくすると実時間よりゆっくり進みます
api_port 8080 REST APIサーバーのポート
isaac_path /isaac-sim Isaac Simのインストールディレクトリ

ランチャーのバリエーション

実行ファイル 動作
launcher 標準(重力9.81 m/s²、GUIあり)
launcher_with_headless launcherと同じですがGUIウィンドウなし
launcher_zero_g 無重力(宇宙・水中ロボット向け)
launcher_with_reset 共有メモリのトリガーでシミュレーションのタイムラインを停止・再開できます(Isaac Simを再起動せずにワールドをリセットする用途)

launchファイルからの使用

ROS 2のlaunchファイルから任意のUSDファイルを環境として読み込めます。

import os

from launch_ros.actions import Node
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription

def generate_launch_description():
    stage_description_path = os.path.join(
        get_package_share_directory('stage_description'))

    stage_usd_path = os.path.join(stage_description_path,
                              'meshes', 'USD',
                              'stage.usd')

    isaac_launcher = Node(
        package="isaac_ros2_scripts",
        executable="launcher",
        parameters=[{'usd_path': str(stage_usd_path)}],
    )

    return LaunchDescription([
        isaac_launcher,
    ])

上記の例では"stage_description/meshes/USD/stage.usd"を環境として Isaac Simを起動します。

REST API

ランチャーは以下のエンドポイントを提供します(Swagger UIは http://localhost:8080/docs)。通常は直接呼び出す必要はなく、 ロボットの生成方法で説明するspawn_robotadd_usdpublish_tfノードが代わりに呼び出します。

エンドポイント メソッド 意味
/health GET ヘルスチェック
/spawn_robot POST URDFをインポートし、コントローラーとセンサをセットアップ
/add_usd POST USDアセットをステージへ追加
/publish_tf POST 追加したアセットのリンクのTFを配信
/simulation/play POST シミュレーション開始
/simulation/pause POST シミュレーション一時停止
/simulation/stop POST シミュレーション停止

補足: 初回のIsaac Simの起動には非常に時間がかかります (シェーダーのコンパイルやアセットのダウンロードが行われます)。 ロボットをスポーンするには、Isaac Simが完全に起動している必要があります。