ラズパイ4/BusterにROSのmelodicを入れる



![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) Qiitaに初投稿します。Ninagawa_Izumiです。なにかお役に立てれば。

## やること
ラズパイ4のBusterでROSのmelodicが動くようにします。
各所を参考にさせていただきつつ、とにかくシェルコマンドを打ち続ければOKな方式で記載してみました。
きっと誰もが2020年1月時点での最新のROS環境を導入できるはずです。

[ラズパイ４にubuntu 20.04を導入してROS-noeticを使いたい場合については別途まとめました（クリック）](https://qiita.com/Ninagawa_Izumi/items/e84e9841f7a048832fcc)

## そもそもROSってなんだっけ
ロボットソフトウェアの共同開発を世界規模で推進することを目的としたオープンソースのプラットフォームです。センサやアクチュエータなどの情報やシミュレータなどを統合的に扱えます。

## 準備物・実施環境
- Raspbian-Busterが導入済みのRaspberry Pi 4
- debian_version 7.8
- debianのカーネル Linux raspberry 4.19.75
- USBキーボード、USBマウス、HDMIディスプレイ
- ターミナルについての最低限の知識

## 導入の方法
LXTerminalなどを開いて、コードを１行ずつコピペ入力してリターンキーを押す作業を繰り返します。
以下、コード部分（黒背景のテキスト）はすべてターミナルで打ち込むシェルスクリプトになります。
お手元のラズパイ4は起動できていますか？どんどん打ち込んでいきましょう！

## 環境確認とライブラリのアップデート
#### debianのバージョン確認方法

```sh:
cat /etc/debian_version 
```
結果例> 7.8
#### カーネルのバージョン確認方法

```sh:
uname -a
```

結果例> Linux raspberry 4.19.75-v71+ ほにゃらら

#### パッケージリストのアップデートとパッケージのアップグレード
```sh:
sudo apt-get update
sudo apt-get upgrade
```
急ぎの方はこの項目は飛ばしてもよいかも。けっこう時間がかります。
```$ sudo apt-get update```はあとでまた実行しますし、
```$ sudo apt-get upgrade```も完了までかなり時間がかかります。

## ROS-melodicを導入する
参考URL）https://www.instructables.com/id/ROS-Melodic-on-Raspberry-Pi-4-RPLIDAR/
参考URL）http://wiki.ros.org/melodic/Installation/Debian

#### リポジトリを追加する
```sh:
sudo sh -c 'echo "deb  http://packages.ros.org/ros/ubuntu  $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
```
#### 必要なパッケージをインストールする
```sh:
sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential  cmake
sudo rosdep init
rosdep update
```
#### ros_catkin_ws のディレクトリを作成して移動する
```sh:
mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws
```
#### ROS Desktop のインストール
```sh:
rosinstall_generator desktop --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall
wstool init -j8 src melodic-desktop-wet.rosinstall
```

もし上記のインストールが途中で止まったら```$ wstool update -j4 -t src```で再開できる。

#### 依存関係の細かな修正
```sh:
mkdir -p ~/ros_catkin_ws/external_src
cd ~/ros_catkin_ws/external_src
wget http://sourceforge.net/projects/assimp/files/assimp-3.1/assimp-3.1.1_no_test_models.zip/download -O assimp-3.1.1_no_test_models.zip
unzip assimp-3.1.1_no_test_models.zip
cd assimp-3.1.1
cmake .
make
sudo make install
```

#### OGRE for rvizのインストール
```sh:
sudo apt-get install  libogre-1.9-dev
```

#### 注
参考のURLで説明されている手順では、ここでファイルの修正（boost::posix_time::milliseconds関連）が指示されていますが、すでにパッケージの方で修正済みのようなので2020年1月現在は必要ありません。

#### rosdepの実施（ここは時間がかかります）
```sh:
cd ~/ros_catkin_ws #20200226追記
rosdep install --from-paths src --ignore-src --rosdistro melodic -y
```
#### ビルドとインストール（ここはもっと時間がかかります。1時間ぐらい？）
```sh:
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic -j2
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
```
#### 一旦再起動。
```sh:
sudo reboot
```
これでROS-melodicの導入が完了です。再起動できたらいよいよ動作確認です。

# roscoreの起動
```sh:
roscore
```
![roscore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/48b8aa73-14a2-1763-37aa-7256d6df405c.png)
お疲れ様でした！
こんな感じの表示が出たらROSCOREは動いています。おめでとうございます。

## ついでにturtlesimも動作テスト

roscore用に開いたターミナルとは別の新しいターミナルを開いて下記を実行します。

```sh:
rosrun turtlesim turtlesim_node
```
すると、小さな亀がいるウィンドウがでてくるはずです。
![turtlesim2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/37c145f6-603f-b03c-e9ff-fded9e3d54ae.png)


もう一つ別のターミナルを開いて、下記を実行します。

```sh:
rosrun turtlesim turtle_teleop_key
```
このターミナルをアクティブにしてカーソルキーを押すと、先ほどのウィンドウの亀を操作できます。

## さらにrqt_graphも動作テスト

```sh:
rosrun rqt_graph rqt_graph
```
![SS 193.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/3b9fe414-86c8-f565-2450-7ecd26bebc2e.png)
NODEとTOPICの流れの関係が可視化されます。

## rvizだって使えます

```sh:
rviz
```
![SS 194.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/0a2b6889-54ef-cba9-7b46-e14f0e25bb5b.png)
秒速起動にラズパイ4のパワーを感じます。


## おわりに
いかがでしたか？　無事にROS-melodic は導入できましたでしょうか？
私はこの手順で２度ほど導入を実施してうまくいっていますが、もしうまくいかない箇所があったらコメント欄にてご共有いただければと思います。
この状態ではまだ使いづらいところもあるので、手元の環境では開発に便利なようにいろいろな設定を行なっています。
またSDのバックアップの方法についてのコツも見つけましたので、別のエントリにてご紹介できればと思います。

[Qiita] [ラズパイ用のSDカードのバックアップとSDカード選び（Mac）](https://qiita.com/Ninagawa_Izumi/items/270776afeaadeb9ae82c "Qiita")

## 情報のアップデート
ラズパイ４にubuntu 20.04を導入してROS-noeticを使いたい場合について、下記の記事にまとめました。

https://qiita.com/Ninagawa_Izumi/items/e84e9841f7a048832fcc