Ubunutu22.04の環境下においてIsaac Sim+ROS2を試そうとしてハマったところ

# 1. はじめに
[Windows11環境下においてIsaac Sim+ROS2を試してみる　ロボット回転編](https://qiita.com/bebebefu/items/cae6f99e1bbec35c5405)の記事にて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: インストール](https://zenn.dev/sotahi/articles/2ee0fcf7bc4e7b)([[1]](#参考記事やサイト))の記事の手順の通りに行いました。違いとしてはインストールしたバージョンが私の場合は2023.1.1であったところです。

## 3.2 ROS2のインストール
以下のサイト([[2]](#参考記事やサイト))の手順をそのまま行いました。

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html


## 3.3 ROS2_Bridgeについてうまくいかなかった方法（ここでハマる！！）
Omniverse画面においてLIBRARYのタブからでIsaac Simを選択し以下の黄枠で囲んだLaunchをクリックします。
![omniverseより.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/26de4468-0bb7-07cd-9697-588116694db0.png)

そうすると以下の画面が出てきますが、
私は[Omniverse IsaacSim » Installation » ROS & ROS 2 Installation](https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_ros.html)([[3]](#参考記事やサイト))を参考に、~/.ros/の中にfastdds.xmlというファイルを作成し、以下の画面の“Extra Args”の中に「export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml」を追記（黄枠）した上で、緑枠で囲んだところでomni.isaac.ros2_bridgeを選択して「START」をクリックしました。
![初期launch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/3ec45366-104e-59d4-ab4b-e35c91945739.png)

そして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」というエラーが出てスライドバーが動きませんでした。

![Screenshot from 2024-04-14 06-50-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/963ba458-5591-4a3e-8ce6-821b5e3b04a5.png)


## 3.4 ROS2_Bridgeについてうまくいった方法
以下のサイト([[4]](#参考記事やサイト))の記載を参考にして対処しました。

https://forums.developer.nvidia.com/t/cant-launch-isaac-sim-version-2023-1-0-with-ros2-selected/269906


手順としてはまず以下の図のIsaac simを起動させる画面で、黄枠で囲んだ"Open in Terminal"をクリックしてターミナルを起動させます。

![terminal開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/d3ef986e-9271-c4d3-372a-eab704392759.png)

そして、以下のコマンドを実行します。

```: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が起動します
```:terminal
./isaac-sim.sh
```

そして起動したIsaac SimのメニューバーのWindow>Extensionsを選択して「ROS2」を検索してみますと、以下の結果が返ってきました。ROS2 BRIDGEが有効(ENABLE)になっています。
![Screenshot from 2024-04-14 06-59-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/cb1e1931-2e36-28cb-d43c-ed61c90b97e0.png)

試しに[Windows11環境下においてIsaac Sim+ROS2を試してみる　ロボット回転編](https://qiita.com/bebebefu/items/cae6f99e1bbec35c5405)の記事で行ったように、「omniverse://localhost/NVIDIA/Assets/Isaac/2022.2.1/Isaac/Samples/ROS2/Scenario/carter_warehouse_apriltags_worker.usd」をIsaac Simで読み込み以下のコマンドを打ったところ、ロボットがゆっくり回転するところも再現できました。
```:terminal
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画面において以下の図の赤枠で囲んだ「三」のところをクリックします。

![start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/9f215fd5-dfa3-27dd-41a5-2b338970fa5a.png)

そうすると以下のポップアップ画面が出ますので、赤枠で囲んだファイルマークのところをクリックします。
![popup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/614f7e54-eae8-75a1-f692-e7737bce22b4.png)

クリックすると以下のようにファイルの保存先が表示されますので、「isaac-sim.sh」を開きます（以下の図で選択されているファイル）。

![file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/328e2e8d-ad25-fefe-ebd9-5a0fc9c5b400.png)

そして「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"をクリックします。

![Screenshot from 2024-07-23 22-16-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/a78c9fa7-8f6a-fd18-acbb-3de7eabf0c46.png)

そうしますと以下のように、Isaac Sim起動時にROS2 Bridgeが有効な状態になることが確認できました。

![Screenshot from 2024-07-23 22-23-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/e5352f91-eb97-b3c1-71c5-18739ae5a29b.png)



# 参考サイト
[1][NVIDIA Isaac Sim: インストール](https://zenn.dev/sotahi/articles/2ee0fcf7bc4e7b)
[2][Installation Ubuntu (Debian packages)](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html)
[3][Omniverse IsaacSim » Installation » ROS & ROS 2 Installation](https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_ros.html)
[4][Can't launch Isaac Sim Version 2023.1.0 with Ros2 Selected](https://forums.developer.nvidia.com/t/cant-launch-isaac-sim-version-2023-1-0-with-ros2-selected/269906)