ROS2  Humble Navigation２ 設定メモ

# 0．レシピ
**Isaac SIM 2022.2.0のサンプルでNavigation２を行う**

* 社内向け(誰かやってるの？)手順書の体をとっています。
* そこそこのスペックでも動く（Warehouse）を使用。
    * 下はRTX3060、上は3090を使用。
    * Anacondaで環境作っています。

**Isaac SIMサンプル比較**

| 項目 | 2022.1.x | 2022.2.0 |
|:-----------|------------:|:------------:|
| Ubuntu バージョン      | 20.04        | 22.04         |
| Carter     | V1      | V1のまま     |
| Moveit2       | Foxy版        | Humble版         |
| ROS2         | **Foxy**          | **Humble(推奨)**           |




:::note info
備考

* うっかりFoxyは消してしまいました。
* 予備(自前)機はFoxyなのですが、IsaacSIM内のそこそこ追加機能は使えています。

:::


# 1．Humbleセットアップ（バイナリ版）

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

* Set localeの項目から開始します。
    * 私はロケールが UTF-8 だったので、次のリポジトリ設定から行いました。

* 説明は本家に任せて、ざっとコピペしていきます。   

<details><summary>公式より引用（コマンドライン）</summary>



```Ubuntu:ROSインストール準備

sudo apt install software-properties-common
sudo add-apt-repository universe

sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null


```
</details>

:::note warn
注意
公式以外や初期版？ではapt-keyで入っているところがあり、難儀しました。最新の情報と照合してください。

:::

## 更新確認からのコンポーネントインストール

* 一式セットのdesktopで進めます。

```Ubuntu:ROS2 Humbleインストール

sudo apt update
sudo apt upgrade -y

sudo apt install ros-humble-desktop
sudo apt install ros-dev-tools

echo "source /opt/ros/humble/setup.bash" >> .bashrc

```

### 残りの作業

* Talker-listener：IsaacSIMではこれが正常でもですが…確認しておきます。
![Screenshot from 2023-03-02 14-49-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/65983cdf-400b-1fc3-13cb-6f1343681227.png)



* 2022.2.0に付属のサンプルをcolcon build します。
    * どうみても中身は1.0と変わりなさそうです。
    * この後出るトラブルからして、同じっぽい。
    * **Moveitでダメだしされる場合は先にMoveit2をインストールしておきます**


# 2．Navigation２その他コンポーネント追加

https://docs.nav2.org/development_guides/build_docs/index.html


https://moveit.ros.org/install-moveit2/binary/

* こちらはHumbleと一緒にインストールされてしまっているかもしれません。

```Ubuntu:Navigation2インストール

sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup '~ros-humble-turtlebot3-.*'

```


```Ubuntu:Moveitインストール

sudo apt install ros-humble-moveit

```

# 3．Isaac SIM起動・動作確認

* 2022.1系からメニューの位置が変わっています。地味にサブメニューも変わっています。
* 不満ながらもこれまで通り、ROS2 Humbleを有効にして起動します。


### 失敗例．ROS2 Humbleが無効な場合の表示(ROS2は選択可能）
![fail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/6c39dcf3-297b-6775-c36f-b7450ec6a473.png)


 **すべてがunknownで地図が非表示**
* こちらはMoveitがない状態でした…
* ROS2 removeと再インストールはしてワークスペースは消す前にhumble環境でビルドしたケースです
* なお、'ros2 topic echo /tf'はしっかり応答しています。
     
https://forums.developer.nvidia.com/t/isaac-2022-2-0-humble-navigation-error/242775/3?u=mikaneda


* ビルドしたNavigationフォルダ内のparamにあるyamlファイルを変更します。

> #robot_model_type: "Differential"
> robot_model_type: "nav2_amcl::DifferentialMotionModel"
>> yaml ファイルのacmlにあるロボットモデルのパラメータを上記の通り変更します。

* よく見るとNavigation2 のリファレンスもFoxyの時と変わっていました。

> 2 - Under bt_navigator: (Added all the plugins that were missing)
>> bt_navigator: 配下の-nav2 xxxを指摘の通り置き換えてみます。

https://navigation.ros.org/configuration/packages/configuring-amcl.html

:::note info
- ロボ担外れてみかくにんですが、こちらを見たほうがいいかもしれません
:::

https://docs.nav2.org/configuration/index.html


:::note info
参考
* 既存のパラメータの場合、Carterが動かなかったです。
* nav2のパラメータが既存のものでは少なかったためでしょうか。

```Terminal:launchファイル実行画面

♯ 表示例：Navigationしてみた場合
[rviz2-1] Start navigation
[rviz2-1] [INFO] [1678848958.275447508] [_]: NavigateToPose will be called using the BT Navigator's default behavior tree.
[rviz2-1] [ERROR] [1678848958.275850774] [_]: Goal was rejected by server

```

:::

### 動作例

![seccess2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/f739e962-49c4-1d1e-1820-5aff1fb4c87e.png)



<details><summary>参考：Ubuntu20.04での様子</summary>

* **IsaacSIM は同じく2022.2.0ですが、こちらはFoxyです**

![2004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/281e59e0-0927-f094-317d-0270660176ca.png)

Navigation２の画面が違いますが、Window>ExtensionでROS2 Humbleを有効にします

</details>




:::note info
教訓
* ROS2 humbleがのコンポーネントが不足なくインストールされている
* Navigation２のパラメータは最新のものを参考に
* もう少し、機能をさぐってみます


:::

:::note warn
注意
社内的にIssacSIM関連外れていて、久々にOmmniverse触ってミスったのでリマインダー
- IsaacSIMのバージョンによってメニューの場所はことなりますが必ず「Extension＞ROS Bridge をROS2のものにチェックを入れ替えてから実行しましょう。
- 最初、気が付きませんでした・・・トホホ
:::