要約
- Ubuntu 22.04 に RTX GPU を搭載し、Omniverse Launcher を通じて Isaac Sim をインストール
- USD/URDF ファイルを用いてロボットをインポートし、PhysX を設定して現実的な物理シミュレーションを実現
- Replicator を活用し、ドメインランダマイゼーションによる合成データ生成
- ROS 2 Humble との連携は
isaac_rosパッケージを介して実装 - Omniverse Nucleus を用いたクラウドインスタンスでのヘッドレス実行
1. インストールとシステム要件
ハードウェア要件
Isaac Sim の動作には以下が必要となります:
- GPU:NVIDIA RTX 30/40シリーズ もしくは A100/H100 (最低 RTX 2080 Ti 相当)
- CPU:8コア以上(Intel Xeon または AMD Ryzen 推奨)
- RAM:32GB以上(大規模シーンでは64GB推奨)
- ストレージ:20GB以上(NVMe SSD 推奨)
ソフトウェア前提条件
# Ubuntu 22.04 (確認済み)
sudo apt update
sudo apt install -y nvidia-driver-535 nvidia-cuda-toolkit
sudo apt install -y ros-humble-desktop ros-humble-isaac-ros
インストール手順
-
Omniverse Launcher のダウンロード
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" sudo apt update sudo apt install -y nvidia-omniverse-launcher -
Omniverse Launcher を通じた Isaac Sim のインストール
- Omniverse Launcher を起動
- Exchange を選択し、「Isaac Sim」で検索 → 2023.1.1 (最新安定版)をインストール
-
インストールの確認
./isaac-sim.sh期待される出力:
[Isaac Sim] 起動中... [Omniverse Kit] 起動中...
一般的なインストールエラー
-
エラー:
CUDA の初期化に失敗対処法:NVIDIA ドライバのインストールを確認nvidia-smiGPU 情報が表示され、エラーがないことを確認
-
エラー:
ROS 2 Humble の依存関係が不足対処法:ROS 2 Humble をインストールsudo apt install ros-humble-isaac-ros source /opt/ros/humble/setup.bash
2. ロボットと USD シーンのインポート
サポートされているファイル形式
| フォーマット | 拡張子 | 備考 |
| Universal Scene Description | .usd | Isaac Sim で推奨される形式 |
| URDF | .urdf | isaac_ros を用いて USD に変換 |
| SDF | .sdf | Gazebo フォーマット(ros2 run urdf_to_usd で変換) |
URDF ロボットのインポート(例:Franka Emika Panda)
-
Franka URDF のダウンロード
mkdir -p ~/isaac_sim_ws/src cd ~/isaac_sim_ws/src git clone https://github.com/ros-industrial/franka_ros.git colcon build --symlink-install -
URDF を USD に変換
ros2 run urdf_to_usd urdf_to_usd --input franka_ros/urdf/franka_panda.urdf --output franka_panda.usd -
Isaac Sim で読み込み
- Isaac Sim を起動
./isaac-sim.sh - Isaac Sim UI で:
- ファイル → シーンのインポート
franka_panda.usdを選択- 開く をクリック
- Isaac Sim を起動
ロボットのジョイントとセンサーの設定
USD ファイルを編集し、センサー(カメラ、IMU など)を追加します:
def Camera "right_hand_camera" (
xformOp:transform = @right_hand_camera_xform
sensor:camera = {
focalLength = 24.0
horizontalAperture = 10.0
clippingRange = (0.01, 100.0)
}
)
3. PhysX シミュレーションとセンサー モデル
物理特性の設定
ロボットの USD ファイルを編集し、物理パラメータを調整します:
def Xform "panda_link0" (
xformOp:transform = @panda_link0_xform
physics:collisionApproxConvexHull = {
approxConvexHull = true
collisionEnabled = true
}
physics:rigidBody = {
mass = 0.5
enableGravity = true
}
)
現実的なセンサーの有効化
-
カメラ センサーの追加
def Camera "head_camera" ( xformOp:transform = @head_camera_xform sensor:camera = { focalLength = 16.0 horizontalAperture = 8.0 clippingRange = (0.01, 50.0) resolution = (640, 480) } ) -
深度センサーの有効化
# Python スクリプト(例:`simulation_app.py`) from omni.isaac.sensor import Camera camera = Camera(prim_path="/World/head_camera", resolution=(640, 480)) camera.enable_depth()
シミュレーションから現実へのドメインランダマイゼーション
Isaac Sim の Replicator を用いてドメインランダマイゼーションを実装します:
from omni.isaac.replicator import ReplicatorClient
# Replicator の初期化
replicator = ReplicatorClient()
# ランダマイゼーションパラメータの定義
randomization_params = {
"physics": {
"friction": {"min": 0.1, "max": 0.9},
"mass": {"min": 0.5, "max": 2.0}
},
"lighting": {
"intensity": {"min": 0.5, "max": 2.0}
}
}
# シーンへの適用
replicator.randomize_scene(randomization_params)
4. Replicator を用いた合成データ生成
RGB-D データセットの生成
-
Replicator パイプラインの作成
from omni.isaac.replicator import ReplicatorClient, Pipeline # 初期化 replicator = ReplicatorClient() # パイプラインの定義 pipeline = Pipeline() pipeline.add(Pipeline.create_camera_sensor("rgb_camera", resolution=(1280, 720))) pipeline.add(Pipeline.create_camera_sensor("depth_camera", resolution=(1280, 720), depth=True)) # ランダマイゼーションの追加 pipeline.add(Pipeline.randomize_physics(friction=(0.1, 0.9))) # データのエクスポート pipeline.add(Pipeline.write_to_disk("/data/rgb", format="png")) pipeline.add(Pipeline.write_to_disk("/data/depth", format="exr")) -
パイプラインの実行
python3 replicator_pipeline.py --headless
期待される出力
/data/
├── rgb/
│ ├── frame_000001.png
│ ├── frame_000002.png
│ └── ...
└── depth/
├── frame_000001.exr
├── frame_000002.exr
└── ...
5. ROS 2 とのブリッジ統合
Isaac Sim と ROS 2 Humble の連携
-
ROS 2 Humble ブリッジのインストール
sudo apt install ros-humble-isaac-ros-bridge -
ブリッジの起動
ros2 launch isaac_ros_bridge isaac_ros_bridge.launch.py -
ジョイントステートトピックの公開
# Python スクリプト(例:`joint_publisher.py`) from isaac_ros_bridge import IsaacRosBridge bridge = IsaacRosBridge() bridge.publish_joint_states("/franka_panda/joint_states") -
ROS 2 トピックへのサブスクライブ
ros2 topic echo /franka_panda/joint_states
一般的な ROS 2 の問題
-
エラー:
TF トランスフォームに失敗対処法:robot_state_publisherが実行中であることを確認ros2 run robot_state_publisher robot_state_publisher --ros-args -p use_sim_time:=true -
エラー:
ノード /isaac_ros_bridge が見つかりません対処法:ブリッジが起動していることを確認ros2 node list
6. ヘッドレス実行とクラウド展開
Isaac Sim のヘッドレス実行
./isaac-sim.sh --headless --no-window --no-gui
AWS クラウドへの展開
-
EC2 インスタンスの起動
- g5.2xlarge (NVIDIA T4 GPU)または g5.4xlarge (RTX 6000 Ada)を使用
- AMI: Deep Learning AMI (Ubuntu 22.04)
-
AWS 上での Isaac Sim のインストール
# 上記と同じインストール手順を実行 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo apt install -y nvidia-omniverse-launcher -
ヘッドレスシミュレーションの実行
nohup ./isaac-sim.sh --headless --no-window --no-gui > simulation.log 2>&1 &
Omniverse Nucleus を用いたマルチユーザーコラボレーション
-
Nucleus サーバーの起動
omniverse-nucleus-server --headless --port 3000 -
クライアントの接続
./isaac-sim.sh --nucleus-host <AWS_IP> --nucleus-port 3000
次のステップ
- セットアップのテスト:Isaac Sim の Manipulation 拡張機能を用いて、簡単なピックアンドプレイスタスクを実行
- 合成データの生成:Replicator を活用し、10,000 枚の RGB-D イメージをトレーニング用に生成
- クラウドへの展開:AWS EC2 の G5 インスタンスを用いて、10台以上のロボットへスケールアウト
より高度な Physical AI ワークフローを実現するためには、Hyperion コンサルティング の AI ツールコンサルティング をご活用ください。当社では、ロボティクス プロジェクトの加速をサポートいたします。
