1. はじめに
先日、Windows11にROS2をインストールしてみたの記事にてWindows11へのROS2のインストールに成功しました。ただ、あれだけですと本当にロボットを動かせるのか?という不安に駆られ、何かロボットを動かすデモでもしてみたいと思っていました。
普通にgazeboを使ってシミュレーションするのもよいのですが、何か他のことをしたいなと思って調べていたところ[1]、[2]という記事からIsaac SimというのがありWindowsにも対応しているということでやってみよう!!と試行したのが本記事の内容になります。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Window11 22H2
- ROS2: Humble
3.手順
手順は[2]の記事であるWindowsでROS 2を頑張って使う ~Isaac Sim+ROS 2~にほぼ沿って行いました。しかし私の環境に合わせて変えたところもありますので、どのような手順を踏んだかを紹介していきたいと思います。
3.1 Isaac Simのインストールの手順
3.1.1. Omniverseのインストール
WindowsでROS 2を頑張って使う ~Isaac Sim+ROS 2~の記載の通り、https://docs.omniverse.nvidia.com/からインストーラをダウンロードしてインストールします。
3.1.2. Isaac Simのインストール
インストールしたOminiverse起動させます。そしてメニューの「更新」→「Isaac Sim」を選択してインストールをクリックすればインストールが始まりました。
なお、WindowsでROS 2を頑張って使う ~Isaac Sim+ROS 2~では「バージョンは2022.02以降。それ以前はWindowsではROSは動かないので注意。」とありましたので、私は以下のように2023.1.1のバージョンを選択しました。
3.2 Nucleus のサービスの環境構築
3.1節の手順だけでIsaac Simは使えるようなのですが、サンプルファイルを使ってデモをしたかったので[3]の記事の「3. Nucleus のサービスをローカル環境に作成する」の章を参考にNucleus のサービスをローカル環境に構築しました。以下の手順で行いましたが、ほぼ参考記事の手順のままです。
まずヘッダーの「NUCLEUS」を選択し、「ローカルNUcleusサービスを追加する」を選択します。
インストールが完了するとOminiverseのタブの下にサービスが立ち上がっていることが確認できました。
3.3 ROS2_Bridgeについて
Isaac Simをスタートさせるとまず以下の画面が出てきます。
ROS2 Bridgeを有効にするには、以下の図で赤枠で囲んだExtensionを選択し
次に以下の図の赤枠のところに「ROS2」と打って検索すると、黄枠で囲んだ「ROS2 BRIDGE」が出てきますのでスライドバーを動かすことにより有効にします。ただ、私の環境ではデフォルトで有効になっていました。
3.4 サンプルファイルの読み込み
サンプルファイルとしては[4]と[5]の記事でも用いられているcarter_warehouse_apriltags_worker.usdを使います。
手順は以下です。
-
以下の図の赤枠のところに「omniverse://localhost/NVIDIA/Assets/Isaac/2022.2.1/Isaac/Samples/ROS2/Scenario/carter_warehouse_apriltags_worker.usd」と打ちます。(これは[5]の記事を参考にしました。)
-
以下の図の黄枠のcarter_warehouse_apriltags_worker.usdを選択します。
-
以下の図の青枠の「Open Original File」をクリックします。
3.5 rostopicを投げロボットを回転させる
まずはrostopicを投げてロボットをゆっくりと回転させたときの動画をお見せします。カメラの映像はロボット視点になっています。
手順としてはまず以下の図のIsaac Simの画面で赤枠で囲んだ再生ボタン(と言っていいかわかりませんけど、、)をクリックします。
そしてコマンドプロンプトを開き以下のコマンドを打ちます。(Isaac Sim内の話ではなく、普通にWindowsのスタートなどから開きます。)
call C:\dev\ros2\local_setup.bat
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.05}}'
そうすると👆の動画のようにロボットがゆっくりと回転していきます。
その他:
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.05}}'のコマンドを打った際に、次の2つのエラーが出ましたので、その解決方法についても記載します。
-
Failed to load entry point 'pub': No module named 'netifaces'
以下のコマンドを実行することで解決しました。管理者権限のwindows powershellpython -m pip install netifaces
-
Failed to load entry point 'pub': No module named 'yaml'
以下のコマンドを実行することで解決しました。管理者権限のwindows powershellpython -m pip install pyyaml
まとめ
上記の手順にて、Windows 11上で構築したIsaac Sim内で読み込んだロボットを、Windows 11上で構築したROS2からのrostopicで、簡単な制御を行うことに成功したと考えられます。これからは、この環境でロボットの自律走行や四足歩行ロボットの制御などを試してみたいと考えています。
参考サイト
[1]WindowsでROS 2を頑張って使う ~Isaac Sim+ROS 2~
[2]Isaac Sim 2022.2でROS2関連にアップデートが入った話
[3]NVIDIA Isaac Sim: インストール
[4]Isaac SimでVisual SLAMを動かしてみる
[5]Isaac Sim ile SLAM ve Haritalandırma