ubuntu20.04・ROS NoeticでRTAB-MAPを動かす（1）

# はじめに
ubuntu20.04LTS上のROS Noeticでrtabmap_rosを動かしたのでその方法をメモしました。

# 動作環境

以下の環境で動作確認しました。

|項目  |値  |
|---|---|
|CPU  |Ryzen5  |
|OS |Ubuntu20.04LTS|
|ROS  |Noetic Ninjemys  |

# ROS Noeticのインストール

すでにROSが入っている方は飛ばしてください。

http://wiki.ros.org/noetic/Installation/Ubuntu

aptへROSのダウンロード先の登録

```bash
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
```

公開鍵の取得

```bash
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
```

インストール

```bash
$ sudo apt update
$ sudo apt install ros-noetic-desktop-full
```

環境変数の設定

```bash
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
```

ROSパッケージインストーラのインストール

```bash
$ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
```

rosdepの初期化

```bash
$ sudo rosdep init
$ rosdep update
```

ワークスペースの作成

```bash
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
```



# RTAB-MAPのインストール　(aptから)
以下コマンドでインストールします。

```bash
sudo apt install ros-noetic-rtabmap-ros ros-noetic-rtabmap
```

# RTAB-MAPのインストール　(ソースからビルド)
なぜか自分の環境ではaptからインストールすると後述のデモが動かなかったのでソースからビルドしました。

以下のBuild from sourceを参照
https://github.com/introlab/rtabmap_ros

以下でRTAB-MAP本体のインストールとビルド

```bash
$ cd ~
$ git clone https://github.com/introlab/rtabmap.git rtabmap
$ cd rtabmap/build
$ cmake .. 
$ make
$ sudo make install
```


rtabmap_rosのインストールとビルド

```bash
$ cd ~/catkin_ws
$ git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
$ catkin_make -j1
```


# デモの実行

まず以下からrosbagをダウンロードします。
[demo_mapping.bag](https://docs.google.com/uc?id=0B46akLGdg-uadXhLeURiMTBQU28&export=download)

ターミナルを開いて以下を実行

```bash
roslaunch rtabmap_ros demo_robot_mapping.launch 
```

別のターミナルでrosbagをダウンロードしたディレクトリで以下を実行

```bash
rosbag play --clock demo_mapping.bag
```

このようなGUI画面が表示されます。
![Screenshot from 2021-01-14 23-41-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399606/28810ed4-71e1-24f1-e7aa-b74f29009998.png)

GUI画面の見方は以下記事を参考にしてください。
[RTABMAPの使い方](https://qiita.com/k65c1/items/7a4df58b50a587fad3e2)

次にデモ実行時のrqt_graphを見ていきます。

```bash
rqt_graph
```

![rosgraph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399606/f35ddd3b-89af-6932-a671-4629b6cedff8.png)


rtabmapには

+ /jn0/base_scan
+ /tf
+ /data_throttled_image/compressed
+ /data_throttled_image_depth/compressedDepth,
+ /data_throttled_camera_info

のトピックが入力されています。
/rtabmap/rtabmapvizというのはGUI画面のノードです。


/data_throttled_image/compressedはRGB画像、/data_throttled_image_depth/compressedDepthはDepth画像、/data_throttled_camera_infoはカメラパラメータです。
/jn0/base_scanトピックはLaserScan型で2DLiDARのスキャンを入力しているようです。



# 最後に
次回はRealSense L515を使用して環境のSLAMを行います。
aptからrtabmap_rosをインストールしてデモが動いた方はぜひコメントください。

# 参考
rtabmap_ros - ROS Wiki
http://wiki.ros.org/rtabmap_ros

RTABMAPの使い方
https://qiita.com/k65c1/items/7a4df58b50a587fad3e2

RealsenseでSLAMをする。
https://qiita.com/k65c1/items/0d9039c021ecbb26b04e

RTABMAPをよむ  前篇
https://qiita.com/ohtt/items/b3c00a62757244a6e16c

RTAB-Mapのデモを動かす
https://veloart-intelligence.com/blog/run-rtab-map-demo/