1. はじめに
Windows11環境下においてIsaac Sim+ROS2を試してみる ロボット回転編の記事にてWindows 11上で構築したIsaac Sim内で読み込んだロボットを、Windows 11上で構築したROS2からのrostopicで、簡単な制御を行うことができました。
しかしその後、調査・試行をしていく中でSLAMなどをしようする場合、やはりWindowsでは限界があるなという結論に至りました。そこでUbuntuの環境に移行したのですが、なんと!Windows環境下では簡単にできたIsaac SimとROS2の連携にハマりました。その際にどのように解決したかを記載したのが、本記事の内容になります。
注:本件は私の環境にかなり依存したトラブルの可能性が高いと思ってます。なので、すべての人にこれが当てはまるわけではないと思いますが、トラブル解決の一助になれば幸いです。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
- ROS2: Humble
- Isaac Sim: 2023.1.1
- Nvidia Driver: 525.147.05 (525.85.05が推奨されていますが、私の環境ではインストールできませんでした)
3.手順
3.1 Isaac Simのインストール
UbuntuへのIsaac Simのインストール方法はNVIDIA Isaac Sim: インストール([1])の記事の手順の通りに行いました。違いとしてはインストールしたバージョンが私の場合は2023.1.1であったところです。
3.2 ROS2のインストール
以下のサイト([2])の手順をそのまま行いました。
3.3 ROS2_Bridgeについてうまくいかなかった方法(ここでハマる!!)
Omniverse画面においてLIBRARYのタブからでIsaac Simを選択し以下の黄枠で囲んだLaunchをクリックします。
そうすると以下の画面が出てきますが、
私はOmniverse IsaacSim » Installation » ROS & ROS 2 Installation([3])を参考に、~/.ros/の中にfastdds.xmlというファイルを作成し、以下の画面の“Extra Args”の中に「export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml」を追記(黄枠)した上で、緑枠で囲んだところでomni.isaac.ros2_bridgeを選択して「START」をクリックしました。
そしてIsaac Simが起動するので、上のメニューバーのWindow>Extensionsを選択して「ROS2」を検索してみますと、以下の結果が返ってきました。ROS2 BRIDGEが有効になっていません(DISABLED)。しかもスライドバーを動かして有効(ENABLE)にしようとしても「[Error] [omni.isaac.ros2_bridge.plugin] Could not load ROS2 Bridge due to missing library dependencies, please make sure your sourced ROS2 workspace has the correct packages/libraries installed」というエラーが出てスライドバーが動きませんでした。
3.4 ROS2_Bridgeについてうまくいった方法
以下のサイト([4])の記載を参考にして対処しました。
手順としてはまず以下の図のIsaac simを起動させる画面で、黄枠で囲んだ"Open in Terminal"をクリックしてターミナルを起動させます。
そして、以下のコマンドを実行します。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.ros2_bridge/humble/lib
続けて以下のコマンドを実行するとIsaac Simが起動します
./isaac-sim.sh
そして起動したIsaac SimのメニューバーのWindow>Extensionsを選択して「ROS2」を検索してみますと、以下の結果が返ってきました。ROS2 BRIDGEが有効(ENABLE)になっています。
試しにWindows11環境下においてIsaac Sim+ROS2を試してみる ロボット回転編の記事で行ったように、「omniverse://localhost/NVIDIA/Assets/Isaac/2022.2.1/Isaac/Samples/ROS2/Scenario/carter_warehouse_apriltags_worker.usd」をIsaac Simで読み込み以下のコマンドを打ったところ、ロボットがゆっくり回転するところも再現できました。
source /opt/ros/humble/setup.bash
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}}'
なお、「export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml」のコマンドも打った方がいいのかと思ったのですが打たなくても問題なくROS2 BRIDGEは有効になっていました。
4.まとめ
上記の手順にて、Ubunutu22.04の環境下においてIsaac SimとROS2を連携させることができました。WindowsでハマらなかったところをUbuntuでハマってしまったのはかなり意外でしたが、これでとりあえず環境は整いました。今後はこの環境でロボットの自律走行や四足歩行ロボットの制御などを試してみたいと考えています。
追加情報 2024/7/27
Isaac Simを起動するたびにターミナルでコマンドを入力するのは手間がかかるため、GUIから簡単にROS2 Bridgeを有効にする方法が分かりましたで、ここで報告します。
まず、Omniverse画面において以下の図の赤枠で囲んだ「三」のところをクリックします。
そうすると以下のポップアップ画面が出ますので、赤枠で囲んだファイルマークのところをクリックします。
クリックすると以下のようにファイルの保存先が表示されますので、「isaac-sim.sh」を開きます(以下の図で選択されているファイル)。
そして「isaac-sim.sh」に以下のコマンドを追記します。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.ros2_bridge/humble/lib
これを追記したあとに、Isaac Simを起動するための画面を
以下のように設定し、"START"をクリックします。
そうしますと以下のように、Isaac Sim起動時にROS2 Bridgeが有効な状態になることが確認できました。
参考サイト
[1]NVIDIA Isaac Sim: インストール
[2]Installation Ubuntu (Debian packages)
[3]Omniverse IsaacSim » Installation » ROS & ROS 2 Installation
[4]Can't launch Isaac Sim Version 2023.1.0 with Ros2 Selected