技術解説
【後編】フィジカルAIを支えるOmniverse/Isaac Simによる仮想ロボット自律走行シミュレーション環境の構築
2026.03.02

サービスクリエーション本部
GPUエンジニア
岡本 朋之

1. Occupancy Map の作成
前編ではIsaac SIMやROS 2、NAV2の環境を整えました。後編からは、Nav2が自律走行を行うために必要な地図(Occupancy Map)をIsaac Sim上で作成し、仮想ロボットの自律走行環境を実現していきます。
前編記事の作業内容までで、
- Isaac Sim:仮想ロボットと環境
- ROS 2:通信基盤
- Nav2:自律走行の判断ロジック
- ROSワークスペース:両者を結ぶ連携層
がすべて揃いました。しかし、Nav2は地図が存在しない状態では動作できません。
この章で作成するOccupancy Mapは、Nav2にとっての「世界の見取り図」に相当する、非常に重要な要素です。
このOccupancy Mapとは、ロボットが移動する空間を2次元の格子(グリッド)として表現した地図です。各マスには、
- 障害物がある
- 通行可能である
- 不明である
といった情報が記録されます。Nav2は、この地図をもとに、
- 自己位置を推定し
- 通行可能な経路を計画し
- 障害物を避けながら移動する
という判断を行います。
つまり、Occupancy Mapは自律走行の品質を大きく左右する前提条件だと言えます。
実機ロボットでは、
- 実際にセンサーを動かしてSLAMを行う
- 現地で地図を作成する
といった工程が必要になります。一方、Isaac Simを使う場合は、
- すでに環境の形状が分かっている
- 仮想空間の衝突形状を直接利用できる
という特性があります。そのため本記事では、Isaac Simの機能を使って、安定したOccupancy Mapを事前に生成する方法を採用します。
※本記事では、弊社環境にて2026年1月に検証した手順を紹介します。
まずはIsaac Simを起動し、次のような手順でサンプルシーンをロードします。このサンプルシーンにはROS 2連携設定も含まれているため、比較的容易にROS2やNav2の連携まで実装できることが特徴です。
メニューバーからWindow > Examples > Robotics Examplesを開く

左下の領域に表示されたRobotics Examplesから次のシーンをロード
ROS2 > NAVIGATION > Nova Carter

これで今回利用する仮想環境がロードされます。
念のため、今回必要となる拡張機能が有効化されていることを確認します。
Window > Extensionsを開き、検索画面からros2 bridgeと入力します。
ROS2 BRIDGEがENABLEDかつ、AUTOLOADにチェックが入っていることを確認してください。(無効化されていた場合はこれらを有効化してください)

次に、地図生成に必要となる機能を開きます。
メニューバーからTools > Robotics > Occupancy Mapを開くと

ウィンドウの下側に、Occupancy Mapメニューが展開されます
また、地図生成時には直上からの視点に変更する必要があります。
Viewport内のカメラマーク > Top(もしくはAlt+T)
これにより、空間を真上から見下ろす視点となります。

次に地図生成を実行しますが、その前に地図生成時の干渉を避けるため、仮想ロボット(Nova Carter)のROS連携を一時的に無効化します。
右側のStage > Nova_Carter_ROSを右クリック

Deactivateを選択 ※

※ 地図生成時のみOFFとし、後で戻します。Deleteや非表示化はしないように注意してください
次に、地図生成に使用する環境を選択します。
Stage > Warehouse_Empty_small_realtimeを選択

※公式ドキュメントでは一つ上の階層であるwarehouse_with_forkliftsを選択していますが、弊社検証環境では後工程であるCALCULATE実行時にクラッシュする事象が発生しました。そのため、余分な動的オブジェクトが少なく、地図生成に適した構造からこの環境を選択します。
Occupancy Mapメニューに入り、Use PhysX Collision Geometryにチェックが入っていることを確認し、BOUND SELECTION実行します。
その後、Z Boundを手動で調整します。
Upper Bound Z:0.62(CarterのLiDAR高さ目安)
Lower Bound Z:0.10(床直上)
この設定は、障害物をスライスできるよう、ロボットのLiDAR高さや、床と障害物の位置関係を考慮したものです。
パラメーター調整後、CALCULATEを実行し、計算を開始します。

計算完了後、VISUALIZE IMAGEを選択すると次のような地図データが表示されます。
Rotate Image=180°、Coordinate Type=ROS Occupancy Map Parameters File (YAML) となっていることを確認してください。もし異なる設定で出力された場合は、上記を選択後にRE-GENERATE IMAGE を実行します。
中段に表示されたテキストデータをコピーアンドペーストでYAMLファイルとして保存し、下段の画像データを[Save Image]からPNGファイルとして保存します。これら2ファイルは同一フォルダに保存してください。(先程のワークスペース外を推奨)

保存例:
~/ov_nav2/maps/
├── carter_warehouse_navigation.yaml
└── carter_warehouse_navigation.png
この構成は、Nav2のmap_serverが正しく地図を読み込むために必要です。
なお、YAMLファイルでは対応するPNGファイルの名称とパスを指定します。この指定値と、実ファイル名やパスが異なる場合はエラーとなりますのでご注意ください。また、この指定値についてデフォルトは相対パス記述ですが、絶対パス指定にしないとNav2との連携に失敗する事象を弊社環境において確認しています。
例:carter_warehouse_navigation.yaml
image: /home/username/ov_nav2/maps/carter_warehouse_navigation.png resolution: 0.05 origin: [-11.975, -17.975, 0.0000] negate: 0 occupied_thresh: 0.65 free_thresh: 0.196
なお、公式ドキュメントは、デフォルト指定のYAMLファイルを生成したデータで上書きしていますが、本手順では別ディレクトリ・別ファイルを作成する形としております。
地図データ生成後、一時的に停止していたNova Carterを再度有効化します。
- 右側のStage > Nova_Carter_ROSを右クリック
- Activateを選択
最後に、ウィンドウ左側の再生ボタンを押し、シーンを再生状態にしておきます。(画像の一番下のボタンです)

2. Nav2 起動と RViz による自律走行の実行
この章では、これまでに構築した環境を用いて、Isaac Sim上の仮想ロボットをNav2により自律走行させる最終ステップを実行します。ここまでで、
- 仮想環境とロボット(Isaac Sim)
- 通信基盤(ROS 2 Jazzy)
- 自律走行の判断ロジック(Nav2)
- 連携用ROSワークスペース
- 自律走行用の地図(Occupancy Map)
がすべて揃いました。本章では、「判断(Nav2)」→「行動(Isaac Sim)」→「再観測」
という循環構造を、実際の動作として確認します。
まず、ROS 2とワークスペースの環境を有効化します。この手順は新しいターミナルを開くたびに必須です。
(有効化済みのターミナルを継続利用する場合は不要)
source /opt/ros/jazzy/setup.bash source ~/Isaac Sim-ros_workspaces/jazzy_ws/install/local_setup.bash echo $ROS_DISTRO # jazzyを確認
次にNav2を起動します。引数として先程保存したyamlファイルを指定します。
(公式ドキュメント側はデフォルトのyamlファイルを上書きしているため、map:以降の引数無しで起動しています)
※sudoを利用すると連携に失敗するため注意
ros2 launch carter_navigation carter_navigation.launch.py \ map:=~/ov_nav2/maps/carter_warehouse_navigation.yaml
このlaunchファイルでは、
- map_server(地図の読み込み)
- localization(自己位置推定)
- planner / controller(経路計画・制御)
- lifecycle管理
といったNav2の主要ノード群がまとめて起動します。
ここまで問題なければ、Nav2が地図データを読み込み、Isaac Simのシーンと連携した状態で立ち上がります。
立ち上がった状態では、Isaac SimとNav2でロボットの位置が一致しているはずです。この状態から、いよいよ自律走行を実行します。
- RViz上部メニューから「2D Goal Pose」を選択
- 地図上の任意の地点をクリック
- 向きをドラッグして指定
するとNav2は次のような動作をします
- 地図をもとに経路を計画し
- 障害物を回避しながら
- 目標地点へ向けて移動指示を生成
その結果、Isaac Sim上のNova Carterが自律的に走行します。

正常動作時の挙動
- ロボットが滑らかに移動する
- 障害物を避けながら進路を変更する
- ゴール付近で減速・停止する
うまく動かない場合の確認点
- 初期位置が正しく設定されているか
- 地図(YAML / PNG)が正しく読み込まれているか
- Isaac Sim側のシーンが再生状態になっているか
本章で行った操作により、仮想環境上で「観測 → 判断 → 行動 → 再観測」
という基本的な循環構造を確認できました。
今回の構成では、
- Isaac Simが「仮想の現実世界」
- ROS 2が「情報の通り道」
- Nav2が「自律的な判断」
という役割を担っています。
3. まとめ
今回構築した環境は、つぎのような検証へ自然に発展させることができます。
- 強化学習や行動学習との組み合わせ
- 複数ロボットによる協調ナビゲーション
- 実機ロボットへの構成移行
- デジタルツインを活用した事前検証
つまり本記事の内容は、フィジカルAI・ロボティクス検証の出発点に位置付けられます。
実機を用意する前に、
- 構成を理解し
- 動作を確認し
- 課題を洗い出す
ための手段として、このような仮想検証環境は非常に有効です。
- 実機ロボットとの連携を検討したい
- 複雑な環境やタスクを扱いたい
- フィジカルAIの応用を検証したい
といった方は、Omniverse / Isaac Simを活用した検証を行っている弊社へぜひご相談ください。
また、次回はフィジカルAIの根幹とも言えるAIモデル”Cosmos Reason”と本環境を連携させた検証を行います。ご期待ください!
▶︎ お問い合わせはこちら
※「NVIDIA Omniverse」「Isaac Sim」「NVIDIA RTX 6000 Ada」「CUDA」「Cosmos」は、米国およびその他の国におけるNVIDIA Corporationの商標または登録商標です。
※「ROS」はOpen Source Robotics Foundation, Inc.の商標です。



