Raspberry Pi 4 を使ったROS入門　第1回　環境構築①　Ubuntu20.04とROSのインストール

# はじめに
この記事は研究室の学生の教育用に作成してゆきます．
現在はROS2がメジャーとなってきておりますが，まずは自習が出来るよう文献が豊富なROS1でROSの扱いに慣れてみます．
ROSは既に多くの文献があり，それだけでも自習可能ですが解説されているバージョンや環境が違い，初心者には躓きやすい内容だと思ったため，改めてまとめてみます．

次回はこちら
[Raspberry Pi 4 を使ったROS入門　第1.5回　環境構築②　VNCとVSCodeの導入](https://qiita.com/H-Ando-robo/items/bf0b0410a5f9da07514c)

# 動作環境
Raspberry Piを使用します．(用意できるならUbuntu入りのPCが◎)
ROSはUbuntu上で動くソフトなのですが，設定の違いによってトラブルが起きやすいので，クリーンインストールしてから始めることをお勧めします．
ROSのバージョンはUbuntuのバージョンとリンクしてます．

本記事で使用する機器とバージョン
| 使用機器 | Ubuntuバージョン | ROSバージョン |
|:------------:|:------------:|:------------:|
|Raspberry Pi 4 Model B / 8GB|20.04|Noetic Ninjemys|

※RAMが2GB，4GBだとビルドが途中で落ちることが多々ありました．
出来れば8GBが良いかもしれません．

# 準備する物

1. Raspberry Pi 4 Model B
1. USBキーボード
1. Micro SDカード 32GB以上
1. ディスプレイ
1. Micro HDMI to　HDMI変換ケーブル
1. USB TypeC 電源ケーブル 5V 3A

一式そろえるのがめんどくさいという方は[セット](https://www.amazon.co.jp/dp/B07ZRF5BC1?ref_=cm_sw_r_cp_ud_dp_KS34CGF51J9D12Y714Q2 "Vemico Raspberry Pi 4 Model B")も売ってます

https://www.amazon.co.jp/dp/B07ZRF5BC1?ref_=cm_sw_r_cp_ud_dp_KS34CGF51J9D12Y714Q2

# Ubuntu 20.04のインストール
#### 1. ラズパイとは別のPCを用意(MicroSDカードにOSを書き込みます)


#### 2. ラズパイのOS書き込みソフトをダウンロード
[Raspberry Pi Imager for Windows](https://downloads.raspberrypi.org/imager/imager_latest.exe "")

#### 3. 画面に従いインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/7f4d9ded-daeb-ce60-be72-a85e51f5b78f.png)

#### 4. SDカードをPCにセットしイメージ書き込み
##### 4.1　OSを選ぶをクリック
Other general-purpose OS -> Ubuntu -> Ubuntu 20.04.03 64bit server OS
の順でクリックし，Ubuntu 20.04.4 64bit server OSを選択します．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/681797d5-0ac7-8205-7a4a-6f55a7697b28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/d9f36c5c-873a-9efb-3505-ea9f85352f14.png)
##### 4.2 ストレージを選ぶをクリックし，差し込んだSDカードを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/cf41ed6e-5113-bd5f-6037-075afa33c28f.png)
##### 4.3 書き込むをクリック

#### 5. Raspberry Piに作成したSDを挿入して電源を入れて起動．
有線LANにつないでおく．(ここからはラズパイでの操作)
##### 5.1　起動したらIDとパスワードを入力する初期設定は以下の通り

```
ubuntu login: ubuntu
password: ubuntu
```
##### 5.2 パスワードの変更を求められるので任意のパスワードを入力

```
Current password: ubuntuと入力
New password: 新しいパスワードを入力
Retype new password: 再度新しいパスワードを入力
```

##### 5.3 Ubuntu-Desktopをインストール
ROSを動かすだけならserver版でも良いですが，
Linuxに慣れてない方向けにデスクトップ版を入れておきます．
途中Do you want to continue？[Y/n]と聞かれたらエンターを押します．
rebootで再起動．
```
$ sudo apt update
$ sudo apt install ubuntu-desktop
$ reboot
```
いけました．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/b3a0d617-3e84-3117-f208-200a1e5e2be8.png)

※参考：Ubuntu公式サイト

https://ubuntu.com/download/raspberry-pi

# ROSのセットアップ
#### 1. ディスプレイの自動OFFを解除
ROSのインストールはかなり時間がかかり、画面が消えると進捗がわからなくなるのでディスプレイの自動オフを解除しておきます。
右上の電源ボタンをクリック→「Settings」→「Privacy」→「Screen lock」→「Blank Screen Delay」をNeverに変更
#### 2. ターミナルの起動
[Ctrl]+[Alt]+[T]を押すとターミナルが起動します．
ROSでは良く使用するので覚えておきましょう．

#### 3. コマンドを実行しROSをインストール
ターミナルへは[Ctrl]+[Shift]+[V]で貼り付けできます．
##### 3.1 sources.listを設定
```
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
```
##### 3.2 鍵の設定
```
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
```
##### 3.3 Ubuntu をアップデート
```
sudo apt update
```
##### 3.4 インストール
```
sudo apt install ros-noetic-desktop-full
```
##### 3.5 環境設定
```
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
##### 3.6 rosinstallの準備
```
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
```
##### 3.7 rosdepの初期化
```
sudo rosdep init
rosdep update
```
##### 3.8 ROSのワークスペースを作成、ビルド
```
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
```
##### 3.9 ワークスペースのオーバーレイ
```
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
下記コマンドで
/home/<username>/catkin_ws/src:/opt/ros/noetic/share
と表示されればOK
```
echo $ROS_PACKAGE_PATH
```
##### 3.10 インストールの確認
```
roscore
```
下記のようにエラーが出ず表示できればOK
```
<username>@ubuntu:~$ roscore
... logging to /home/<username>/.ros/log/3da110c6-4d4c-11eb-b763-f9ecf65ee99d/roslaunch-ubuntu-20827.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

invalid ROS_IP (must be a valid IPv4 or IPv6 address)
invalid ROS_IP (must be a valid IPv4 or IPv6 address)
invalid ROS_IP (must be a valid IPv4 or IPv6 address)
started roslaunch server http://master:33043/
ros_comm version 1.15.9


SUMMARY
========

PARAMETERS
 * /rosdistro: noetic
 * /rosversion: 1.15.9

NODES

auto-starting new master
process[master]: started with pid [20835]
invalid ROS_IP (must be a valid IPv4 or IPv6 address)
invalid ROS_IP (must be a valid IPv4 or IPv6 address)
ROS_MASTER_URI=http://master:11311/

setting /run_id to 3da110c6-4d4c-11eb-b763-f9ecf65ee99d
process[rosout-1]: started with pid [20845]
started core service [/rosout]
```



参考　ROS公式 Noeticインストール手順

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

# 自習用おすすめサイト
#### ROS Wiki
ROSのドキュメントが集約されています．
ほとんどは英語ですが，一部日本語に翻訳されています．

http://wiki.ros.org/ja

#### 日本語コミュニティ

https://rosjp.connpass.com/

#### 質問用サイト

http://wiki.ros.org/answers.ros.org


# バックアップ
環境をリセットする際に毎度ROSのインストールをしていては面倒ですので，
RaspberryPiのSDカードを丸ごとバックアップしておくと便利です．
以下参考に．

https://raspi.taneyats.com/entry/backup-sdcard

# 更新履歴
2022年6月7日　公開